summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c5e542b)
raw | patch | inline | side by side (parent: c5e542b)
author | alex <alex@a5681a0c-68f1-0310-ab6d-d61299d08faa> | |
Thu, 26 Jul 2001 02:27:46 +0000 (02:27 +0000) | ||
committer | alex <alex@a5681a0c-68f1-0310-ab6d-d61299d08faa> | |
Thu, 26 Jul 2001 02:27:46 +0000 (02:27 +0000) |
and/or from different places should be added here in stead of repeating
them in rrd_graph.c over and over again.
git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk@48 a5681a0c-68f1-0310-ab6d-d61299d08faa
them in rrd_graph.c over and over again.
git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk@48 a5681a0c-68f1-0310-ab6d-d61299d08faa
program/src/rrd_graph_helper.c | [new file with mode: 0644] | patch | blob |
program/src/rrd_graph_helper.h | [new file with mode: 0644] | patch | blob |
diff --git a/program/src/rrd_graph_helper.c b/program/src/rrd_graph_helper.c
--- /dev/null
@@ -0,0 +1,81 @@
+/**********************************************************
+ *** Several generic helper functions for rrd_graph.c ***
+ **********************************************************/
+
+#include "rrd_graph.h"
+#include "rrd_graph_helper.h"
+
+/**********************************************************
+ *** Helper functions for parsing command file ***
+ **********************************************************/
+
+/* Parse a VNAME followed by an equal sign ( CDEF:VNAME= )
+ *
+ * Input: pointer to argv
+ * Input: pointer to im structure
+ * Input: pointer to error string
+ * Output: number of chars eaten (0 means error)
+ *
+ * Usage: n=parse_vname( &argv[i][argstart],&im, "VDEF");
+ * if (n==0) { error } else { argstart+=n };
+ */
+int
+parse_vname1(cptr,im,err)
+char * cptr;
+image_desc_t * im;
+char * err;
+{
+ int n=0,vidx;
+
+ sscanf(cptr, DEF_NAM_FMT "=%n",im->gdes[im->gdes_c-1].vname,&n);
+
+ /* Check if the sequence matches, including the
+ * terminating equal sign */
+ if (n==0) {
+ im_free(im);
+ rrd_set_error("Can't parse VNAME in %s: '%s'",err,cptr);
+ return 0;
+ }
+
+ /* Check if this is an unused variable */
+ vidx=find_var(im,im->gdes[im->gdes_c-1].vname);
+ if (vidx!=-1) {
+ switch(im->gdes[vidx].gf) {
+ case GF_DEF:
+ rrd_set_error("Duplicate variable in %s: '%s' defined as DEF",
+ err,im->gdes[im->gdes_c-1].vname);
+ break;
+ case GF_CDEF:
+ rrd_set_error("Duplicate variable in %s: '%s' defined as CDEF",
+ err,im->gdes[im->gdes_c-1].vname);
+ break;
+ case GF_VDEF:
+ rrd_set_error("Duplicate variable in %s: '%s' defined as VDEF",
+ err,im->gdes[im->gdes_c-1].vname);
+ break;
+ default:
+ rrd_set_error("Duplicate variable in %s: '%s' defined",
+ err,im->gdes[im->gdes_c-1].vname);
+ break;
+ };
+ im_free(im);
+ return 0;
+ }
+
+ /* VNAME must start with a character other than numeric */
+ if (isdigit(im->gdes[im->gdes_c-1].vname[0])) {
+ rrd_set_error("Variable in %s starts with a digit: '%s'",
+ err,im->gdes[im->gdes_c-1].vname);
+ im_free(im);
+ return 0;
+ };
+
+ /* Reserved words checking. Not at the moment. */
+
+ return n;
+}
+
+/**********************************************************
+ *** ***
+ **********************************************************/
+
diff --git a/program/src/rrd_graph_helper.h b/program/src/rrd_graph_helper.h
--- /dev/null
@@ -0,0 +1 @@
+int parse_vname1(char *, image_desc_t *, char *);