|
|
| version 1.12.2.1, 2025/08/25 10:05:52 | version 1.13, 2025/08/25 13:00:37 |
|---|---|
| Line 811 json_token2array(const char *jstr, jtok_t * __restrict | Line 811 json_token2array(const char *jstr, jtok_t * __restrict |
| return arr; | return arr; |
| } | } |
| /* | |
| * json_freearray() - Free & destroy allocated array from json_token2array function | |
| * | |
| * @parr = Array | |
| * return -1 error or 0 ok | |
| */ | |
| int | |
| json_freearray(array_t **parr) | |
| { | |
| if (!parr) | |
| return -1; | |
| array_Free(*parr); | |
| array_Destroy(parr); | |
| return 0; | |
| } | |
| /* | /* |
| * json_add_begin_object() - Adds begin of object { | * json_add_begin_object() - Adds begin of object { |
| * | * |
| Line 1421 json_validate(const char *jstr, int *started) | Line 1438 json_validate(const char *jstr, int *started) |
| { | { |
| register int o = 0, a = 0, q = 0, pos = 0; | register int o = 0, a = 0, q = 0, pos = 0; |
| if (!jstr) | |
| return -1; | |
| if (started) | if (started) |
| *started = 0; | *started = 0; |
| Line 1458 json_validate(const char *jstr, int *started) | Line 1478 json_validate(const char *jstr, int *started) |
| } while (q || a || o); | } while (q || a || o); |
| return pos; | return pos; |
| } | |
| /* | |
| * json_marshaling() - Prepare JSON to one continues line | |
| * | |
| * @jstr = JSON string | |
| * @space = if it is 0 then spaces will be removed | |
| * return NULL error or !=NULL ready JSON for proceeding | |
| */ | |
| char * | |
| json_marshaling(char * __restrict jstr, int space) | |
| { | |
| int started, ended, len; | |
| char *str, *pos, *js; | |
| register int q = 0; | |
| if (!jstr) | |
| return NULL; | |
| else | |
| js = jstr; | |
| ended = json_validate(jstr, &started); | |
| if (!ended) | |
| return NULL; | |
| len = ended - started + 1; | |
| str = e_malloc(len); | |
| if (!str) | |
| return NULL; | |
| else { | |
| memset(str, 0, len); | |
| pos = str; | |
| } | |
| js += started; | |
| while (*js && js < jstr + ended && --len) { | |
| if (*js < 0x20) { | |
| js++; | |
| continue; | |
| } | |
| if (space && !q && *js == 0x20) { | |
| js++; | |
| continue; | |
| } | |
| if (*js == '"') | |
| q = ~q; | |
| *pos++ = *js++; | |
| } | |
| *pos = 0; | |
| len = strlen(jstr) + 1; | |
| strlcpy(jstr, str, len); | |
| e_free(str); | |
| return jstr; | |
| } | } |