#include #include #include "util.h" #define SLMAX 100 char * alloc_build_string(const char *ss[]) { size_t total_len = 1; size_t slens[SLMAX]; /* should be enough */ int ns = 0; for (int i = 0; ss[i] != NULL; i++) { if (ns >= SLMAX) return NULL; size_t l = strlen(ss[i]); slens[ns] = l; ns++; total_len += l; } char *res = malloc(total_len); size_t cur = 0; for (int i = 0; i < ns; i++) { memcpy(res+cur, ss[i], slens[i]); cur += slens[i]; } res[cur] = 0; return res; } const char *json_gets(json_object *j, const char *key) { json_object *val; if (json_object_object_get_ex(j, key, &val)) { if (json_object_is_type(val, json_type_string)) return json_object_get_string(val); } return NULL; } char *json_gets_dup(json_object *j, const char *key) { const char *t = json_gets(j, key); if (t == NULL) return NULL; else return strdup(t); }