+/* Blerg is (C) 2011 The Dominion of Awesome, and is distributed under a
+ * BSD-style license. Please see the COPYING file for details.
+ */
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include "database.h"
+#include "subscription.h"
#include "tags.h"
void help() {
- printf("Usage: blergtool <store|fetch> <storename> [record]\n");
+ printf(
+ "Usage: blergtool <command> [args]\n"
+ "\n"
+ "Where command is one of:\n"
+ "\n"
+ " blergtool store <storename>\n"
+ " blergtool fetch <storename> [record]\n"
+ " blergtool mute <storename>\n"
+ " blergtool unmute <storename>\n"
+ " blergtool subscribe <storename> <target>\n"
+ " blergtool unsubscribe <storename> <target>\n"
+ );
}
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);
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();
}