Example #1
0
/* getArgFromString: get argument from string using separators */
static int getArgFromString(const char *str, int *index, char *buff, char separator)
{
   int i, j = 0, len;
   const char *c;
   unsigned char size;

   if (str == NULL) {
      buff[0] = '\0';
      return 0;
   }

   len = MMDAgent_strlen(str);
   if (len <= 0) {
      buff[0] = '\0';
      return 0;
   }

   c = str + (*index);
   for (i = 0; i < len && (*c == '\0' || *c == ' ' || *c == '\t' || *c == '\n' || *c == '\r'); i += size) {
      if (*c == '\0') {
         buff[0] = '\0';
         return 0;
      }
      size = MMDAgent_getcharsize(c);
      (*index) += size;
      c += size;
   }

   for (i = 0; i < len && *c != '\0' && *c != ' ' && *c != '\t' && *c != '\n' && *c != '\r' && *c != separator; i += size) {
      size = MMDAgent_getcharsize(c);
      memcpy(&buff[j], c, sizeof(char) * size);
      j += size;
      (*index) += size;
      c += size;
   }
   if (*c == separator)
      (*index)++;

   buff[j] = '\0';
   return j;
}
Example #2
0
/* countArgs: count arguments */
static int countArgs(const char *str, char separator)
{
   int i, len, num;
   const char *c;
   unsigned char size;

   len = MMDAgent_strlen(str);
   if(len <= 0)
      return 0;

   num = 1;
   c = str;
   for(i = 0; i < len; i += size) {
      size = MMDAgent_getcharsize(c);
      if(*c == separator)
         num++;
      c += size;
   }

   return num;
}
Example #3
0
/* MMDAgent_strtok: strtok */
char *MMDAgent_strtok(char *str, const char *pat, char **save)
{
    char *s = NULL, *e = NULL, *p;
    const char *q;
    char mbc1[MMDAGENTUTILS_MAXCHARBYTE];
    char mbc2[MMDAGENTUTILS_MAXCHARBYTE];
    int find;
    int step = 0;
    unsigned char i, size;

    if(str != NULL)
        p = str;
    else if(save != NULL)
        p = *save;
    else
        return NULL;
    while(*p != '\0') {
        if(step == 0)
            s = p;
        if(step == 1)
            e = p;
        size = MMDAgent_getcharsize(p);
        for(i = 0; i < size; i++) {
            mbc1[i] = *p;
            if(*p == '\0') {
                i = 0;
                break;
            }
            p++;
        }
        mbc1[i] = '\0';
        /* search */
        find = 0;
        q = pat;
        while(*q != '\0') {
            size = MMDAgent_getcharsize(q);
            for(i = 0; i < size; i++) {
                mbc2[i] = *q;
                if(*q == '\0') {
                    i = 0;
                    break;
                }
                q++;
            }
            mbc2[i] = '\0';
            if(strcmp(mbc1, mbc2) == 0) {
                find = 1;
                break;
            }
        }
        /* check */
        if(step == 0) {
            if(find == 0)
                step = 1;
        } else {
            if(find == 1) {
                *e = '\0';
                *save = p;
                return s;
            }
        }
    }

    if(step == 1) {
        *save = p;
        return s;
    }

    *save = p;
    return NULL;
}