X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_graph.c;h=8019d7fc221402f6e67960ac639a42b3d13f699b;hb=728d3d0bb29ba4a73b9c7c19f03e7e4ba687be84;hp=300fdbe784bec805c635c0172631c5869dd217ec;hpb=35354e059a77479a7a135c1e4fc71c76523fd7c4;p=rrdtool.git diff --git a/src/rrd_graph.c b/src/rrd_graph.c index 300fdbe..8019d7f 100644 --- a/src/rrd_graph.c +++ b/src/rrd_graph.c @@ -1,5 +1,5 @@ /**************************************************************************** - * RRDtool 1.3.0 Copyright by Tobi Oetiker, 1997-2008 + * RRDtool 1.3.1 Copyright by Tobi Oetiker, 1997-2008 **************************************************************************** * rrd__graph.c produce graphs from data in rrdfiles ****************************************************************************/ @@ -2950,9 +2950,14 @@ int graph_paint( rrd_infoval_t info; 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 we want and can be lazy ... quit now */ + if (lazy) { + 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); 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,6 +3563,10 @@ int rrd_graph( walker = walker->next; } walker = grinfo; + *xsize = 0; + *ysize = 0; + *ymin = 0; + *ymax = 0; while (walker) { if (strcmp(walker->key, "image_width") == 0) { *xsize = walker->value.u_int; @@ -3656,10 +3667,17 @@ rrd_info_t *rrd_graph_v( if (im.imginfo) { rrd_infoval_t info; + char *filename; + filename = im.graphfile + strlen(im.graphfile); + while (filename > im.graphfile) { + if (*(filename - 1) == '/' || *(filename - 1) == '\\') + break; + filename--; + } info.u_str = sprintf_alloc(im.imginfo, - im.graphfile, + filename, (long) (im.zoom * im.ximg), (long) (im.zoom * im.yimg)); grinfo_push(&im, sprintf_alloc("image_info"), RD_I_STR, info); @@ -4437,9 +4455,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