diff --git a/src/rrd_graph_helper.c b/src/rrd_graph_helper.c
index c9990f7e89566fcbcedb4620a181434a38663673..e7ec902292ac95ebc30aa1e7f5211caccb0cf464 100644 (file)
--- a/src/rrd_graph_helper.c
+++ b/src/rrd_graph_helper.c
/****************************************************************************
- * RRDtool 1.3rc6 Copyright by Tobi Oetiker, 1997-2008
+ * 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
}
-/* Parsing of PART, VRULE, HRULE, LINE, AREA, STACK and TICK
+/* Parsing of VRULE, HRULE, LINE, AREA, STACK and TICK
** is done in one function.
**
-** Stacking PART, VRULE, HRULE or TICK is not allowed.
+** Stacking VRULE, HRULE or TICK is not allowed.
**
** If a number (which is valid to enter) is more than a
** certain amount of characters, it is caught as an error.
float one_space = gfx_get_text_width(im, 0,
im->
text_prop[TEXT_PROP_LEGEND].
- font,
- im->
- text_prop[TEXT_PROP_LEGEND].
- size,
+ font_desc,
im->tabwidth, " ") / 4.0;
float target_space = gfx_get_text_width(im, 0,
im->
text_prop
- [TEXT_PROP_LEGEND].font,
- im->
- text_prop
- [TEXT_PROP_LEGEND].size,
+ [TEXT_PROP_LEGEND].font_desc,
im->tabwidth, "oo");
spacecnt = target_space / one_space;
}
(*eaten)++; /* after colon */
- /* PART, HRULE, VRULE and TICK cannot be stacked. */
+ /* HRULE, VRULE and TICK cannot be stacked. */
if ((gdp->gf != GF_HRULE)
&& (gdp->gf != GF_VRULE)
&& (gdp->gf != GF_TICK)) {
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') {
rrd_set_error("Cannot parse vname from '%s'", line);
return 1;
}
+ if (line[*eaten+i] == '\0') {
+ rrd_set_error("String ends after the = sign on '%s'", line);
+ return 1;
+ }
dprintf("- found candidate '%s'\n", tmpstr);
if ((gdp->vidx = find_var(im, tmpstr)) >= 0) {
int i = 0;
char command[7]; /* step, start, end, reduce */
char tmpstr[256];
- struct rrd_time_value start_tv, end_tv;
+ rrd_time_value_t start_tv, end_tv;
time_t start_tmp = 0, end_tmp = 0;
char *parsetime_error = NULL;
} else if (!strcmp("start", command)) {
i = scan_for_col(&line[*eaten], 255, tmpstr);
(*eaten) += i;
- if ((parsetime_error = parsetime(tmpstr, &start_tv))) {
+ if ((parsetime_error = rrd_parsetime(tmpstr, &start_tv))) {
rrd_set_error("start time: %s", parsetime_error);
return 1;
}
} else if (!strcmp("end", command)) {
i = scan_for_col(&line[*eaten], 255, tmpstr);
(*eaten) += i;
- if ((parsetime_error = parsetime(tmpstr, &end_tv))) {
+ if ((parsetime_error = rrd_parsetime(tmpstr, &end_tv))) {
rrd_set_error("end time: %s", parsetime_error);
return 1;
}
}
(*eaten)++;
}
- if (proc_start_end(&start_tv, &end_tv, &start_tmp, &end_tmp) == -1) {
- /* error string is set in parsetime.c */
+ if (rrd_proc_start_end(&start_tv, &end_tv, &start_tmp, &end_tmp) == -1) {
+ /* error string is set in rrd_parsetime.c */
return 1;
}
if (start_tmp < 3600 * 24 * 365 * 10) {
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
&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));
+ }
}
}