allow for VNAMES starting with a number and add documentation -- Alex
authoroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Mon, 13 Jun 2005 05:43:44 +0000 (05:43 +0000)
committeroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Mon, 13 Jun 2005 05:43:44 +0000 (05:43 +0000)
git-svn-id: svn://svn.oetiker.ch/rrdtool/branches/1.2/program@636 a5681a0c-68f1-0310-ab6d-d61299d08faa

doc/rrdgraph_data.pod
src/rrd_graph_helper.c

index dba53f3..c3891d4 100644 (file)
@@ -20,7 +20,7 @@ instructions use a language called B<RPN> which is described in its
 own manual page.
 
 Variable names (I<vname>) must be made up strings of the following characters
-C<A-Z, a-z, 0-9, -,_>, starting with a letter and a maximum length of 255 characters.
+C<A-Z, a-z, 0-9, -,_> and a maximum length of 255 characters.
 
 =head1 DEF
 
index 2e80741..6babc57 100644 (file)
@@ -330,16 +330,28 @@ rrd_parse_PVHLAST(char *line, unsigned int *eaten, graph_desc_t *gdp, image_desc
        tmpstr[j]='\0';
     }
 
+    /* Number or vname ?
+     * It is a number only if "k" equals either "j" or "i",
+     * depending on which is appropriate
+     */
     dprintf("- examining value '%s'\n",tmpstr);
     k=0;
     if (gdp->gf == GF_VRULE) {
        sscanf(tmpstr,"%li%n",&gdp->xrule,&k);
-       if (k) dprintf("- found time: %li\n",gdp->xrule);
+       if (((j!=0)&&(k==j))||((j==0)&&(k==i))) {
+               dprintf("- found time: %li\n",gdp->xrule);
+       } else {
+               gdp->xrule=0;   /* reset the value to "none" */
+       }
     } else {
        sscanf(tmpstr,"%lf%n",&gdp->yrule,&k);
-       if (k) dprintf("- found number: %f\n",gdp->yrule);
+       if (((j!=0)&&(k==j))||((j==0)&&(k==i))) {
+               dprintf("- found number: %f\n",gdp->yrule);
+       } else {
+               gdp->yrule=DNAN;        /* reset the value to "none" */
+       }
     }
-    if (!k) {
+    if (((j!=0)&&(k!=j))||((j==0)&&(k!=i))) {
        if ((gdp->vidx=find_var(im,tmpstr))<0) {
            rrd_set_error("Not a valid vname: %s in line %s",tmpstr,line);
            return 1;