From 07c45ee5163cc2c621c356f437f1bf584f10c14c Mon Sep 17 00:00:00 2001 From: oetiker Date: Thu, 15 Jan 2004 18:14:02 +0000 Subject: [PATCH] addition of RRDs::times -- Christophe Kalt git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk/program@230 a5681a0c-68f1-0310-ab6d-d61299d08faa --- bindings/perl-shared/RRDs.pm | 13 +++++++++++-- bindings/perl-shared/RRDs.xs | 24 ++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/bindings/perl-shared/RRDs.pm b/bindings/perl-shared/RRDs.pm index fbe4478..6ee4b3d 100644 --- a/bindings/perl-shared/RRDs.pm +++ b/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/bindings/perl-shared/RRDs.xs b/bindings/perl-shared/RRDs.xs index e2a0c8f..da77457 100644 --- a/bindings/perl-shared/RRDs.xs +++ b/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(...) -- 2.11.0