* single letter variants for all graph options -- James Overbeck <grendel@gmo.jp>
[rrdtool.git] / src / rrd_graph.c
index 18be573..38956d7 100644 (file)
@@ -1285,6 +1285,7 @@ print_calc(image_desc_t *im, char ***prdata)
 
            if (im->gdes[i].gf == GF_PRINT){
                (*prdata)[prlines-2] = malloc((FMT_LEG_LEN+2)*sizeof(char));
+               (*prdata)[prlines-1] = NULL;
                if (bad_format(im->gdes[i].format)) {
                        rrd_set_error("bad format for [G]PRINT in '%s'", im->gdes[i].format);
                        return -1;
@@ -1294,7 +1295,6 @@ print_calc(image_desc_t *im, char ***prdata)
 #else
                sprintf((*prdata)[prlines-2],im->gdes[i].format,printval,si_symb);
 #endif
-               (*prdata)[prlines-1] = NULL;
            } else {
                /* GF_GPRINT */
 
@@ -2707,41 +2707,41 @@ rrd_graph_options(int argc, char *argv[],image_desc_t *im)
            {"lazy",       no_argument,       0,  'z'},
             {"zoom",       required_argument, 0,  'm'},
            {"no-legend",  no_argument,       0,  'g'},
-           {"alt-y-grid", no_argument,       0,   257 },
-           {"alt-autoscale", no_argument,    0,   258 },
-           {"alt-autoscale-max", no_argument,    0,   259 },
-           {"units-exponent",required_argument, 0,  260},
-           {"step",       required_argument, 0,   261},
-           {"no-gridfit", no_argument,       0,   262},
+           {"alt-y-grid", no_argument,       0,  'Y'},
+           {"alt-autoscale", no_argument,    0,  'A'},
+           {"alt-autoscale-max", no_argument, 0, 'M'},
+           {"units-exponent",required_argument, 0, 'X'},
+           {"step",       required_argument, 0,    'S'},
+           {"no-gridfit", no_argument,       0,   'N'},
            {0,0,0,0}};
        int option_index = 0;
        int opt;
 
 
        opt = getopt_long(argc, argv, 
-                         "s:e:x:y:v:w:h:iu:l:rb:oc:n:m:t:f:a:z:g",
+                         "s:e:x:y:v:w:h:iu:l:rb:oc:n:m:t:f:a:zgYAMX:S:N",
                          long_options, &option_index);
 
        if (opt == EOF)
            break;
        
        switch(opt) {
-       case 257:
+       case 'Y':
            im->extra_flags |= ALTYGRID;
            break;
-       case 258:
+       case 'A':
            im->extra_flags |= ALTAUTOSCALE;
            break;
-       case 259:
+       case 'M':
            im->extra_flags |= ALTAUTOSCALE_MAX;
            break;
        case 'g':
            im->extra_flags |= NOLEGEND;
            break;
-       case 260:
+       case 'X':
            im->unitsexponent = atoi(optarg);
            break;
-       case 261:
+       case 'S':
            im->step =  atoi(optarg);
            break;
        case 262:
@@ -3064,9 +3064,9 @@ int bad_format(char *fmt) {
                  if (*ptr == '.') ptr++;
                  while (*ptr >= '0' && *ptr <= '9') ptr++;
   
-                 /* Either 'le' or 'lf' must follow here */
+                 /* Either 'le', 'lf' or 'lg' must follow here */
                  if (*ptr++ != 'l') return 1;
-                 if (*ptr == 'e' || *ptr == 'f') ptr++;
+                 if (*ptr == 'e' || *ptr == 'f' || *ptr == 'g') ptr++;
                  else return 1;
                  n++;
             }
@@ -3204,6 +3204,7 @@ printf("DEBUG: start == %lu, end == %lu, %lu steps\n"
                field = (steps-1)*dst->vf.param/100;
                dst->vf.val  = array[field];
                dst->vf.when = 0;       /* no time component */
+               free(array);
 #if 0
 for(step=0;step<steps;step++)
 printf("DEBUG: %3li:%10.2f %c\n",step,array[step],step==field?'*':' ');