From: oetiker Date: Thu, 15 Jan 2004 18:14:02 +0000 (+0000) Subject: addition of RRDs::times -- Christophe Kalt X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=d414c617e540334a6f48c1d90f8c5b866d463f4e;p=rrdtool-all.git addition of RRDs::times -- Christophe Kalt git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk@230 a5681a0c-68f1-0310-ab6d-d61299d08faa --- diff --git a/program/bindings/perl-shared/RRDs.pm b/program/bindings/perl-shared/RRDs.pm index fbe44784..6ee4b3d3 100644 --- a/program/bindings/perl-shared/RRDs.pm +++ b/program/bindings/perl-shared/RRDs.pm @@ -29,6 +29,7 @@ RRDs - Access rrdtool as a shared module RRDs::graph ... RRDs::fetch ... RRDs::tune ... + RRDs::times(start, end) =head1 DESCRIPTION @@ -51,6 +52,11 @@ Note that is also valid. +The RRDs::times function takes two parameters: a "start" and "end" time. +These should be specified in the U format +used by rrdtool. See the U documentation for a detailed +explanation on how to specify time. + =head2 Error Handling The RRD functions will not abort your program even when they can not make @@ -67,8 +73,8 @@ then the previous function has completed its task successfully. =head2 Return Values -The functions RRDs::last, RRDs::graph, RRDs::info and RRDs::fetch return their -findings. +The functions RRDs::last, RRDs::graph, RRDs::info, RRDs::fetch and RRDs::times +return their findings. B returns a single INTEGER representing the last update time. @@ -114,6 +120,9 @@ integers, a pointer to an array and a pointer to a array of pointers. print "\n"; } +B returns two integers which are the number of seconds since +epoch (1970-01-01) for the supplied "start" and "end" arguments, respectively. + See the examples directory for more ways to use this extension. =head1 NOTE diff --git a/program/bindings/perl-shared/RRDs.xs b/program/bindings/perl-shared/RRDs.xs index e2a0c8f8..da77457f 100644 --- a/program/bindings/perl-shared/RRDs.xs +++ b/program/bindings/perl-shared/RRDs.xs @@ -272,6 +272,30 @@ rrd_fetch(...) PUSHs(sv_2mortal(newRV_noinc((SV*)names))); PUSHs(sv_2mortal(newRV_noinc((SV*)retar))); +void +rrd_times(start, end) + char *start + char *end + PREINIT: + struct time_value 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); + XSRETURN_UNDEF; + } + if( (parsetime_error = 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) { + XSRETURN_UNDEF; + } + EXTEND(sp,2); + PUSHs(sv_2mortal(newSVuv(start_tmp))); + PUSHs(sv_2mortal(newSVuv(end_tmp))); int rrd_xport(...)