X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=common%2Fjson.c;h=833c9685b609be892e09bc8a95e05cf663018b9e;hb=abeaeafe6860bef22ab8469261d3198efc8358c1;hp=5494e4a1825386e843351ed1176fc5c064eba26c;hpb=54789cc8538714fc3622646721f6f2ecceae94ac;p=blerg.git diff --git a/common/json.c b/common/json.c index 5494e4a..833c968 100644 --- a/common/json.c +++ b/common/json.c @@ -8,7 +8,7 @@ #include "database.h" #include "json.h" -void json_generate_one_record(yajl_gen g, const char *author, struct blerg *b, uint64_t record) { +void json_generate_one_record(yajl_gen g, const char *author, struct blerg *b, uint64_t record, int brief) { char *data; char number[21]; int len; @@ -18,18 +18,28 @@ void json_generate_one_record(yajl_gen g, const char *author, struct blerg *b, u return; } + if (brief && len > 150) { + len = 150; + /* This is a bit of a hackish way to add an ellipsis, and will + * probably cause weird results if we overwrite part of a UTF-8 + * char */ + data[149] = '.'; + data[148] = '.'; + data[147] = '.'; + } + yajl_gen_map_open(g); if (author != NULL) { - yajl_gen_string(g, "author", 6); - yajl_gen_string(g, author, strlen(author)); + yajl_gen_string(g, (unsigned char *)"author", 6); + yajl_gen_string(g, (unsigned char *)author, strlen(author)); } - yajl_gen_string(g, "record", 6); + yajl_gen_string(g, (unsigned char *)"record", 6); snprintf(number, 21, "%llu", record); - yajl_gen_string(g, number, strlen(number)); - yajl_gen_string(g, "timestamp", 9); + yajl_gen_string(g, (unsigned char *)number, strlen(number)); + yajl_gen_string(g, (unsigned char *)"timestamp", 9); yajl_gen_integer(g, blerg_get_timestamp(b, record)); - yajl_gen_string(g, "data", 4); - yajl_gen_string(g, data, len); + yajl_gen_string(g, (unsigned char *)"data", 4); + yajl_gen_string(g, (unsigned char *)data, len); yajl_gen_map_close(g); free(data);