X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=common%2Fjson.c;h=833c9685b609be892e09bc8a95e05cf663018b9e;hb=d67dd1bf5a247e20141b9907f5a452da73624235;hp=6b793ab7982903cb55f46c8c5fe514961725b3ce;hpb=ec27db46cef1c4643087fa2eeaad2ca72228bc06;p=blerg.git diff --git a/common/json.c b/common/json.c index 6b793ab..833c968 100644 --- a/common/json.c +++ b/common/json.c @@ -1,3 +1,6 @@ +/* Blerg is (C) 2011 The Dominion of Awesome, and is distributed under a + * BSD-style license. Please see the COPYING file for details. + */ #include #include #include @@ -5,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; @@ -15,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);