From 8a7f59d70db774c55fbc950003b1140ec829fa70 Mon Sep 17 00:00:00 2001 From: oetiker Date: Sun, 29 Jun 2008 13:57:00 +0000 Subject: [PATCH] make sure image-with and image-height get returned even when rrdtool is called with --lazy as reported in bug #163 git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk@1439 a5681a0c-68f1-0310-ab6d-d61299d08faa --- program/doc/rrdgraph.pod | 6 ++++-- program/src/rrd_graph.c | 25 ++++++++++++++++++------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/program/doc/rrdgraph.pod b/program/doc/rrdgraph.pod index 048171a3..092e37fc 100644 --- a/program/doc/rrdgraph.pod +++ b/program/doc/rrdgraph.pod @@ -262,8 +262,10 @@ Note that for linear graphs, SI notation is used by default. [B<-z>|B<--lazy>] -Only generate the graph if the current graph is out of date or not -existent. +Only generate the graph if the current graph is out of date or not existent. +Note, that only the image size will be returned, if you run with lazy even +when using graphv. + [B<-f>|B<--imginfo> I] diff --git a/program/src/rrd_graph.c b/program/src/rrd_graph.c index 300fdbe7..e671f786 100644 --- a/program/src/rrd_graph.c +++ b/program/src/rrd_graph.c @@ -2951,8 +2951,13 @@ int graph_paint( PangoFontMap *font_map = pango_cairo_font_map_get_default(); /* if we are lazy and there is nothing to PRINT ... quit now */ - if (lazy && im->prt_c == 0) + if (lazy && im->prt_c == 0) { + info.u_cnt = im->ximg; + grinfo_push(im, sprintf_alloc("image_width"), RD_I_CNT, info); + info.u_cnt = im->yimg; + grinfo_push(im, sprintf_alloc("image_height"), RD_I_CNT, info); return 0; + } /* pull the data from the rrd files ... */ if (data_fetch(im) == -1) return -1; @@ -2961,14 +2966,16 @@ int graph_paint( return -1; /* calculate and PRINT and GPRINT definitions. We have to do it at * this point because it will affect the length of the legends - * if there are no graph elements we stop here ... + * if there are no graph elements (i==0) we stop here ... * if we are lazy, try to quit ... */ - i = print_calc(im); + i = print_calc(im); if (i < 0) return -1; + if ((i == 0) || lazy) return 0; + /************************************************************** *** Calculating sizes and locations became a bit confusing *** *** so I moved this into a separate function. *** @@ -3556,7 +3563,11 @@ int rrd_graph( walker = walker->next; } walker = grinfo; - while (walker) { + *xsize = 0; + *ysize = 0; + *ymin = 0; + *ymax = 0; + while (walker) { if (strcmp(walker->key, "image_width") == 0) { *xsize = walker->value.u_int; } else if (strcmp(walker->key, "image_height") == 0) { @@ -4437,9 +4448,9 @@ int vdef_calc( src = &im->gdes[dst->vidx]; data = src->data + src->ds; end = - src->end_orig % src->step == - 0 ? src->end_orig : (src->end_orig + src->step - - src->end_orig % src->step); + src->end_orig % (long)src->step == + 0 ? src->end_orig : (src->end_orig + (long)src->step - + src->end_orig % (long)src->step); steps = (end - src->start) / src->step; #if 0 -- 2.30.2