Diff for /libelwix/src/json.c between versions 1.9.34.3 and 1.11

version 1.9.34.3, 2024/10/27 03:57:34 version 1.11, 2024/12/04 17:47:28
Line 589  json_findbykey(const char *jstr, const char *key, jtyp Line 589  json_findbykey(const char *jstr, const char *key, jtyp
 }  }
   
 /*  /*
    * json_findbykeyatscope() - Find token data by key at particular scope
    *
    * @scope = Search at object scope, =0 main object scope
    * @jstr = JSON string
    * @key = Search key
    * @type = Search key for particular token type, if is J_UNDEF this mean any type
    * @toks = Parsed tokens
    * @toksnum = Number of parsed tokens
    * return: =NULL error or !=NULL data token found 
    */
   jtok_t *
   json_findbykeyatscope(long scope, const char *jstr, const char *key, jtype_t type, jtok_t * __restrict toks, int toksnum)
   {
           jtok_t *tok = NULL;
           register int i;
           int klen;
   
           if (!jstr || !key || !toks)
                   return NULL;
           else
                   klen = strlen(key);
   
           for (i = 1; i < toksnum; i++) {
                   if (toks[i].tok_type == J_STRING && toks[i].tok_size == 1 && 
                                   toks[i].tok_parent == scope && 
                                   klen == toks[i].tok_end - toks[i].tok_start && 
                                   !strncmp(jstr + toks[i].tok_start, key, klen)) {
                           if (type != J_UNDEF) {
                                   if (toks[i + 1].tok_type == type) {
                                           tok = toks + i + 1;
                                           break;
                                   }
                           } else {
                                   tok = toks + i + 1;
                                   break;
                           }
                   }
           }
   
           return tok;
   }
   
   /*
  * json_findbypos() - Find token by position on JSON string   * json_findbypos() - Find token by position on JSON string
  *   *
  * @pos = Offset from begin of JSON string   * @pos = Offset from begin of JSON string
Line 1246  json_dump(FILE *f, const char *jstr, jtok_t *toks, int Line 1289  json_dump(FILE *f, const char *jstr, jtok_t *toks, int
         }          }
   
         return 0;          return 0;
   }
   
   /*
    * json_objscope() - Find object scope of key
    *
    * @key = Key of object, if it is =NULL, then return 0 (default scope)
    * @jstr = JSON string
    * @toks = JSON tokens
    * @toksnum = Number of tokens
    * return: -1 on error or >=0 scope of object
    */
   long
   json_objscope(const char *key, const char *jstr, jtok_t * __restrict toks, int toksnum)
   {
           long scope = 0;
           register int i;
           int klen;
   
           if (!key)
                   return 0;       /* default scope */
   
           if (!jstr || !toks)
                   return -1;
           else
                   klen = strlen(key);
   
           for (i = 1; i < toksnum; i++)
                   if (toks[i].tok_type == J_STRING && toks[i].tok_size == 1 && 
                                   klen == toks[i].tok_end - toks[i].tok_start && 
                                   !strncmp(jstr + toks[i].tok_start, key, klen))
                           if (toks[i + 1].tok_type == J_OBJECT) {
                                   scope = toks[i + 1].tok_idx;
                                   break;
                           }
   
           return scope;
 }  }

Removed from v.1.9.34.3  
changed lines
  Added in v.1.11


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