merged updated win32 port by Larry Adams and the cacti team
[rrdtool.git] / bindings / perl-shared / RRDs.xs
index bf9a612..7c75f02 100644 (file)
@@ -24,14 +24,16 @@ 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 
+#ifndef PL_sv_undef
 #define PL_sv_undef sv_undef
 #endif
 
@@ -78,8 +80,8 @@ 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) { \
@@ -97,18 +99,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 +128,6 @@ BOOT:
 #ifdef MUST_DISABLE_FPMASK
        fpsetmask(0);
 #endif 
-       
 
 SV*
 rrd_error()
@@ -140,7 +137,6 @@ rrd_error()
        OUTPUT:
                RETVAL
 
-       
 int
 rrd_last(...)
       PROTOTYPE: @
@@ -163,7 +159,6 @@ rrd_first(...)
       OUTPUT:
             RETVAL
 
-
 int
 rrd_create(...)
        PROTOTYPE: @    
@@ -176,7 +171,6 @@ rrd_create(...)
         OUTPUT:
                RETVAL
 
-
 int
 rrd_update(...)
        PROTOTYPE: @    
@@ -189,7 +183,6 @@ rrd_update(...)
        OUTPUT:
                RETVAL
 
-
 int
 rrd_tune(...)
        PROTOTYPE: @    
@@ -202,7 +195,6 @@ rrd_tune(...)
        OUTPUT:
                RETVAL
 
-
 SV *
 rrd_graph(...)
        PROTOTYPE: @    
@@ -448,3 +440,16 @@ rrd_restore(...)
        OUTPUT:
                RETVAL
 
+#ifndef WIN32
+int
+rrd_flushcached(...)
+       PROTOTYPE: @
+       PREINIT:
+       int i;
+       char **argv;
+       CODE:
+               rrdcode(rrd_flushcached);
+       OUTPUT:
+               RETVAL
+
+#endif