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

version 1.1.2.9, 2017/11/29 00:49:47 version 1.1.2.10, 2017/11/29 08:32:46
Line 570  json_token2array(const char *jstr, jtok_t * __restrict Line 570  json_token2array(const char *jstr, jtok_t * __restrict
 }  }
   
   
   
 /*  /*
  * json_add_begin_object() - Adds begin of object {   * json_add_begin_object() - Adds begin of object {
  *   *
Line 582  int Line 583  int
 json_add_begin_object(char * __restrict jstr, int jlen, int wspace)  json_add_begin_object(char * __restrict jstr, int jlen, int wspace)
 {  {
         int len;          int len;
           size_t eos;
   
         if (!jstr)          if (!jstr)
                 return -1;                  return -1;
           else
                   eos = strlen(jstr);
   
   
         if (wspace)          if (wspace)
                 len = strlcat(jstr, "{ ", jlen);                  len = strlcat(jstr, "{ ", jlen);
         else          else
Line 593  json_add_begin_object(char * __restrict jstr, int jlen Line 598  json_add_begin_object(char * __restrict jstr, int jlen
   
         if (len >= jlen) {          if (len >= jlen) {
                 elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);                  elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   jstr[eos] = 0;
                 return -1;                  return -1;
         }          }
   
Line 611  int Line 617  int
 json_add_end_object(char * __restrict jstr, int jlen, int wspace)  json_add_end_object(char * __restrict jstr, int jlen, int wspace)
 {  {
         int len;          int len;
           size_t eos;
   
         if (!jstr)          if (!jstr)
                 return -1;                  return -1;
           else
                   eos = strlen(jstr);
   
         if (wspace)          if (wspace)
                 len = strlcat(jstr, " }", jlen);                  len = strlcat(jstr, " }", jlen);
Line 622  json_add_end_object(char * __restrict jstr, int jlen,  Line 631  json_add_end_object(char * __restrict jstr, int jlen, 
   
         if (len >= jlen) {          if (len >= jlen) {
                 elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);                  elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   jstr[eos] = 0;
                 return -1;                  return -1;
         }          }
   
Line 640  int Line 650  int
 json_add_begin_array(char * __restrict jstr, int jlen, int wspace)  json_add_begin_array(char * __restrict jstr, int jlen, int wspace)
 {  {
         int len;          int len;
           size_t eos;
   
         if (!jstr)          if (!jstr)
                 return -1;                  return -1;
           else
                   eos = strlen(jstr);
   
         if (wspace)          if (wspace)
                 len = strlcat(jstr, "[ ", jlen);                  len = strlcat(jstr, "[ ", jlen);
Line 651  json_add_begin_array(char * __restrict jstr, int jlen, Line 664  json_add_begin_array(char * __restrict jstr, int jlen,
   
         if (len >= jlen) {          if (len >= jlen) {
                 elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);                  elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   jstr[eos] = 0;
                 return -1;                  return -1;
         }          }
   
Line 669  int Line 683  int
 json_add_end_array(char * __restrict jstr, int jlen, int wspace)  json_add_end_array(char * __restrict jstr, int jlen, int wspace)
 {  {
         int len;          int len;
           size_t eos;
   
         if (!jstr)          if (!jstr)
                 return -1;                  return -1;
           else
                   eos = strlen(jstr);
   
         if (wspace)          if (wspace)
                 len = strlcat(jstr, " ]", jlen);                  len = strlcat(jstr, " ]", jlen);
Line 680  json_add_end_array(char * __restrict jstr, int jlen, i Line 697  json_add_end_array(char * __restrict jstr, int jlen, i
   
         if (len >= jlen) {          if (len >= jlen) {
                 elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);                  elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   jstr[eos] = 0;
                 return -1;                  return -1;
         }          }
   
Line 702  json_add_char(char * __restrict jstr, int jlen, u_char Line 720  json_add_char(char * __restrict jstr, int jlen, u_char
         if (!jstr)          if (!jstr)
                 return -1;                  return -1;
   
        len = strlen(jstr);        len = strlen(jstr) + 1;
         if (len >= jlen) {          if (len >= jlen) {
                 elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);                  elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                 return -1;                  return -1;
Line 726  int Line 744  int
 json_add_colon(char * __restrict jstr, int jlen, int wspace)  json_add_colon(char * __restrict jstr, int jlen, int wspace)
 {  {
         int len;          int len;
           size_t eos;
   
         if (!jstr)          if (!jstr)
                 return -1;                  return -1;
           else
                   eos = strlen(jstr);
   
         if (wspace)          if (wspace)
                 len = strlcat(jstr, ": ", jlen);                  len = strlcat(jstr, ": ", jlen);
Line 737  json_add_colon(char * __restrict jstr, int jlen, int w Line 758  json_add_colon(char * __restrict jstr, int jlen, int w
   
         if (len >= jlen) {          if (len >= jlen) {
                 elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);                  elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   jstr[eos] = 0;
                 return -1;                  return -1;
         }          }
   
Line 755  int Line 777  int
 json_add_comma(char * __restrict jstr, int jlen, int wspace)  json_add_comma(char * __restrict jstr, int jlen, int wspace)
 {  {
         int len;          int len;
           size_t eos;
   
         if (!jstr)          if (!jstr)
                 return -1;                  return -1;
           else
                   eos = strlen(jstr);
   
         if (wspace)          if (wspace)
                 len = strlcat(jstr, ", ", jlen);                  len = strlcat(jstr, ", ", jlen);
Line 766  json_add_comma(char * __restrict jstr, int jlen, int w Line 791  json_add_comma(char * __restrict jstr, int jlen, int w
   
         if (len >= jlen) {          if (len >= jlen) {
                 elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);                  elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   jstr[eos] = 0;
                 return -1;                  return -1;
         }          }
   
Line 785  int Line 811  int
 json_add_string(char * __restrict jstr, int jlen, int unquot, const char *str)  json_add_string(char * __restrict jstr, int jlen, int unquot, const char *str)
 {  {
         int len;          int len;
           size_t eos;
   
         if (!jstr || !str)          if (!jstr || !str)
                 return -1;                  return -1;
           else
                   eos = strlen(jstr);
   
        if (!unquot)        if (!unquot) {
                 len = strlcat(jstr, "\"", jlen);                  len = strlcat(jstr, "\"", jlen);
                   if (len >= jlen) {
                           elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                           jstr[eos] = 0;
                           return -1;
                   }
           }
         len = strlcat(jstr, str, jlen);          len = strlcat(jstr, str, jlen);
         if (!unquot)  
                 len = strlcat(jstr, "\"", jlen);  
   
         if (len >= jlen) {          if (len >= jlen) {
                 elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);                  elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   jstr[eos] = 0;
                 return -1;                  return -1;
         }          }
           if (!unquot) {
                   len = strlcat(jstr, "\"", jlen);
                   if (len >= jlen) {
                           elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                           jstr[eos] = 0;
                           return -1;
                   }
           }
   
         return len;          return len;
 }  }
Line 817  json_add_value(char * __restrict jstr, int jlen, int u Line 858  json_add_value(char * __restrict jstr, int jlen, int u
 {  {
         int len;          int len;
         char wrk[STRSIZ] = { [0 ... STRSIZ - 1] = 0 };          char wrk[STRSIZ] = { [0 ... STRSIZ - 1] = 0 };
           size_t eos;
   
         if (!jstr)          if (!jstr)
                 return -1;                  return -1;
           else
                   eos = strlen(jstr);
   
        if (!unquot)        if (!unquot) {
                 len = strlcat(jstr, "\"", jlen);                  len = strlcat(jstr, "\"", jlen);
                   if (len >= jlen) {
                           elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                           jstr[eos] = 0;
                           return -1;
                   }
           }
         snprintf(wrk, sizeof wrk, "%ld", num);          snprintf(wrk, sizeof wrk, "%ld", num);
         len = strlcat(jstr, wrk, jlen);          len = strlcat(jstr, wrk, jlen);
         if (!unquot)  
                 len = strlcat(jstr, "\"", jlen);  
   
         if (len >= jlen) {          if (len >= jlen) {
                 elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);                  elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                   jstr[eos] = 0;
                 return -1;                  return -1;
         }          }
           if (!unquot) {
                   len = strlcat(jstr, "\"", jlen);
                   if (len >= jlen) {
                           elwix_SetErr(J_ERR_NOMEM, "%s", jerrstr[J_ERR_NOMEM]);
                           jstr[eos] = 0;
                           return -1;
                   }
           }
   
         return len;          return len;
 }  }
Line 850  int Line 906  int
 json_add_pair(char * __restrict jstr, int jlen, int wspace, const char *key, const char *val)  json_add_pair(char * __restrict jstr, int jlen, int wspace, const char *key, const char *val)
 {  {
         int len = -1;          int len = -1;
           size_t eos;
   
         if (!jstr || !key || !val)          if (!jstr || !key || !val)
                 return -1;                  return -1;
           else
                   eos = strlen(jstr);
   
        if (json_add_string(jstr, jlen, 0, key) == -1)        if (json_add_string(jstr, jlen, 0, key) == -1) {
                 jstr[eos] = 0;
                 return -1;                  return -1;
        if (json_add_colon(jstr, jlen, wspace) == -1)        }
         if (json_add_colon(jstr, jlen, wspace) == -1) {
                 jstr[eos] = 0;
                 return -1;                  return -1;
        if ((len = json_add_string(jstr, jlen, 0, key)) == -1)        }
         if ((len = json_add_string(jstr, jlen, 0, key)) == -1) {
                 jstr[eos] = 0;
                 return -1;                  return -1;
           }
   
         return len;          return len;
 }  }
Line 879  json_add_array(char * __restrict jstr, int jlen, int w Line 944  json_add_array(char * __restrict jstr, int jlen, int w
         int len = -1;          int len = -1;
         register int i;          register int i;
         ait_val_t *v;          ait_val_t *v;
           size_t eos;
   
         if (!jstr || !arr)          if (!jstr || !arr)
                 return -1;                  return -1;
           else
                   eos = strlen(jstr);
   
        if (json_add_begin_array(jstr, jlen, wspace) == -1)        if (json_add_begin_array(jstr, jlen, wspace) == -1) {
                 jstr[eos] = 0;
                 return -1;                  return -1;
           }
         for (i = 0; i < array_Size(arr); i++) {          for (i = 0; i < array_Size(arr); i++) {
                 v = array(arr, i, ait_val_t*);                  v = array(arr, i, ait_val_t*);
                 if (v) {                  if (v) {
                         if (AIT_TYPE(v) == string) {                          if (AIT_TYPE(v) == string) {
                                if (json_add_string(jstr, jlen, 0, AIT_GET_STR(v)) == -1)                                if (json_add_string(jstr, jlen, 0, AIT_GET_STR(v)) == -1) {
                                         jstr[eos] = 0;
                                         return -1;                                          return -1;
                                   }
                         } else {                          } else {
                                if (json_add_value(jstr, jlen, 0, AIT_GET_LIKE(v, long)) == -1)                                if (json_add_value(jstr, jlen, 0, AIT_GET_LIKE(v, long)) == -1) {
                                         jstr[eos] = 0;
                                         return -1;                                          return -1;
                                   }
                         }                          }
                        if (i < array_Size(arr) - 1 && json_add_comma(jstr, jlen, wspace) == -1)                        if (i < array_Size(arr) - 1 && json_add_comma(jstr, jlen, wspace) == -1) {
                                 jstr[eos] = 0;
                                 return -1;                                  return -1;
                           }
                 }                  }
         }          }
        if ((len = json_add_end_array(jstr, jlen, wspace)) == -1)        if ((len = json_add_end_array(jstr, jlen, wspace)) == -1) {
                 jstr[eos] = 0;
                 return -1;                  return -1;
           }
   
         return len;          return len;
 }  }

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


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