Diff for /libaitio/src/Attic/url.c between versions 1.1.2.4 and 1.2

version 1.1.2.4, 2010/03/04 09:54:23 version 1.2, 2010/03/09 09:26:27
Line 161  inline int io_SizeArray(const char *csArgs, const char Line 161  inline int io_SizeArray(const char *csArgs, const char
  * @csArgs = Input argument line   * @csArgs = Input argument line
  * @csDelim = Delimiter for separate   * @csDelim = Delimiter for separate
  * @psAttr = Output Attribute   * @psAttr = Output Attribute
    * @attrLen = Size of attribute array
  * @psValue = Output Value, if ==NULL this element not present value or not wanted for return   * @psValue = Output Value, if ==NULL this element not present value or not wanted for return
    * @valLen = Size of value array
  * return: 0 error format; -1 error:: can`t read; >0 ok, number of readed items   * return: 0 error format; -1 error:: can`t read; >0 ok, number of readed items
 */  */
 inline int io_MakeAV(const char * __restrict csArgs, const char *csDelim,   inline int io_MakeAV(const char * __restrict csArgs, const char *csDelim, 
                 char * __restrict psAttr, int attrLen, char * __restrict psValue, int valLen)                  char * __restrict psAttr, int attrLen, char * __restrict psValue, int valLen)
 {  {
         register int ret = 0;          register int ret = 0;
        char *pos;        char *pos, *psBuf;
   
         if (!csArgs || !csDelim || !psAttr || !attrLen)          if (!csArgs || !csDelim || !psAttr || !attrLen)
                 return -1;                  return -1;
Line 176  inline int io_MakeAV(const char * __restrict csArgs, c Line 178  inline int io_MakeAV(const char * __restrict csArgs, c
                 return -1;                  return -1;
         else          else
                 memset(psValue, 0, valLen);                  memset(psValue, 0, valLen);
           psBuf = strdup(csArgs);
           if (!psBuf) {
                   LOGERR;
                   return -1;
           }
   
        pos = strpbrk(csArgs, csDelim);        pos = strpbrk(psBuf, csDelim);
         if (pos)          if (pos)
                 *pos++ = 0;                  *pos++ = 0;
         ret++;          ret++;
        strlcpy(psAttr, csArgs, attrLen);        strlcpy(psAttr, psBuf, attrLen);
   
         if (pos && *pos) {          if (pos && *pos) {
                 ret++;                  ret++;
Line 189  inline int io_MakeAV(const char * __restrict csArgs, c Line 196  inline int io_MakeAV(const char * __restrict csArgs, c
                         strlcpy(psValue, pos, valLen);                          strlcpy(psValue, pos, valLen);
         }          }
   
           free(psBuf);
         return ret;          return ret;
 }  }
   
 /*  /*
    * io_Path2File() Parse and make path/filename pair
    * @csArgs = Input argument line
    * @psPath = Output Path, if ==NULL path not returned
    * @pathLen = Size of path array
    * @psFile = Output File
    * @fileLen = Size of file array
    * return: 0 error format; -1 error:: can`t read; >0 ok, number of readed items
   */
   inline int io_Path2File(const char * __restrict csArgs, char * __restrict psPath, int pathLen, 
                   char * __restrict psFile, int fileLen)
   {
           char *pos, *psBuf;
   
           if (!csArgs || !psFile || !fileLen)
                   return -1;
           if (psPath && !pathLen)
                   return -1;
           else
                   memset(psPath, 0, pathLen);
           psBuf = strdup(csArgs);
           if (!psBuf) {
                   LOGERR;
                   return -1;
           }
   
           pos = strrchr(psBuf, '/');
           if (!pos) {
                   strlcpy(psFile, psBuf, fileLen);
   
                   free(psBuf);
                   return 1;
           } else
                   *pos++ = 0;
   
           strlcpy(psFile, pos, fileLen);
           if (psPath)
                   strlcpy(psPath, psBuf, pathLen);
   
           free(psBuf);
           return 2;
   }
   
   /*
  * ioURLGetValue() Get value from parsed URL   * ioURLGetValue() Get value from parsed URL
  * @url = Input parsed URL   * @url = Input parsed URL
  * @csAttr = Attribute for search   * @csAttr = Attribute for search
Line 204  int ioURLGetValue(struct tagIOURL *url, const char *cs Line 255  int ioURLGetValue(struct tagIOURL *url, const char *cs
 {  {
         register int i, ret = 0;          register int i, ret = 0;
         char szBuf[BUFSIZ], **items, szElem[2][BUFSIZ];          char szBuf[BUFSIZ], **items, szElem[2][BUFSIZ];
           int len;
   
         if (!url || !csAttr)          if (!url || !csAttr)
                 return -1;                  return -1;
   
         strlcpy(szBuf, url->url_args.value, BUFSIZ);          strlcpy(szBuf, url->url_args.value, BUFSIZ);
        if (io_MakeArray(szBuf, "&", &items, io_SizeArray(szBuf, "&")) < 1)        if (io_MakeArray(szBuf, "&", &items, (len = io_SizeArray(szBuf, "&"))) < 1)
                 return ret;                  return ret;
   
        for (i = 0; items[i]; i++) {        for (i = 0; i < len && items[i]; i++) {
                 if (io_MakeAV(items[i], "=", szElem[0], BUFSIZ, szElem[1], BUFSIZ) < 1)                  if (io_MakeAV(items[i], "=", szElem[0], BUFSIZ, szElem[1], BUFSIZ) < 1)
                         continue;                          continue;
   
Line 226  int ioURLGetValue(struct tagIOURL *url, const char *cs Line 278  int ioURLGetValue(struct tagIOURL *url, const char *cs
   
         free(items);          free(items);
         return ret;          return ret;
   }
   
   /*
    * ioURLGetFile() Get file from parsed URL
    * @url = Input parsed URL
    * @psValue = Return filename, if not specified file in url path, replace with /
    * @valLen = Size of psValue array
    * return: -1 error:: can`t read; 0 ok
   */
   int ioURLGetFile(struct tagIOURL *url, char * __restrict psValue, int valLen)
   {
           if (!url || !psValue || !valLen)
                   return -1;
   
           if (io_Path2File(url->url_path.value, NULL, 0, psValue, valLen) < 1)
                   return -1;
   
           // If not specified file in path, default replace to /
           if (!*psValue)
                   strlcpy(psValue, "/", valLen);
           return 0;
 }  }

Removed from v.1.1.2.4  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>