X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=tools%2Fblergtool.c;h=c689d2f2367372072b52de0d83f5fb0622aaac89;hb=3e3138025852408ef03f3213972e042e12841bed;hp=cc78c7dae46e99ae37044f7ebe49b08b1ef60175;hpb=96ec261b36bdbb701e05f5ee1aab70dec44085f9;p=blerg.git diff --git a/tools/blergtool.c b/tools/blergtool.c index cc78c7d..c689d2f 100644 --- a/tools/blergtool.c +++ b/tools/blergtool.c @@ -1,10 +1,26 @@ +/* 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 #include "database.h" +#include "subscription.h" #include "tags.h" void help() { - printf("Usage: blergtool [record]\n"); + printf( + "Usage: blergtool [args]\n" + "\n" + "Where command is one of:\n" + "\n" + " blergtool store \n" + " blergtool fetch [record]\n" + " blergtool mute \n" + " blergtool unmute \n" + " blergtool subscribe \n" + " blergtool unsubscribe \n" + ); } int main(int argc, char *argv[]) { @@ -13,6 +29,10 @@ int main(int argc, char *argv[]) { exit(1); } + if (!blerg_init()) { + exit(2); + } + if (strncmp(argv[1], "store", 5) == 0) { char *store = argv[2]; struct blerg *f = blerg_open(store); @@ -47,23 +67,64 @@ int main(int argc, char *argv[]) { char *data; int size; - blerg_fetch(f, record, &data, &size); + if (blerg_fetch(f, record, &data, &size)) { + fwrite(data, 1, size, stdout); + free(data); + } blerg_close(f); - fwrite(data, 1, size, stdout); - free(data); } else if (strncmp(argv[1], "list", 4) == 0) { char *tag = argv[2]; int count = 50; - struct tag *list = tag_list(tag, 0, &count, -1); + struct blergref *list = tag_list(tag, 0, &count, -1); if (list == NULL) { printf("No entries"); } else { int i; for (i = 0; i < count; i++) { - printf("%s %d\n", list[i].author, list[i].record); + printf("%s %llu\n", list[i].author, list[i].record); } free(list); } + } else if (strncmp(argv[1], "mute", 4) == 0) { + char *store = argv[2]; + struct blerg *f = blerg_open(store); + if (!f) { + printf("Blerg open failed\n"); + exit(1); + } + + blerg_set_status(f, BLERGSTATUS_MUTED, 1); + blerg_close(f); + } else if (strncmp(argv[1], "unmute", 6) == 0) { + char *store = argv[2]; + struct blerg *f = blerg_open(store); + if (!f) { + printf("Blerg open failed\n"); + exit(1); + } + + blerg_set_status(f, BLERGSTATUS_MUTED, 0); + blerg_close(f); + } else if (strncmp(argv[1], "subscribe", 9) == 0) { + if (argc < 4) { + printf("Not enough arguments for subscribe\n"); + help(); + exit(1); + } + if (!subscription_add(argv[2], argv[3])) { + printf("Could not subscribe %s to %s\n", argv[2], argv[3]); + exit(1); + } + } else if (strncmp(argv[1], "unsubscribe", 11) == 0) { + if (argc < 4) { + printf("Not enough arguments for unsubscribe\n"); + help(); + exit(1); + } + if (!subscription_remove(argv[2], argv[3])) { + printf("Could not subscribe %s to %s\n", argv[2], argv[3]); + exit(1); + } } else { help(); }