moved output generation for xport out of rrd_tool.c -- martin sperl
[rrdtool.git] / src / rrd_tool.c
index 0772b88..24abcdc 100644 (file)
@@ -207,7 +207,7 @@ void PrintUsage(
         N_("* xport - generate XML dump from one or several RRD\n\n"
            "\trrdtool xport [-s|--start seconds] [-e|--end seconds]\n"
            "\t\t[-m|--maxrows rows]\n" "\t\t[--step seconds]\n"
-           "\t\t[--enumds]\n" "\t\t[DEF:vname=rrd:ds-name:CF]\n"
+           "\t\t[--enumds] [--json]\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 =
@@ -685,7 +685,7 @@ int HandleInputLine(
 
         if (rrd_fetch
             (argc - 1, &argv[1], &start, &end, &step, &ds_cnt, &ds_namv,
-             &data) != -1) {
+             &data) == 0) {
             datai = data;
             printf("           ");
             for (i = 0; i < ds_cnt; i++)
@@ -704,82 +704,13 @@ int HandleInputLine(
         }
     } else if (strcmp("xport", argv[1]) == 0) {
 #ifdef HAVE_RRD_GRAPH
-        int       xxsize;
-        unsigned long int j = 0;
-        time_t    start, end, ti;
-        unsigned long step, col_cnt, row_cnt;
-        rrd_value_t *data, *ptr;
-        char    **legend_v;
-        int       enumds = 0;
-        int       i;
-        size_t    vtag_s = strlen(COL_DATA_TAG) + 10;
-        char     *vtag = malloc(vtag_s);
-
-        for (i = 2; i < argc; i++) {
-            if (strcmp("--enumds", argv[i]) == 0)
-                enumds = 1;
-        }
-
-        if (rrd_xport
-            (argc - 1, &argv[1], &xxsize, &start, &end, &step, &col_cnt,
-             &legend_v, &data) != -1) {
-            char *old_locale = setlocale(LC_NUMERIC,NULL);
-            setlocale(LC_NUMERIC, "C");
-            row_cnt = (end - start) / step;
-            ptr = data;
-            printf("<?xml version=\"1.0\" encoding=\"%s\"?>\n\n",
-                   XML_ENCODING);
-            printf("<%s>\n", ROOT_TAG);
-            printf("  <%s>\n", META_TAG);
-            printf("    <%s>%lld</%s>\n", META_START_TAG,
-                   (long long int) start + step, META_START_TAG);
-            printf("    <%s>%lu</%s>\n", META_STEP_TAG, step, META_STEP_TAG);
-            printf("    <%s>%lld</%s>\n", META_END_TAG, (long long int) end,
-                   META_END_TAG);
-            printf("    <%s>%lu</%s>\n", META_ROWS_TAG, row_cnt,
-                   META_ROWS_TAG);
-            printf("    <%s>%lu</%s>\n", META_COLS_TAG, col_cnt,
-                   META_COLS_TAG);
-            printf("    <%s>\n", LEGEND_TAG);
-            for (j = 0; j < col_cnt; j++) {
-                char     *entry = NULL;
-
-                entry = legend_v[j];
-                printf("      <%s>%s</%s>\n", LEGEND_ENTRY_TAG, entry,
-                       LEGEND_ENTRY_TAG);
-                free(entry);
-            }
-            free(legend_v);
-            printf("    </%s>\n", LEGEND_TAG);
-            printf("  </%s>\n", META_TAG);
-            printf("  <%s>\n", DATA_TAG);
-            for (ti = start + step; ti <= end; ti += step) {
-                printf("    <%s>", DATA_ROW_TAG);
-                printf("<%s>%lld</%s>", COL_TIME_TAG, (long long int)ti, COL_TIME_TAG);
-                for (j = 0; j < col_cnt; j++) {
-                    rrd_value_t newval = DNAN;
-
-                    if (enumds == 1)
-
-                        snprintf(vtag, vtag_s, "%s%lu", COL_DATA_TAG, j);
-                    else
-                        snprintf(vtag, vtag_s, "%s", COL_DATA_TAG);
-                    newval = *ptr;
-                    if (isnan(newval)) {
-                        printf("<%s>NaN</%s>", vtag, vtag);
-                    } else {
-                        printf("<%s>%0.10e</%s>", vtag, newval, vtag);
-                    };
-                    ptr++;
-                }
-                printf("</%s>\n", DATA_ROW_TAG);
-            }
-            free(data);
-            printf("  </%s>\n", DATA_TAG);
-            printf("</%s>\n", ROOT_TAG);
-            setlocale(LC_NUMERIC, old_locale);
-        }
-        free(vtag);
+      time_t    start, end;
+      unsigned long step, col_cnt;
+      rrd_value_t *data;
+      char    **legend_v;
+      rrd_xport
+       (argc - 1, &argv[1], NULL, &start, &end, &step, &col_cnt,
+        &legend_v, &data);
 #else
         rrd_set_error("the instance of rrdtool has been compiled without graphics");
 #endif
@@ -805,7 +736,7 @@ int HandleInputLine(
         }
         if (rrd_graph
             (argc - 1, &argv[1], &calcpr, &xsize, &ysize, NULL, &ymin,
-             &ymax) != -1) {
+             &ymax) == 0) {
             if (!tostdout && !imginfo)
                 printf("%dx%d\n", xsize, ysize);
             if (calcpr) {