X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_graph.c;h=594c9f6df525375f6dda0d5deea4d780c21172c2;hb=78dc4685a152943c73fcd9cadb8f6d8ecc6d1d79;hp=eb909522e50635ba19c2ff535afeb2d19a15b553;hpb=4493487acbf098efd1aa166fc8ab05fce968dbe0;p=rrdtool.git diff --git a/src/rrd_graph.c b/src/rrd_graph.c index eb90952..594c9f6 100644 --- a/src/rrd_graph.c +++ b/src/rrd_graph.c @@ -6,11 +6,16 @@ #include -#include + +/* for basename */ +#ifdef HAVE_LIBGEN_H +# include +#eles +#include "plbasename.h" +#endif #ifdef WIN32 #include "strftime.h" -#include "plbasename.h" #endif #include "rrd_tool.h" @@ -3200,14 +3205,6 @@ int graph_paint( // PangoFontMap *font_map = pango_cairo_font_map_get_default(); - /* 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; @@ -3223,7 +3220,8 @@ int graph_paint( if (i < 0) return -1; - if ((i == 0) || lazy) + /* if we want and can be lazy ... quit now */ + if (i == 0) return 0; /************************************************************** @@ -3250,6 +3248,10 @@ int graph_paint( info.u_cnt = im->end; grinfo_push(im, sprintf_alloc("graph_end"), RD_I_CNT, info); + /* if we want and can be lazy ... quit now */ + if (lazy) + return 0; + /* get actual drawing data and find min and max values */ if (data_proc(im) == -1) return -1; @@ -3267,6 +3269,7 @@ int graph_paint( info.u_val = im->maxval; grinfo_push(im, sprintf_alloc("value_max"), RD_I_VAL, info); + if (!calc_horizontal_grid(im)) return -1; /* reset precalc */ @@ -3844,8 +3847,11 @@ int rrd_graph( (*prdata)[prlines] = NULL; strcpy((*prdata)[prlines - 1], walker->value.u_str); } else if (strcmp(walker->key, "image") == 0) { - fwrite(walker->value.u_blo.ptr, walker->value.u_blo.size, 1, - (stream ? stream : stdout)); + if ( fwrite(walker->value.u_blo.ptr, walker->value.u_blo.size, 1, + (stream ? stream : stdout)) == 0 && ferror(stream ? stream : stdout)){ + rrd_set_error("writing image"); + return 0; + } } /* skip anything else */ walker = walker->next;