****************************************************************************
* rrd__graph.c produce graphs from data in rrdfiles
****************************************************************************/
****************************************************************************
* rrd__graph.c produce graphs from data in rrdfiles
****************************************************************************/
Xspacing =10, Yspacing =10;
if (im->extra_flags & ONLY_GRAPH) {
Xspacing =10, Yspacing =10;
if (im->extra_flags & ONLY_GRAPH) {
Xvertical = im->text_prop[TEXT_PROP_UNIT].size *2;
Yvertical = gfx_get_text_width(im->canvas, 0,
im->text_prop[TEXT_PROP_UNIT].font,
im->text_prop[TEXT_PROP_UNIT].size,
im->tabwidth,im->ylegend, 0);
Xvertical = im->text_prop[TEXT_PROP_UNIT].size *2;
Yvertical = gfx_get_text_width(im->canvas, 0,
im->text_prop[TEXT_PROP_UNIT].font,
im->text_prop[TEXT_PROP_UNIT].size,
im->tabwidth,im->ylegend, 0);
if (im->title[0] != '\0') {
/* The title is placed "inbetween" two text lines so it
** automatically has some vertical spacing. The horizontal
if (im->title[0] != '\0') {
/* The title is placed "inbetween" two text lines so it
** automatically has some vertical spacing. The horizontal
if (strcmp(im->graphfile,"-")==0) {
fo = im->graphhandle ? im->graphhandle : stdout;
if (strcmp(im->graphfile,"-")==0) {
fo = im->graphhandle ? im->graphhandle : stdout;
/* Change translation mode for stdout to BINARY */
_setmode( _fileno( fo ), O_BINARY );
#endif
/* Change translation mode for stdout to BINARY */
_setmode( _fileno( fo ), O_BINARY );
#endif
- strcpy(rrd_win_default_font,windir);
+ strncpy(rrd_win_default_font,windir,999);
+ rrd_win_default_font[999] = '\0';
- for(i=0;i<DIM(text_prop);i++)
- strcpy(text_prop[i].font,rrd_win_default_font);
- }
+ for(i=0;i<DIM(text_prop);i++){
+ strncpy(text_prop[i].font,rrd_win_default_font,sizeof(text_prop[i].font)-1);
+ text_prop[i].font[sizeof(text_prop[i].font)-1] = '\0';
+ }
+ {
+ char *deffont;
+ deffont = getenv("RRD_DEFAULT_FONT");
+ /* %windir% is something like D:\windows or C:\winnt */
+ if (deffont != NULL) {
+ for(i=0;i<DIM(text_prop);i++){
+ strncpy(text_prop[i].font,deffont,sizeof(text_prop[i].font)-1);
+ text_prop[i].font[sizeof(text_prop[i].font)-1] = '\0';
+ }
+ }
+ }
for(i=0;i<DIM(text_prop);i++){
im->text_prop[i].size = text_prop[i].size;
strcpy(im->text_prop[i].font,text_prop[i].font);
for(i=0;i<DIM(text_prop);i++){
im->text_prop[i].size = text_prop[i].size;
strcpy(im->text_prop[i].font,text_prop[i].font);
&im->xlab_user.precis,
&stroff) == 7 && stroff != 0){
strncpy(im->xlab_form, optarg+stroff, sizeof(im->xlab_form) - 1);
&im->xlab_user.precis,
&stroff) == 7 && stroff != 0){
strncpy(im->xlab_form, optarg+stroff, sizeof(im->xlab_form) - 1);
if((int)(im->xlab_user.gridtm = tmt_conv(scan_gtm)) == -1){
rrd_set_error("unknown keyword %s",scan_gtm);
return;
if((int)(im->xlab_user.gridtm = tmt_conv(scan_gtm)) == -1){
rrd_set_error("unknown keyword %s",scan_gtm);
return;