X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=bindings%2Fperl-shared%2FRRDs.xs;h=830a779d5f0f090c395cfeed3c0a445aa0b8b4f2;hp=5eeba18444e55609674100e660ae4b780ad35d55;hb=b0a526a0bcba4a883645db7c228f905c3906be77;hpb=ea8c705cc27ef33dee2cc6561ed51e16ddc5d0a9 diff --git a/bindings/perl-shared/RRDs.xs b/bindings/perl-shared/RRDs.xs index 5eeba18..830a779 100644 --- a/bindings/perl-shared/RRDs.xs +++ b/bindings/perl-shared/RRDs.xs @@ -24,18 +24,14 @@ extern "C" { */ #define VERSION_SAVED VERSION #undef VERSION +#ifndef WIN32 #include "../../rrd_config.h" +#endif #include "../../src/rrd_tool.h" #undef VERSION #define VERSION VERSION_SAVED #undef VERSION_SAVED -/* perl 5.004 compatibility */ -#if PERLPATCHLEVEL < 5 -#define PL_sv_undef sv_undef -#endif - - #define rrdcode(name) \ argv = (char **) malloc((items+1)*sizeof(char *));\ argv[0] = "dummy";\ @@ -78,14 +74,14 @@ extern "C" { free(argv); \ if (rrd_test_error()) XSRETURN_UNDEF; \ hash = newHV(); \ + save=data; \ while (data) { \ - save=data; \ /* the newSV will get copied by hv so we create it as a mortal \ to make sure it does not keep hanging round after the fact */ \ switch (data->type) { \ case RD_I_VAL: \ if (isnan(data->value.u_val)) \ - hvs(&PL_sv_undef); \ + hvs(newSV(0)); \ else \ hvs(newSVnv(data->value.u_val)); \ break; \ @@ -97,18 +93,14 @@ extern "C" { break; \ case RD_I_STR: \ hvs(newSVpv(data->value.u_str,0)); \ - rrd_freemem(data->value.u_str); \ break; \ case RD_I_BLO: \ hvs(newSVpv(data->value.u_blo.ptr,data->value.u_blo.size)); \ - rrd_freemem(data->value.u_blo.ptr); \ break; \ } \ - rrd_freemem(data->key); \ data = data->next; \ - rrd_freemem(save); \ - } \ - rrd_freemem(data); \ + } \ + rrd_info_free(save); \ RETVAL = newRV_noinc((SV*)hash); /* @@ -130,7 +122,6 @@ BOOT: #ifdef MUST_DISABLE_FPMASK fpsetmask(0); #endif - SV* rrd_error() @@ -140,7 +131,6 @@ rrd_error() OUTPUT: RETVAL - int rrd_last(...) PROTOTYPE: @ @@ -163,7 +153,6 @@ rrd_first(...) OUTPUT: RETVAL - int rrd_create(...) PROTOTYPE: @ @@ -176,7 +165,6 @@ rrd_create(...) OUTPUT: RETVAL - int rrd_update(...) PROTOTYPE: @ @@ -189,7 +177,6 @@ rrd_update(...) OUTPUT: RETVAL - int rrd_tune(...) PROTOTYPE: @ @@ -202,8 +189,7 @@ rrd_tune(...) OUTPUT: RETVAL - -void +SV * rrd_graph(...) PROTOTYPE: @ PREINIT: @@ -249,7 +235,7 @@ rrd_graph(...) PUSHs(sv_2mortal(newSViv(xsize))); PUSHs(sv_2mortal(newSViv(ysize))); -void +SV * rrd_fetch(...) PROTOTYPE: @ PREINIT: @@ -290,7 +276,7 @@ rrd_fetch(...) for (i = start+step; i <= end; i += step){ line = newAV(); for (ii = 0; ii < ds_cnt; ii++){ - av_push(line,(isnan(*datai) ? &PL_sv_undef : newSVnv(*datai))); + av_push(line,(isnan(*datai) ? newSV(0) : newSVnv(*datai))); datai++; } av_push(retar,newRV_noinc((SV*)line)); @@ -302,25 +288,25 @@ rrd_fetch(...) PUSHs(sv_2mortal(newRV_noinc((SV*)names))); PUSHs(sv_2mortal(newRV_noinc((SV*)retar))); -void +SV * rrd_times(start, end) char *start char *end PREINIT: - struct rrd_time_value start_tv, end_tv; + rrd_time_value_t start_tv, end_tv; char *parsetime_error = NULL; time_t start_tmp, end_tmp; PPCODE: rrd_clear_error(); - if( (parsetime_error = parsetime( start, &start_tv))) { - rrd_set_error( "start time: %s", parsetime_error); + if ((parsetime_error = rrd_parsetime(start, &start_tv))) { + rrd_set_error("start time: %s", parsetime_error); XSRETURN_UNDEF; } - if( (parsetime_error = parsetime( end, &end_tv))) { - rrd_set_error( "end time: %s", parsetime_error); + if ((parsetime_error = rrd_parsetime(end, &end_tv))) { + rrd_set_error("end time: %s", parsetime_error); XSRETURN_UNDEF; } - if( proc_start_end( &start_tv, &end_tv, &start_tmp, &end_tmp) == -1) { + if (rrd_proc_start_end(&start_tv, &end_tv, &start_tmp, &end_tmp) == -1) { XSRETURN_UNDEF; } EXTEND(sp,2); @@ -370,7 +356,7 @@ rrd_xport(...) for (i = start+step; i <= end; i += step){ line = newAV(); for (ii = 0; ii < col_cnt; ii++){ - av_push(line,(isnan(*ptr) ? &PL_sv_undef : newSVnv(*ptr))); + av_push(line,(isnan(*ptr) ? newSV(0) : newSVnv(*ptr))); ptr++; } av_push(retar,newRV_noinc((SV*)line)); @@ -389,7 +375,7 @@ SV* rrd_info(...) PROTOTYPE: @ PREINIT: - info_t *data,*save; + rrd_info_t *data,*save; int i; char **argv; HV *hash; @@ -402,7 +388,7 @@ SV* rrd_updatev(...) PROTOTYPE: @ PREINIT: - info_t *data,*save; + rrd_info_t *data,*save; int i; char **argv; HV *hash; @@ -415,7 +401,7 @@ SV* rrd_graphv(...) PROTOTYPE: @ PREINIT: - info_t *data,*save; + rrd_info_t *data,*save; int i; char **argv; HV *hash; @@ -448,3 +434,16 @@ rrd_restore(...) OUTPUT: RETVAL +#ifndef WIN32 +int +rrd_flushcached(...) + PROTOTYPE: @ + PREINIT: + int i; + char **argv; + CODE: + rrdcode(rrd_flushcached); + OUTPUT: + RETVAL + +#endif