X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=tools%2Fblerglatest.c;h=ba12eaef362da385ef86884191b01c31f0269035;hb=3e3138025852408ef03f3213972e042e12841bed;hp=ed304197185a6dfdf08be3fc30e53b3d989e1fac;hpb=38ac8fa73118ce0a2d67bc7c640eb20fbd724a55;p=blerg.git diff --git a/tools/blerglatest.c b/tools/blerglatest.c index ed30419..ba12eae 100644 --- a/tools/blerglatest.c +++ b/tools/blerglatest.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 @@ -9,6 +12,7 @@ #include "database.h" #include "json.h" #include "config.h" +#include "configuration.h" yajl_gen_config yajl_config = {0, 0}; @@ -29,6 +33,7 @@ struct things * things_alloc() { things->len = 0; things->size = 65536; things->arr = malloc(sizeof(struct thing) * things->size); + return things; } void things_free(struct things *things) { @@ -76,10 +81,14 @@ struct things * latest_things(const char *path, const char *file, int minlen) { struct things * things = things_alloc(); char filename[512]; struct stat st; - int i; d = opendir(path); - while (f = readdir(d)) { + if (d == NULL) { + fprintf(stderr, "Could not open %s: ", path); + perror(""); + exit(1); + } + while ((f = readdir(d)) != NULL) { if (f->d_name[0] == '.') continue; if (minlen > 0 && strlen(f->d_name) < minlen) continue; if (file) { @@ -99,12 +108,12 @@ struct things * latest_things(const char *path, const char *file, int minlen) { void latest_tags(yajl_gen g) { int i; - struct things * things = latest_things(HASH_TAGS_PATH, NULL, 3); + struct things * things = latest_things(blergconf.hash_tags_path, NULL, 3); unsigned int count = (things->len >= 50 ? 50 : things->len); yajl_gen_array_open(g); for (i = 0; i < count; i++) { - yajl_gen_string(g, things->arr[i].name, things->arr[i].len); + yajl_gen_string(g, (unsigned char *)things->arr[i].name, things->arr[i].len); } yajl_gen_array_close(g); @@ -113,7 +122,7 @@ void latest_tags(yajl_gen g) { void latest_records(yajl_gen g) { int i; - struct things * things = latest_things(DATA_PATH, "meta", 0); + struct things * things = latest_things(blergconf.data_path, "meta", 0); unsigned int count = (things->len >= 50 ? 50 : things->len); yajl_gen_array_open(g); @@ -136,10 +145,13 @@ int main(int argc, char *argv[]) { const unsigned char *buf; unsigned int len; + if (!blerg_init()) + exit(1); + yajl_gen g = yajl_gen_alloc(&yajl_config, NULL); yajl_gen_map_open(g); - yajl_gen_string(g, "tags", 4); + yajl_gen_string(g, (unsigned char *)"tags", 4); latest_tags(g); @@ -147,7 +159,7 @@ int main(int argc, char *argv[]) { fwrite(buf, len, 1, stdout); yajl_gen_clear(g); - yajl_gen_string(g, "records", 7); + yajl_gen_string(g, (unsigned char *)"records", 7); latest_records(g); @@ -156,4 +168,6 @@ int main(int argc, char *argv[]) { fwrite(buf, len, 1, stdout); yajl_gen_free(g); + + return 0; }