1 /**********************************************************
2 *** Several generic helper functions for rrd_graph.c ***
3 **********************************************************/
6 #include "rrd_graph_helper.h"
8 /**********************************************************
9 *** Helper functions for parsing command file ***
10 **********************************************************/
12 /* Parse a VNAME followed by an equal sign ( CDEF:VNAME= )
14 * Input: pointer to argv
15 * Input: pointer to im structure
16 * Input: pointer to error string
17 * Output: number of chars eaten (0 means error)
19 * Usage: n=parse_vname( &argv[i][argstart],&im, "VDEF");
20 * if (n==0) { error } else { argstart+=n };
23 parse_vname1(cptr,im,err)
30 sscanf(cptr, DEF_NAM_FMT "=%n",im->gdes[im->gdes_c-1].vname,&n);
32 /* Check if the sequence matches, including the
33 * terminating equal sign */
36 rrd_set_error("Can't parse VNAME in %s: '%s'",err,cptr);
40 /* Check if this is an unused variable */
41 vidx=find_var(im,im->gdes[im->gdes_c-1].vname);
43 switch(im->gdes[vidx].gf) {
45 rrd_set_error("Duplicate variable in %s: '%s' defined as DEF",
46 err,im->gdes[im->gdes_c-1].vname);
49 rrd_set_error("Duplicate variable in %s: '%s' defined as CDEF",
50 err,im->gdes[im->gdes_c-1].vname);
53 rrd_set_error("Duplicate variable in %s: '%s' defined as VDEF",
54 err,im->gdes[im->gdes_c-1].vname);
57 rrd_set_error("Duplicate variable in %s: '%s' defined",
58 err,im->gdes[im->gdes_c-1].vname);
65 /* VNAME must start with a character other than numeric */
66 if (isdigit(im->gdes[im->gdes_c-1].vname[0])) {
67 rrd_set_error("Variable in %s starts with a digit: '%s'",
68 err,im->gdes[im->gdes_c-1].vname);
73 /* Reserved words checking. Not at the moment. */
78 /**********************************************************
80 **********************************************************/