diff options
| author | Xin LI <delphij@FreeBSD.org> | 2011-01-13 19:16:10 +0000 |
|---|---|---|
| committer | Xin LI <delphij@FreeBSD.org> | 2011-01-13 19:16:10 +0000 |
| commit | 639311e7cf45191b60bf5680d9d8bb6629610747 (patch) | |
| tree | 212255a4a192686b2e5f850eb0c74d9b590b9c9b /databases/rrdtool/files/thirdparty-json.diff | |
| parent | Pass correct flags via CFLAGS instead of MAKE_ARGS (diff) | |
- Add an optional patch (not enabled by default for now) to
support 'json' command which in turn spits output in json
format.
PORTREVISION not bumped as the default build was not
changed.
- While I'm there remove MD5 checksum.
Approved by: maintainer
Feature safe: yes
Diffstat (limited to 'databases/rrdtool/files/thirdparty-json.diff')
| -rw-r--r-- | databases/rrdtool/files/thirdparty-json.diff | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/databases/rrdtool/files/thirdparty-json.diff b/databases/rrdtool/files/thirdparty-json.diff new file mode 100644 index 000000000000..e4605cf79699 --- /dev/null +++ b/databases/rrdtool/files/thirdparty-json.diff @@ -0,0 +1,115 @@ +# +# From: https://gist.github.com/raw/614476/19f1b1bc9499bb9dd761e5e03eff225d2316707d/0001-work-in-progress.patch +# +--- src/rrd_tool.c.orig 2010-07-05 12:31:21.000000000 -0700 ++++ src/rrd_tool.c 2011-01-06 15:17:04.453738239 -0800 +@@ -55,7 +55,7 @@ + N_ + ("Valid commands: create, update, updatev, graph, graphv, dump, restore,\n" + "\t\tlast, lastupdate, first, info, fetch, tune,\n" +- "\t\tresize, xport, flushcached\n"); ++ "\t\tresize, xport, json, flushcached\n"); + + const char *help_listremote = + N_("Valid remote commands: quit, ls, cd, mkdir, pwd\n"); +@@ -208,6 +208,13 @@ + "\t\t[--enumds]\n" "\t\t[DEF:vname=rrd:ds-name:CF]\n" + "\t\t[CDEF:vname=rpn-expression]\n" + "\t\t[XPORT:vname:legend]\n"); ++ const char *help_json = ++ N_("* json - generate JSON dump from one or several RRD\n\n" ++ "\trrdtool json [-s|--start seconds] [-e|--end seconds]\n" ++ "\t\t[-m|--maxrows rows]\n" "\t\t[--step seconds]\n" ++ "\t\t[DEF:vname=rrd:ds-name:CF]\n" ++ "\t\t[CDEF:vname=rpn-expression]\n" ++ "\t\t[XPORT:vname:legend]\n"); + const char *help_quit = + N_(" * quit - closing a session in remote mode\n\n" + "\trrdtool quit\n"); +@@ -230,7 +237,7 @@ + enum { C_NONE, C_CREATE, C_DUMP, C_INFO, C_RESTORE, C_LAST, + C_LASTUPDATE, C_FIRST, C_UPDATE, C_FETCH, C_GRAPH, C_GRAPHV, + C_TUNE, +- C_RESIZE, C_XPORT, C_QUIT, C_LS, C_CD, C_MKDIR, C_PWD, ++ C_RESIZE, C_XPORT, C_JSON, C_QUIT, C_LS, C_CD, C_MKDIR, C_PWD, + C_UPDATEV, C_FLUSHCACHED + }; + int help_cmd = C_NONE; +@@ -268,6 +275,8 @@ + help_cmd = C_RESIZE; + else if (!strcmp(cmd, "xport")) + help_cmd = C_XPORT; ++ else if (!strcmp(cmd, "json")) ++ help_cmd = C_JSON; + else if (!strcmp(cmd, "quit")) + help_cmd = C_QUIT; + else if (!strcmp(cmd, "ls")) +@@ -343,6 +352,9 @@ + case C_XPORT: + puts(_(help_xport)); + break; ++ case C_JSON: ++ puts(_(help_json)); ++ break; + case C_QUIT: + puts(_(help_quit)); + break; +@@ -770,6 +782,58 @@ + setlocale(LC_NUMERIC, old_locale); + } + free(vtag); ++ } else if (strcmp("json", argv[1]) == 0) { ++ int xxsize; ++ unsigned long int j = 0; ++ time_t start, end, ti; ++ unsigned long step, col_cnt; ++ rrd_value_t *data, *ptr; ++ char **legend_v; ++ int i; ++ ++ if (rrd_xport ++ (argc - 1, &argv[1], &xxsize, &start, &end, &step, &col_cnt, ++ &legend_v, &data) != -1) { ++ char *old_locale = setlocale(LC_NUMERIC, "C"); ++ printf("[\n"); ++ for (j = 0; j < col_cnt; j++) { ++ char *entry = NULL; ++ ptr = j + data; ++ entry = legend_v[j]; ++ ++ printf("\t{\n\t\t\"%s\": {\n", entry); ++ free(entry); ++ ++ printf("\t\t\t\"%s\": %lld,\n", META_START_TAG, ++ (long long int) start + step); ++ printf("\t\t\t\"%s\": %lu,\n", META_STEP_TAG, step); ++ printf("\t\t\t\"%s\": %lld,\n", META_END_TAG, (long long int) end); ++ printf("\t\t\t\"data_points\": [\n"); ++ ++ for (ti = start + step; ti <= end; ti += step) { ++ rrd_value_t newval = DNAN; ++ newval = *ptr; ++ if (isnan(newval)) { ++ printf("null"); ++ } else { ++ printf("%0.5f", newval); ++ }; ++ if (ti < end) { ++ printf(", "); ++ } ++ ptr+=col_cnt; ++ } ++ ++ printf("\n\t\t\t]\n"); ++ printf("\t\t}\n"); ++ printf("\t}%s\n", (j<col_cnt-1) ? "," : ""); ++ } ++ free(legend_v); ++ ++ free(data); ++ printf("]\n"); ++ setlocale(LC_NUMERIC, old_locale); ++ } + } else if (strcmp("graph", argv[1]) == 0) { + char **calcpr; + |
