Diff for /libelwix/src/json.c between versions 1.1.2.5 and 1.1.2.6

version 1.1.2.5, 2017/11/28 02:00:45 version 1.1.2.6, 2017/11/28 11:14:00
Line 116  json_gettoken(json_t * __restrict json, jtok_t * __res Line 116  json_gettoken(json_t * __restrict json, jtok_t * __res
                 elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);                  elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                 return NULL;                  return NULL;
         } else          } else
                tok = &jtoks[json->h_next++];                tok = &jtoks[json->h_next];
         tok->tok_idx = json->h_next++;
         tok->tok_start = tok->tok_end = tok->tok_parent = -1;          tok->tok_start = tok->tok_end = tok->tok_parent = -1;
         tok->tok_size = 0;          tok->tok_size = 0;
   
Line 276  json_parse(json_t * __restrict json, const char *jstr, Line 277  json_parse(json_t * __restrict json, const char *jstr,
                 switch ((ch = jstr[json->h_pos])) {                  switch ((ch = jstr[json->h_pos])) {
                         case '{':                          case '{':
                         case '[':                          case '[':
                                cx++;   /* start new token */                                cx++;   /* start new object/array token */
                                 if (!jtoks)                                  if (!jtoks)
                                         break;                                          break;
   
Line 328  json_parse(json_t * __restrict json, const char *jstr, Line 329  json_parse(json_t * __restrict json, const char *jstr,
                                         elwix_SetErr(J_ERR_INVAL, "%s", jerrstr[J_ERR_INVAL]);                                          elwix_SetErr(J_ERR_INVAL, "%s", jerrstr[J_ERR_INVAL]);
                                         return (u_int) -1;                                          return (u_int) -1;
                                 }                                  }
                                cx++;                                cx++;   /* start new string token */
                                 if (jtoks && json->h_parent != -1)                                  if (jtoks && json->h_parent != -1)
                                         jtoks[json->h_parent].tok_size++;                                          jtoks[json->h_parent].tok_size++;
                                 break;                                  break;
Line 374  json_parse(json_t * __restrict json, const char *jstr, Line 375  json_parse(json_t * __restrict json, const char *jstr,
   
                                         if (json_parse_value(json, jstr, jlen, jtoks, toksnum) == -1)                                          if (json_parse_value(json, jstr, jlen, jtoks, toksnum) == -1)
                                                 return (u_int) -1;                                                  return (u_int) -1;
                                        cx++;                                        cx++;   /* start new value token */
                                         if (jtoks && json->h_parent != -1)                                          if (jtoks && json->h_parent != -1)
                                                 jtoks[json->h_parent].tok_size++;                                                  jtoks[json->h_parent].tok_size++;
                                         break;                                          break;
Line 387  json_parse(json_t * __restrict json, const char *jstr, Line 388  json_parse(json_t * __restrict json, const char *jstr,
   
                                 if (json_parse_value(json, jstr, jlen, jtoks, toksnum) == -1)                                  if (json_parse_value(json, jstr, jlen, jtoks, toksnum) == -1)
                                         return (u_int) -1;                                          return (u_int) -1;
                                cx++;                                cx++;   /* start new value token */
                                 if (jtoks && json->h_parent != -1)                                  if (jtoks && json->h_parent != -1)
                                         jtoks[json->h_parent].tok_size++;                                          jtoks[json->h_parent].tok_size++;
                                 break;                                  break;
Line 402  json_parse(json_t * __restrict json, const char *jstr, Line 403  json_parse(json_t * __restrict json, const char *jstr,
                                 return (u_int) -1;                                  return (u_int) -1;
                         }                          }
                 }                  }
        }        } else
                 cx++;   /* increment needed tokens number for termination empty token */
   
         return cx;          return cx;
 }  }
Line 516  json_findbykey(const char *jstr, const char *key, jtok Line 518  json_findbykey(const char *jstr, const char *key, jtok
 }  }
   
 /*  /*
 * json_token2array() - Convert token to array * json_token2array() - Convert token to string array
  *   *
  * @jstr = JSON string   * @jstr = JSON string
  * @tok = Token for convert   * @tok = Token for convert
 * return: =NULL error or !=NULL allocated array with variables,  * return: =NULL error or !=NULL allocated array with string variables, 
  *              after use should be ait_freeVars()   *              after use should be ait_freeVars()
  */   */
 array_t *  array_t *
Line 545  json_token2array(const char *jstr, jtok_t * __restrict Line 547  json_token2array(const char *jstr, jtok_t * __restrict
   
         if (tok->tok_type == J_STRING || tok->tok_type == J_VALUE) {          if (tok->tok_type == J_STRING || tok->tok_type == J_VALUE) {
                 v = ait_getVars(&arr, 0);                  v = ait_getVars(&arr, 0);
                AIT_SET_STRSIZ(v, json_toklen(tok));                AIT_SET_STRSIZ(v, json_toklen(tok) + 1);
                 json_tokstrcpy(AIT_GET_STR(v), jstr, tok);                  json_tokstrcpy(AIT_GET_STR(v), jstr, tok);
         } else if (tok->tok_type == J_ARRAY) {          } else if (tok->tok_type == J_ARRAY) {
                 for (i = 0; i < tok->tok_size; i++) {                  for (i = 0; i < tok->tok_size; i++) {
                         t = &tok[i + 1];                          t = &tok[i + 1];
                         v = ait_getVars(&arr, i);                          v = ait_getVars(&arr, i);
                        AIT_SET_STRSIZ(v, json_toklen(t));                        AIT_SET_STRSIZ(v, json_toklen(t) + 1);
                         json_tokstrcpy(AIT_GET_STR(v), jstr, t);                          json_tokstrcpy(AIT_GET_STR(v), jstr, t);
                 }                  }
           } else if (tok->tok_type == J_OBJECT) {
                   for (i = 0; tok->tok_idx <= tok[i + 1].tok_parent; i++) {
                           t = &tok[i + 1];
                           v = ait_getVars(&arr, i);
                           AIT_SET_STRSIZ(v, json_toklen(t) + 1);
                           json_tokstrcpy(AIT_GET_STR(v), jstr, t);
                   }
         } else {          } else {
                /* todo for object */                elwix_SetErr(J_ERR_PARAM, "%s", jerrstr[J_ERR_PARAM]);
                 return NULL;
         }          }
   
         return arr;          return arr;

Removed from v.1.1.2.5  
changed lines
  Added in v.1.1.2.6


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