Diff for /libaitio/src/Attic/url.c between versions 1.5 and 1.5.4.1

version 1.5, 2011/03/16 16:44:52 version 1.5.4.1, 2011/04/19 21:07:32
Line 116  ioURLGet(const char *csURL, struct tagIOURL *url) Line 116  ioURLGet(const char *csURL, struct tagIOURL *url)
 }  }
   
 /*  /*
  * io_MakeArray() Parse and make array of arguments values ...   
  *      (input string will be modified! and output array must be free)  
  * @psArgs = Input arguments line, after execute string is modified!!!  
  * @csDelim = Delimiter(s) for separate  
  * @args = Output array of arguments ... (must be free() after procced function!)  
  * @nargs = Maximum requested count of arguments from input string psArgs  
  * return: 0 error format; -1 error:: can`t read; >0 ok, number of readed items  
 */  
 inline int  
 io_MakeArray(char * __restrict psArgs, const char *csDelim, char *** __restrict args, int nargs)  
 {  
         char **app;  
         register int i;  
   
         if (!psArgs || !csDelim || !args || !nargs)  
                 return -1;  
         if (!(*args = malloc(sizeof(char*) * nargs))) {  
                 LOGERR;  
                 return -1;  
         } else  
                 memset(*args, 0, sizeof(char*) * nargs);  
   
         for (i = 0, app = *args; app < *args + nargs && (*app = strsep((char **) &psArgs, csDelim));   
                                 **app ? i++ : i, **app ? app++ : app);  
         return i;  
 }  
 /*  
  * io_SizeArray() Parse and calculate size of array  
  * @csArgs = Input arguments line  
  * @csDelim = Delimiter(s) for separate  
  * return: 0 error format; -1 error:: can`t read; >0 ok, number of items  
 */  
 inline int  
 io_SizeArray(const char *csArgs, const char *csDelim)  
 {  
         register int res;  
         char *pos;  
   
         if (!csArgs || !csDelim)  
                 return -1;  
   
         for (res = 1, pos = (char*) csArgs; (pos = strpbrk(pos, csDelim)); res++, pos++);  
         return res;  
 }  
 /*  
  * io_MakeAV() Parse and make attribute/value pair  
  * @csArgs = Input argument line  
  * @csDelim = Delimiter for separate  
  * @psAttr = Output Attribute  
  * @attrLen = Size of attribute array  
  * @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  
 */  
 inline int  
 io_MakeAV(const char * __restrict csArgs, const char *csDelim,   
                 char * __restrict psAttr, int attrLen, char * __restrict psValue, int valLen)  
 {  
         register int ret = 0;  
         char *pos, *psBuf;  
   
         if (!csArgs || !csDelim || !psAttr || !attrLen)  
                 return -1;  
         if (psValue && !valLen)  
                 return -1;  
         else  
                 memset(psValue, 0, valLen);  
         psBuf = strdup(csArgs);  
         if (!psBuf) {  
                 LOGERR;  
                 return -1;  
         }  
   
         pos = strpbrk(psBuf, csDelim);  
         if (pos)  
                 *pos++ = 0;  
         ret++;  
         strlcpy(psAttr, psBuf, attrLen);  
   
         if (pos && *pos) {  
                 ret++;  
                 if (psValue)  
                         strlcpy(psValue, pos, valLen);  
         }  
   
         free(psBuf);  
         return ret;  
 }  
   
 /*  
  * io_Path2File() Parse and make path/filename pair   * io_Path2File() Parse and make path/filename pair
  * @csArgs = Input argument line   * @csArgs = Input argument line
  * @psPath = Output Path, if ==NULL path not returned   * @psPath = Output Path, if ==NULL path not returned
Line 261  int Line 171  int
 ioURLGetValue(struct tagIOURL *url, const char *csAttr, char * __restrict psValue, int valLen)  ioURLGetValue(struct tagIOURL *url, const char *csAttr, char * __restrict psValue, int valLen)
 {  {
         register int i, ret = 0;          register int i, ret = 0;
        char szBuf[BUFSIZ], **items, szElem[2][BUFSIZ];        char szBuf[BUFSIZ], szElem[2][BUFSIZ];
         int len;          int len;
           array_t *items;
   
         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, (len = io_SizeArray(szBuf, "&"))) < 1)        if ((len = io_arrayMake(szBuf, 0, "&", &items)) < 1)
                 return ret;                  return ret;
   
        for (i = 0; i < len && items[i]; i++) {        for (i = 0; i < len && items->arr_data[i]; i++) {
                if (io_MakeAV(items[i], "=", szElem[0], BUFSIZ, szElem[1], BUFSIZ) < 1)                if (io_MakeAV(items->arr_data[i], "=", szElem[0], BUFSIZ, szElem[1], BUFSIZ) < 1)
                         continue;                          continue;
   
                 if (!strcmp(szElem[0], csAttr)) {                  if (!strcmp(szElem[0], csAttr)) {
Line 283  ioURLGetValue(struct tagIOURL *url, const char *csAttr Line 194  ioURLGetValue(struct tagIOURL *url, const char *csAttr
                 }                  }
         }          }
   
        free(items);        io_arrayDestroy(&items);
         return ret;          return ret;
 }  }
   

Removed from v.1.5  
changed lines
  Added in v.1.5.4.1


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