Diff for /libelwix/src/json.c between versions 1.1.2.8 and 1.1.2.9

version 1.1.2.8, 2017/11/28 14:57:45 version 1.1.2.9, 2017/11/29 00:49:47
Line 568  json_token2array(const char *jstr, jtok_t * __restrict Line 568  json_token2array(const char *jstr, jtok_t * __restrict
   
         return arr;          return arr;
 }  }
   
   
   /*
    * json_add_begin_object() - Adds begin of object {
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * return: -1 error or !=-1 actual JSON string length
    */
   int
   json_add_begin_object(char * __restrict jstr, int jlen, int wspace)
   {
           int len;
   
           if (!jstr)
                   return -1;
   
           if (wspace)
                   len = strlcat(jstr, "{ ", jlen);
           else
                   len = strlcat(jstr, "{", jlen);
   
           if (len >= jlen) {
                   elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   return -1;
           }
   
           return len;
   }
   
   /*
    * json_add_end_object() - Adds end of object }
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * return: -1 error or !=-1 actual JSON string length
    */
   int
   json_add_end_object(char * __restrict jstr, int jlen, int wspace)
   {
           int len;
   
           if (!jstr)
                   return -1;
   
           if (wspace)
                   len = strlcat(jstr, " }", jlen);
           else
                   len = strlcat(jstr, "}", jlen);
   
           if (len >= jlen) {
                   elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   return -1;
           }
   
           return len;
   }
   
   /*
    * json_add_begin_array() - Adds begin of array [
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * return: -1 error or !=-1 actual JSON string length
    */
   int
   json_add_begin_array(char * __restrict jstr, int jlen, int wspace)
   {
           int len;
   
           if (!jstr)
                   return -1;
   
           if (wspace)
                   len = strlcat(jstr, "[ ", jlen);
           else
                   len = strlcat(jstr, "[", jlen);
   
           if (len >= jlen) {
                   elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   return -1;
           }
   
           return len;
   }
   
   /*
    * json_add_end_array() - Adds end of array ]
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * return: -1 error or !=-1 actual JSON string length
    */
   int
   json_add_end_array(char * __restrict jstr, int jlen, int wspace)
   {
           int len;
   
           if (!jstr)
                   return -1;
   
           if (wspace)
                   len = strlcat(jstr, " ]", jlen);
           else
                   len = strlcat(jstr, "]", jlen);
   
           if (len >= jlen) {
                   elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   return -1;
           }
   
           return len;
   }
   
   /*
    * json_add_char() - Adds character
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @ch = Character
    * return: -1 error or !=-1 actual JSON string length
    */
   int
   json_add_char(char * __restrict jstr, int jlen, u_char ch)
   {
           int len;
   
           if (!jstr)
                   return -1;
   
           len = strlen(jstr);
           if (len >= jlen) {
                   elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   return -1;
           } else {
                   jstr[len++] = (char) ch;
                   jstr[len] = 0;
           }
   
           return len;
   }
   
   /*
    * json_add_colon() - Adds key/value pair delimiter colon :
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * return: -1 error or !=-1 actual JSON string length
    */
   int
   json_add_colon(char * __restrict jstr, int jlen, int wspace)
   {
           int len;
   
           if (!jstr)
                   return -1;
   
           if (wspace)
                   len = strlcat(jstr, ": ", jlen);
           else
                   len = strlcat(jstr, ":", jlen);
   
           if (len >= jlen) {
                   elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   return -1;
           }
   
           return len;
   }
   
   /*
    * json_add_comma() - Adds value delimiter comma ,
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * return: -1 error or !=-1 actual JSON string length
    */
   int
   json_add_comma(char * __restrict jstr, int jlen, int wspace)
   {
           int len;
   
           if (!jstr)
                   return -1;
   
           if (wspace)
                   len = strlcat(jstr, ", ", jlen);
           else
                   len = strlcat(jstr, ",", jlen);
   
           if (len >= jlen) {
                   elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   return -1;
           }
   
           return len;
   }
   
   /*
    * json_add_string() - Adds string
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @unquot = Unquoted string
    * @str = String, it can't be NULL
    * return: -1 error or !=-1 actual JSON string length
    */
   int
   json_add_string(char * __restrict jstr, int jlen, int unquot, const char *str)
   {
           int len;
   
           if (!jstr || !str)
                   return -1;
   
           if (!unquot)
                   len = strlcat(jstr, "\"", jlen);
           len = strlcat(jstr, str, jlen);
           if (!unquot)
                   len = strlcat(jstr, "\"", jlen);
   
           if (len >= jlen) {
                   elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   return -1;
           }
   
           return len;
   }
   
   /*
    * json_add_value() - Adds value
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @unquot = Unquoted number
    * @num = Number
    * return: -1 error or !=-1 actual JSON string length
    */
   int
   json_add_value(char * __restrict jstr, int jlen, int unquot, long num)
   {
           int len;
           char wrk[STRSIZ] = { [0 ... STRSIZ - 1] = 0 };
   
           if (!jstr)
                   return -1;
   
           if (!unquot)
                   len = strlcat(jstr, "\"", jlen);
           snprintf(wrk, sizeof wrk, "%ld", num);
           len = strlcat(jstr, wrk, jlen);
           if (!unquot)
                   len = strlcat(jstr, "\"", jlen);
   
           if (len >= jlen) {
                   elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   return -1;
           }
   
           return len;
   }
   
   /*
    * json_add_pair() - Adds key/value pair
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * @key = Key string
    * @val = Value string
    * return: -1 error or !=-1 actual JSON string length
    */
   int
   json_add_pair(char * __restrict jstr, int jlen, int wspace, const char *key, const char *val)
   {
           int len = -1;
   
           if (!jstr || !key || !val)
                   return -1;
   
           if (json_add_string(jstr, jlen, 0, key) == -1)
                   return -1;
           if (json_add_colon(jstr, jlen, wspace) == -1)
                   return -1;
           if ((len = json_add_string(jstr, jlen, 0, key)) == -1)
                   return -1;
   
           return len;
   }
   
   /*
    * json_add_array() - Adds array
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * @arr = Array with variables
    * return: -1 error or !=-1 actual JSON string length
    */
   int
   json_add_array(char * __restrict jstr, int jlen, int wspace, array_t * __restrict arr)
   {
           int len = -1;
           register int i;
           ait_val_t *v;
   
           if (!jstr || !arr)
                   return -1;
   
           if (json_add_begin_array(jstr, jlen, wspace) == -1)
                   return -1;
           for (i = 0; i < array_Size(arr); i++) {
                   v = array(arr, i, ait_val_t*);
                   if (v) {
                           if (AIT_TYPE(v) == string) {
                                   if (json_add_string(jstr, jlen, 0, AIT_GET_STR(v)) == -1)
                                           return -1;
                           } else {
                                   if (json_add_value(jstr, jlen, 0, AIT_GET_LIKE(v, long)) == -1)
                                           return -1;
                           }
                           if (i < array_Size(arr) - 1 && json_add_comma(jstr, jlen, wspace) == -1)
                                   return -1;
                   }
           }
           if ((len = json_add_end_array(jstr, jlen, wspace)) == -1)
                   return -1;
   
           return len;
   }

Removed from v.1.1.2.8  
changed lines
  Added in v.1.1.2.9


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