reset optind opterr inside the function calls ...
[rrdtool.git] / bindings / perl-shared / RRDs.xs
index e2a0c8f..f7e5360 100644 (file)
@@ -29,7 +29,6 @@ extern "C" {
                    argv[i+1] = (char *) malloc((strlen(handle)+1)*sizeof(char)); \
                    strcpy(argv[i+1],handle); \
                } \
-               optind=0; opterr=0; \
                rrd_clear_error();\
                RETVAL=name(items+1,argv); \
                for (i=0; i < items; i++) {\
@@ -53,7 +52,6 @@ extern "C" {
                    argv[i+1] = (char *) malloc((strlen(handle)+1)*sizeof(char)); \
                    strcpy(argv[i+1],handle); \
                } \
-               optind=0; opterr=0; \
                 rrd_clear_error(); \
                 data=name(items+1, argv); \
                 for (i=0; i < items; i++) { \
@@ -132,6 +130,17 @@ rrd_last(...)
       OUTPUT:
             RETVAL
 
+int
+rrd_first(...)
+      PROTOTYPE: @
+      PREINIT:
+      int i;
+      char **argv;
+      CODE:
+              rrdcode(rrd_first);
+      OUTPUT:
+            RETVAL
+
 
 int
 rrd_create(...)
@@ -178,6 +187,7 @@ rrd_graph(...)
        PREINIT:
        char **calcpr=NULL;
        int i,xsize,ysize;
+       double ymin,ymax;
        char **argv;
        AV *retar;
        PPCODE:
@@ -191,9 +201,8 @@ rrd_graph(...)
                    argv[i+1] = (char *) malloc((strlen(handle)+1)*sizeof(char));
                    strcpy(argv[i+1],handle);
                }
-               optind=0; opterr=0; 
                rrd_clear_error();
-               rrd_graph(items+1,argv,&calcpr,&xsize,&ysize,NULL); 
+               rrd_graph(items+1,argv,&calcpr,&xsize,&ysize,NULL,&ymin,&ymax); 
                for (i=0; i < items; i++) {
                    free(argv[i+1]);
                }
@@ -239,7 +248,6 @@ rrd_fetch(...)
                    argv[i+1] = (char *) malloc((strlen(handle)+1)*sizeof(char));
                    strcpy(argv[i+1],handle);
                }
-               optind=0; opterr=0; 
                rrd_clear_error();
                rrd_fetch(items+1,argv,&start,&end,&step,&ds_cnt,&ds_namv,&data); 
                for (i=0; i < items; i++) {
@@ -272,6 +280,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  rrd_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(...)
@@ -294,7 +326,6 @@ rrd_xport(...)
                    argv[i+1] = (char *) malloc((strlen(handle)+1)*sizeof(char));
                    strcpy(argv[i+1],handle);
                }
-               optind=0; opterr=0; 
                rrd_clear_error();
                rrd_xport(items+1,argv,&xsize,&start,&end,&step,&col_cnt,&legend_v,&data); 
                for (i=0; i < items; i++) {
@@ -358,3 +389,27 @@ rrd_updatev(...)
     OUTPUT:
           RETVAL
 
+int
+rrd_dump(...)
+       PROTOTYPE: @
+       PREINIT:
+        int i;
+       char **argv;
+       CODE:
+               rrdcode(rrd_dump);
+                       RETVAL = 1;
+       OUTPUT:
+               RETVAL
+
+int
+rrd_restore(...)
+       PROTOTYPE: @
+       PREINIT:
+        int i;
+       char **argv;
+       CODE:
+               rrdcode(rrd_restore);
+                       RETVAL = 1;
+       OUTPUT:
+               RETVAL
+