Code

Imported upstream version 1.4.8
[pkg-rrdtool.git] / src / rrd_graph_helper.c
index 00922a5e122f92fa26f6b63edb39152ade30876c..e7ec902292ac95ebc30aa1e7f5211caccb0cf464 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * RRDtool 1.4.7  Copyright by Tobi Oetiker, 1997-2012
+ * RRDtool 1.4.8  Copyright by Tobi Oetiker, 1997-2013
  ****************************************************************************
  * rrd_graph_helper.c  commandline parser functions 
  *                     this code initially written by Alex van den Bogaerdt
@@ -758,6 +758,24 @@ int rrd_parse_PVHLAST(
             dprintf("- not STACKing\n");
     }
 
+    dprintf("- parsing '%s', looking for skipscale\n", &line[*eaten]);
+    j = scan_for_col(&line[*eaten], 9, tmpstr);
+    if (!strcmp("skipscale", tmpstr)) {
+        dprintf("- found skipscale\n");
+        gdp->skipscale = 1;
+        (*eaten) += j;
+        if (line[*eaten] == ':') {
+            (*eaten) += 1;
+        } else if (line[*eaten] == '\0') {
+            dprintf("- done parsing line\n");
+            return 0;
+        } else {
+            dprintf("- found %s instead of just skipscale\n", &line[*eaten]);
+            rrd_set_error("skipscale expected but %s found", &line[*eaten]);
+            return 1;
+        }
+    }
+
     dprintf("- still more, should be dashes[=...]\n");
     dprintf("- parsing '%s'\n", &line[*eaten]);
     if (line[*eaten] != '\0') {
@@ -1076,7 +1094,7 @@ void rrd_graph_script(
         graph_desc_t *gdp;
         unsigned int eaten = 0;
 
-        if (gdes_alloc(im))
+        if (gdes_alloc(im)) /* gdes_c ++ */
             return;     /* the error string is already set */
         gdp = &im->gdes[im->gdes_c - 1];
 #ifdef DEBUG
@@ -1157,5 +1175,13 @@ void rrd_graph_script(
                           &argv[i][eaten], argv[i]);
             return;
         }
+        char *key = gdes_fetch_key((*gdp));
+        if (gdp->gf == GF_DEF && !g_hash_table_lookup_extended(im->rrd_map,key,NULL,NULL)){
+            g_hash_table_insert(im->gdef_map,g_strdup(key),GINT_TO_POINTER(im->gdes_c-1));
+        } 
+        free(key);
+        if (gdp->gf == GF_DEF || gdp->gf == GF_VDEF || gdp->gf == GF_CDEF){
+            g_hash_table_insert(im->gdef_map,g_strdup(gdp->vname),GINT_TO_POINTER(im->gdes_c-1));
+        }
     }
 }