pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/databases/rrdtool



Module Name:    pkgsrc
Committed By:   markd
Date:           Tue Jun 18 11:48:40 UTC 2024

Modified Files:
        pkgsrc/databases/rrdtool: distinfo
Added Files:
        pkgsrc/databases/rrdtool/patches: patch-configure
            patch-const-argv.patch

Log Message:
rrdtool: fix build with gcc14 - from fedora


To generate a diff of this commit:
cvs rdiff -u -r1.60 -r1.61 pkgsrc/databases/rrdtool/distinfo
cvs rdiff -u -r0 -r1.1 pkgsrc/databases/rrdtool/patches/patch-configure \
    pkgsrc/databases/rrdtool/patches/patch-const-argv.patch

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/databases/rrdtool/distinfo
diff -u pkgsrc/databases/rrdtool/distinfo:1.60 pkgsrc/databases/rrdtool/distinfo:1.61
--- pkgsrc/databases/rrdtool/distinfo:1.60      Fri Nov 25 10:41:15 2022
+++ pkgsrc/databases/rrdtool/distinfo   Tue Jun 18 11:48:40 2024
@@ -1,10 +1,12 @@
-$NetBSD: distinfo,v 1.60 2022/11/25 10:41:15 adam Exp $
+$NetBSD: distinfo,v 1.61 2024/06/18 11:48:40 markd Exp $
 
 BLAKE2s (rrdtool-1.8.0.tar.gz) = d0f696e1f608a8938f36840c6cf6aa00624f68877fbcdd339b55c39e475bc613
 SHA512 (rrdtool-1.8.0.tar.gz) = 8ae6f94d119e8d0e1ba7f2d0738f1ba008a4880d1022f1c0c5436f662d961fceec5c42e01c241493ece3d6f55c60fd7d1d264f93e678f3cf1251201dcde027c1
 Size (rrdtool-1.8.0.tar.gz) = 2955398 bytes
 SHA1 (patch-bindings_perl-shared_Makefile.PL) = 839b4474e89b59002d1629425c5839e4df3b8f5c
 SHA1 (patch-bindings_tcl_Makefile.in) = 0d2515d57ca6a541d1647308d55587046a0a80e8
+SHA1 (patch-configure) = faa3f68ccc6e564e363a63b0468af0c33218e054
+SHA1 (patch-const-argv.patch) = 6a0c081b1df3bd93eae91d15492e1639cb14d628
 SHA1 (patch-doc_Makefile.in) = 749309b6532fff991a89c317a57e24f91a2804d1
 SHA1 (patch-examples_Makefile.in) = 985e90539340c8bac9788e897c4b7b899fe9f6b1
 SHA1 (patch-examples_rrdcached_Makefile.in) = be06ac61b314e225d62f9f27da28c24fb6a1b84b

Added files:

Index: pkgsrc/databases/rrdtool/patches/patch-configure
diff -u /dev/null pkgsrc/databases/rrdtool/patches/patch-configure:1.1
--- /dev/null   Tue Jun 18 11:48:40 2024
+++ pkgsrc/databases/rrdtool/patches/patch-configure    Tue Jun 18 11:48:40 2024
@@ -0,0 +1,27 @@
+$NetBSD: patch-configure,v 1.1 2024/06/18 11:48:40 markd Exp $
+
+    Fixes:
+    
+    conftest.c:124:33: error: implicitly declaring library function 'exit'
+    with type 'void (int) __attribute__((noreturn))'
+
+From fedora.
+
+--- configure.orig     2022-03-14 14:29:38.000000000 +0000
++++ configure
+@@ -19223,6 +19223,7 @@ else
+   gq_cv_have_tm_gmtoff=no
+                 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
++#include <stdlib.h>
+ #include <time.h>
+                                 #include <$ac_cv_struct_tm>
+ 
+@@ -19255,6 +19256,7 @@ else
+   gq_cv_have___tm_gmtoff=no
+                 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
++#include <stdlib.h>
+ #include <time.h>
+                                 #include <$ac_cv_struct_tm>
+ 
Index: pkgsrc/databases/rrdtool/patches/patch-const-argv.patch
diff -u /dev/null pkgsrc/databases/rrdtool/patches/patch-const-argv.patch:1.1
--- /dev/null   Tue Jun 18 11:48:40 2024
+++ pkgsrc/databases/rrdtool/patches/patch-const-argv.patch     Tue Jun 18 11:48:40 2024
@@ -0,0 +1,1512 @@
+$NetBSD: patch-const-argv.patch,v 1.1 2024/06/18 11:48:40 markd Exp $
+
+const argv patches from Fedora.
+
+diff --git a/bindings/lua/rrdlua.c b/bindings/lua/rrdlua.c
+index d1a7006..2095c3b 100644
+--- bindings/lua/rrdlua.c
++++ bindings/lua/rrdlua.c
+@@ -37,8 +37,8 @@
+ extern void rrd_freemem(void *mem);
+ 
+ extern int luaopen_rrd (lua_State * L);
+-typedef int (*RRD_FUNCTION)(int, char **);
+-typedef rrd_info_t *(RRD_FUNCTION_V)(int, char **);
++typedef int (*RRD_FUNCTION)(int, const char **);
++typedef rrd_info_t *(RRD_FUNCTION_V)(int, const char **);
+ 
+ /**********************************************************/
+ 
+@@ -49,9 +49,9 @@ static void reset_rrd_state(void)
+     rrd_clear_error();
+ }
+ 
+-static char **make_argv(const char *cmd, lua_State * L)
++static const char **make_argv(const char *cmd, lua_State * L)
+ {
+-  char **argv;
++  const char **argv;
+   int i;
+   int argc = lua_gettop(L) + 1;
+ 
+@@ -60,13 +60,12 @@ static char **make_argv(const char *cmd, lua_State * L)
+     luaL_error(L, "Can't allocate memory for arguments array", cmd);
+ 
+   /* fprintf(stderr, "Args:\n"); */
+-  argv[0] = (char *) cmd; /* Dummy arg. Cast to (char *) because rrd */
+-                          /* functions don't expect (const * char)   */
++  argv[0] = cmd;
+   /* fprintf(stderr, "%s\n", argv[0]); */
+   for (i=1; i<argc; i++) {
+     /* accepts string or number */
+     if (lua_isstring(L, i) || lua_isnumber(L, i)) {
+-      if (!(argv[i] = (char *) lua_tostring (L, i))) {
++      if (!(argv[i] = lua_tostring (L, i))) {
+         /* raise an error and never return */
+         luaL_error(L, "%s - error duplicating string area for arg #%d",
+                    cmd, i);
+@@ -84,7 +83,7 @@ static char **make_argv(const char *cmd, lua_State * L)
+ static int
+ rrd_common_call (lua_State *L, const char *cmd, RRD_FUNCTION rrd_function)
+ {
+-  char **argv;
++  const char **argv;
+   int argc = lua_gettop(L) + 1;
+ 
+   argv = make_argv(cmd, L);
+@@ -99,7 +98,7 @@ rrd_common_call (lua_State *L, const char *cmd, RRD_FUNCTION rrd_function)
+ static int
+ lua_rrd_infocall(lua_State *L, const char *cmd, RRD_FUNCTION_V rrd_function)
+ {
+-  char **argv;
++  const char **argv;
+   rrd_info_t *p, *data;
+   int argc = lua_gettop(L) + 1;
+ 
+@@ -197,7 +196,7 @@ static int
+ lua_rrd_fetch (lua_State * L)
+ {
+   int argc = lua_gettop(L) + 1;
+-  char **argv = make_argv("fetch", L);
++  const char **argv = make_argv("fetch", L);
+   unsigned long i, j, step, ds_cnt;
+   rrd_value_t *data, *p;
+   char    **names;
+@@ -246,7 +245,7 @@ lua_rrd_first (lua_State * L)
+ {
+   time_t first;
+   int argc = lua_gettop(L) + 1;
+-  char **argv = make_argv("first", L);
++  const char **argv = make_argv("first", L);
+   reset_rrd_state();
+   first = rrd_first(argc, argv);
+   free(argv);
+@@ -260,7 +259,7 @@ lua_rrd_last (lua_State * L)
+ {
+   time_t last;
+   int argc = lua_gettop(L) + 1;
+-  char **argv = make_argv("last", L);
++  const char **argv = make_argv("last", L);
+   reset_rrd_state();
+   last = rrd_last(argc, argv);
+   free(argv);
+@@ -275,7 +274,7 @@ static int
+ lua_rrd_graph (lua_State * L)
+ {
+   int argc = lua_gettop(L) + 1;
+-  char **argv = make_argv("last", L);
++  const char **argv = make_argv("last", L);
+   char **calcpr;
+   int i, xsize, ysize;
+   double ymin, ymax;
+diff --git a/bindings/perl-shared/RRDs.xs b/bindings/perl-shared/RRDs.xs
+index e233b58..edce76e 100644
+--- bindings/perl-shared/RRDs.xs
++++ bindings/perl-shared/RRDs.xs
+@@ -44,11 +44,11 @@ extern "C" {
+                   strcpy(argv[i+1],handle); \
+               } \
+               rrd_clear_error();\
+-              RETVAL=name(items+1,argv); \
++              RETVAL = name(items + 1, (const char **)argv); \
+               for (i=0; i < items; i++) {\
+-                  free(argv[i+1]);\
++                  free((void *)argv[i+1]);\
+               } \
+-              free(argv);\
++              free((void *)argv);\
+               \
+               if (rrd_test_error()) XSRETURN_UNDEF;
+ 
+@@ -67,11 +67,11 @@ extern "C" {
+                   strcpy(argv[i+1],handle); \
+               } \
+                 rrd_clear_error(); \
+-                data=name(items+1, argv); \
++                data = name(items + 1, (const char **)argv); \
+                 for (i=0; i < items; i++) { \
+-                  free(argv[i+1]); \
++                  free((void *)argv[i+1]); \
+               } \
+-              free(argv); \
++              free((void *)argv); \
+                 if (rrd_test_error()) XSRETURN_UNDEF; \
+                 hash = newHV(); \
+               save=data; \
+@@ -175,7 +175,7 @@ static int rrd_fetch_cb_wrapper(
+     /* Check the eval first */
+     if (SvTRUE(ERRSV)) {
+         rrd_set_error("perl callback failed: %s",SvPV_nolen(ERRSV));
+-        POPs; /* there is undef on top of the stack when there is an error
++        (void)POPs; /* there is undef on top of the stack when there is an error
+                  and call_sv was initiated with G_EVAL|G_SCALER */
+         goto error_out;
+     }
+@@ -383,7 +383,7 @@ rrd_tune(...)
+ 
+ #ifdef HAVE_RRD_GRAPH
+ 
+-SV *
++void
+ rrd_graph(...)
+       PROTOTYPE: @
+       PREINIT:
+@@ -404,7 +404,7 @@ rrd_graph(...)
+                   strcpy(argv[i+1],handle);
+               }
+               rrd_clear_error();
+-              rrd_graph(items+1,argv,&calcpr,&xsize,&ysize,NULL,&ymin,&ymax);
++              rrd_graph(items+1,(const char **)argv,&calcpr,&xsize,&ysize,NULL,&ymin,&ymax);
+               for (i=0; i < items; i++) {
+                   free(argv[i+1]);
+               }
+@@ -433,7 +433,7 @@ rrd_graph(...)
+ 
+ #endif /* HAVE_RRD_GRAPH */
+ 
+-SV *
++void
+ rrd_fetch(...)
+       PROTOTYPE: @
+       PREINIT:
+@@ -455,7 +455,7 @@ rrd_fetch(...)
+                   strcpy(argv[i+1],handle);
+               }
+               rrd_clear_error();
+-              rrd_fetch(items+1,argv,&start,&end,&step,&ds_cnt,&ds_namv,&data);
++              rrd_fetch(items+1,(const char **)argv,&start,&end,&step,&ds_cnt,&ds_namv,&data);
+               for (i=0; i < items; i++) {
+                   free(argv[i+1]);
+               }
+@@ -486,7 +486,7 @@ rrd_fetch(...)
+               PUSHs(sv_2mortal(newRV_noinc((SV*)names)));
+               PUSHs(sv_2mortal(newRV_noinc((SV*)retar)));
+ 
+-SV *
++void
+ rrd_fetch_cb_register(cb)
+     SV * cb
+     CODE:
+@@ -496,7 +496,7 @@ rrd_fetch_cb_register(cb)
+             SvSetSV(rrd_fetch_cb_svptr,cb);
+         rrd_fetch_cb_register(rrd_fetch_cb_wrapper);
+ 
+-SV *
++void
+ rrd_times(start, end)
+         char *start
+         char *end
+@@ -521,7 +521,7 @@ rrd_times(start, end)
+               PUSHs(sv_2mortal(newSVuv(start_tmp)));
+               PUSHs(sv_2mortal(newSVuv(end_tmp)));
+ 
+-int
++void
+ rrd_xport(...)
+       PROTOTYPE: @
+       PREINIT:
+@@ -543,7 +543,7 @@ rrd_xport(...)
+                   strcpy(argv[i+1],handle);
+               }
+               rrd_clear_error();
+-              rrd_xport(items+1,argv,&xsize,&start,&end,&step,&col_cnt,&legend_v,&data);
++              rrd_xport(items+1,(const char **)argv,&xsize,&start,&end,&step,&col_cnt,&legend_v,&data);
+               for (i=0; i < items; i++) {
+                   free(argv[i+1]);
+               }
+@@ -657,7 +657,7 @@ rrd_flushcached(...)
+       OUTPUT:
+               RETVAL
+ 
+-SV*
++void
+ rrd_list(...)
+       PROTOTYPE: @
+       PREINIT:
+@@ -667,7 +667,7 @@ rrd_list(...)
+                 char **argv;
+               AV *list;
+       PPCODE:
+-              argv = (char **) malloc((items+1)*sizeof(char *));
++              argv = malloc((items+1)*sizeof(char *));
+               argv[0] = "dummy";
+ 
+               for (i = 0; i < items; i++) {
+@@ -681,7 +681,7 @@ rrd_list(...)
+ 
+                 rrd_clear_error();
+ 
+-              data = rrd_list(items+1, argv);
++              data = rrd_list(items+1, (const char **)argv);
+ 
+                 for (i=0; i < items; i++) {
+                   free(argv[i+1]);
+diff --git a/bindings/python/rrdtoolmodule.c b/bindings/python/rrdtoolmodule.c
+index 1ab4635..f255e65 100644
+--- bindings/python/rrdtoolmodule.c
++++ bindings/python/rrdtoolmodule.c
+@@ -123,7 +123,7 @@ PyRRD_String_FromCF(enum cf_en cf)
+  * @return Zero if the function succeeds, otherwise -1
+  */
+ static int
+-convert_args(char *command, PyObject *args, char ***rrdtool_argv, int *rrdtool_argc)
++convert_args(char *command, PyObject *args, const char ***rrdtool_argv, int *rrdtool_argc)
+ {
+     PyObject *o, *lo;
+     int i, j, args_count, argv_count, element_count;
+@@ -145,7 +145,7 @@ convert_args(char *command, PyObject *args, char ***rrdtool_argv, int *rrdtool_a
+         }
+     }
+ 
+-    *rrdtool_argv = PyMem_New(char *, element_count + 1);
++    *rrdtool_argv = PyMem_New(const char *, element_count + 1);
+ 
+     if (*rrdtool_argv == NULL)
+         return -1;
+@@ -186,7 +186,7 @@ convert_args(char *command, PyObject *args, char ***rrdtool_argv, int *rrdtool_a
+  * Destroy argument vector.
+  */
+ static void
+-destroy_args(char ***rrdtool_argv)
++destroy_args(const char ***rrdtool_argv)
+ {
+     PyMem_Del(*rrdtool_argv);
+     *rrdtool_argv = NULL;
+@@ -267,7 +267,7 @@ static char _rrdtool_create__doc__[] = "Create a new Round Robin Database.\n\n\
+ static PyObject *
+ _rrdtool_create(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret;
+     int status;
+@@ -306,7 +306,7 @@ static char _rrdtool_dump__doc__[] = "Dump an RRD to XML.\n\n\
+ static PyObject *
+ _rrdtool_dump(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret;
+     int status;
+@@ -345,7 +345,7 @@ static char _rrdtool_update__doc__[] = "Store a new set of values into\
+ static PyObject *
+ _rrdtool_update(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret;
+     int status;
+@@ -378,7 +378,7 @@ static char _rrdtool_updatev__doc__[] = "Store a new set of values into "\
+ static PyObject *
+ _rrdtool_updatev(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret;
+     rrd_info_t *data;
+@@ -419,7 +419,7 @@ static char _rrdtool_fetch__doc__[] = "Fetch data from an RRD.\n\n\
+ static PyObject *
+ _rrdtool_fetch(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret, *range_tup, *dsnam_tup, *data_list, *t;
+     rrd_value_t *data, *datai, dv;
+@@ -497,7 +497,7 @@ static char _rrdtool_flushcached__doc__[] = "Flush RRD files from memory.\n\n\
+ static PyObject *
+ _rrdtool_flushcached(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret;
+     int status;
+@@ -592,7 +592,7 @@ static char _rrdtool_graph__doc__[] = "Create a graph based on one or more " \
+ static PyObject *
+ _rrdtool_graph(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret;
+     int xsize, ysize, i, status;
+@@ -650,7 +650,7 @@ static char _rrdtool_graphv__doc__[] = "Create a graph based on one or more " \
+ static PyObject *
+ _rrdtool_graphv(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret;
+     rrd_info_t *data;
+@@ -695,7 +695,7 @@ static char _rrdtool_xport__doc__[] = "Dictionary representation of data " \
+ static PyObject *
+ _rrdtool_xport(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret;
+     int xsize, status;
+@@ -793,7 +793,7 @@ static char _rrdtool_list__doc__[] = "List RRDs in storage.\n\n" \
+ static PyObject *
+ _rrdtool_list(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret, *str;
+     char *data, *ptr, *end;
+@@ -855,7 +855,7 @@ static char _rrdtool_tune__doc__[] = "Modify some basic properties of a " \
+ static PyObject *
+ _rrdtool_tune(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret;
+     int status;
+@@ -893,7 +893,7 @@ static char _rrdtool_first__doc__[] = "Get the first UNIX timestamp of the "\
+ static PyObject *
+ _rrdtool_first(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret;
+     int ts;
+@@ -928,7 +928,7 @@ static char _rrdtool_last__doc__[] = "Get the UNIX timestamp of the most "\
+ static PyObject *
+ _rrdtool_last(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret;
+     int ts;
+@@ -965,7 +965,7 @@ static char _rrdtool_resize__doc__[] = "Modify the number of rows in a "\
+ static PyObject *
+ _rrdtool_resize(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret;
+     int status;
+@@ -1003,7 +1003,7 @@ static char _rrdtool_info__doc__[] = "Extract header information from an "\
+ static PyObject *
+ _rrdtool_info(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret;
+     rrd_info_t *data;
+@@ -1040,7 +1040,7 @@ static char _rrdtool_lastupdate__doc__[] = "Returns datetime and value stored "\
+ static PyObject *
+ _rrdtool_lastupdate(PyObject *Py_UNUSED(self), PyObject *args)
+ {
+-    char **rrdtool_argv = NULL;
++    const char **rrdtool_argv = NULL;
+     int    rrdtool_argc = 0;
+     PyObject *ret, *ds_dict, *lastupd;
+     int status;
+diff --git a/bindings/ruby/main.c b/bindings/ruby/main.c
+index e4cc644..a036b7f 100644
+--- bindings/ruby/main.c
++++ bindings/ruby/main.c
+@@ -9,7 +9,7 @@
+ 
+ typedef struct string_arr_t {
+     int       len;
+-    char    **strings;
++    const char    **strings;
+ } string_arr;
+ 
+ VALUE     mRRD;
+@@ -18,12 +18,12 @@ VALUE     rb_eRRDError;
+ typedef int (
+     *RRDFUNC) (
+     int argc,
+-    char **argv);
++    const char **argv);
+ 
+ typedef rrd_info_t *(
+     *RRDINFOFUNC) (
+     int argc,
+-    char **argv);
++    const char **argv);
+ 
+ #define RRD_CHECK_ERROR  \
+     if (rrd_test_error()) \
+@@ -72,10 +72,10 @@ void string_arr_delete(
+ 
+     /* skip dummy first entry */
+     for (i = 1; i < a.len; i++) {
+-        free(a.strings[i]);
++        free((void *)a.strings[i]);
+     }
+ 
+-    free(a.strings);
++    free((void *)a.strings);
+ }
+ 
+ void reset_rrd_state(
+diff --git a/bindings/tcl/tclrrd.c b/bindings/tcl/tclrrd.c
+index 2927d92..58a4cef 100644
+--- bindings/tcl/tclrrd.c
++++ bindings/tcl/tclrrd.c
+@@ -22,6 +22,7 @@
+ #include <stdlib.h>
+ #include "../../src/rrd_tool.h"
+ #include "../../src/rrd_format.h"
++#include "../../src/unused.h"
+ 
+ /* support pre-8.4 tcl */
+ 
+@@ -41,47 +42,39 @@ extern int Tclrrd_SafeInit(
+  * Hence, we need to do some preparation before
+  * calling the rrd library functions.
+  */
+-static char **getopt_init(
++static const char **getopt_init(
+     int argc,
+     CONST84 char *argv[])
+ {
+-    char    **argv2;
++    const char    **argv2;
+     int       i;
+ 
+     argv2 = calloc(argc, sizeof(char *));
+     for (i = 0; i < argc; i++) {
+-        argv2[i] = strdup(argv[i]);
++        argv2[i] = argv[i];
+     }
+     return argv2;
+ }
+ 
+ static void getopt_cleanup(
+-    int argc,
+-    char **argv2)
++    int UNUSED(argc),
++    const char **argv2)
+ {
+-    int       i;
+-
+-    for (i = 0; i < argc; i++) {
+-        if (argv2[i] != NULL) {
+-            free(argv2[i]);
+-        }
+-    }
+-    free(argv2);
++    free((void *)argv2);
+ }
+ 
+ static void getopt_free_element(
+-    char *argv2[],
++    const char *argv2[],
+     int argn)
+ {
+     if (argv2[argn] != NULL) {
+-        free(argv2[argn]);
+         argv2[argn] = NULL;
+     }
+ }
+ 
+ static void getopt_squieeze(
+     int *argc,
+-    char *argv2[])
++    const char *argv2[])
+ {
+     int       i, null_i = 0, argc_tmp = *argc;
+ 
+@@ -104,7 +97,7 @@ static int Rrd_Create(
+     CONST84 char *argv[])
+ {
+     int       argv_i;
+-    char    **argv2;
++    const char    **argv2;
+     char     *parsetime_error = NULL;
+     time_t    last_up = time(NULL) - 10;
+     long int  long_tmp;
+@@ -295,7 +288,7 @@ static int Rrd_Flushcached(
+         return TCL_ERROR;
+     }
+ 
+-    rrd_flushcached(argc, (char**)argv);
++    rrd_flushcached(argc, argv);
+ 
+     if (rrd_test_error()) {
+         Tcl_AppendResult(interp, "RRD Error: ",
+@@ -380,7 +373,7 @@ static int Rrd_Update(
+     CONST84 char *argv[])
+ {
+     int       argv_i;
+-    char    **argv2, *template = NULL;
++    const char    **argv2, *template = NULL;
+ 
+     argv2 = getopt_init(argc, argv);
+ 
+@@ -391,16 +384,10 @@ static int Rrd_Update(
+                 Tcl_AppendResult(interp, "RRD Error: option '",
+                                  argv2[argv_i - 1], "' needs an argument",
+                                  (char *) NULL);
+-                if (template != NULL) {
+-                    free(template);
+-                }
+                 getopt_cleanup(argc, argv2);
+                 return TCL_ERROR;
+             }
+-            if (template != NULL) {
+-                free(template);
+-            }
+-            template = strdup(argv2[argv_i]);
++            template = argv2[argv_i];
+             getopt_free_element(argv2, argv_i - 1);
+             getopt_free_element(argv2, argv_i);
+         } else if (!strcmp(argv2[argv_i], "--")) {
+@@ -409,9 +396,6 @@ static int Rrd_Update(
+         } else if (argv2[argv_i][0] == '-') {
+             Tcl_AppendResult(interp, "RRD Error: unknown option '",
+                              argv2[argv_i], "'", (char *) NULL);
+-            if (template != NULL) {
+-                free(template);
+-            }
+             getopt_cleanup(argc, argv2);
+             return TCL_ERROR;
+         }
+@@ -422,18 +406,12 @@ static int Rrd_Update(
+     if (argc < 2) {
+         Tcl_AppendResult(interp, "RRD Error: needs rrd filename",
+                          (char *) NULL);
+-        if (template != NULL) {
+-            free(template);
+-        }
+         getopt_cleanup(argc, argv2);
+         return TCL_ERROR;
+     }
+ 
+     rrd_update_r(argv2[1], template, argc - 2, (const char **)argv2 + 2);
+ 
+-    if (template != NULL) {
+-        free(template);
+-    }
+     getopt_cleanup(argc, argv2);
+ 
+     if (rrd_test_error()) {
+@@ -454,7 +432,6 @@ static int Rrd_Info(
+ {
+     int status = TCL_OK;
+     rrd_info_t *data;
+-    char **argv2;
+ 
+     /* TODO: support for rrdcached */
+     if (argc != 2) {
+@@ -463,9 +440,7 @@ static int Rrd_Info(
+         return TCL_ERROR;
+     }
+ 
+-    argv2 = getopt_init(argc, argv);
+-
+-    data = rrd_info_r(argv2[1]);
++    data = rrd_info_r(argv[1]);
+ 
+     if (data) {
+       Tcl_SetObjResult(interp, convert_info(data));
+@@ -477,7 +452,6 @@ static int Rrd_Info(
+       status = TCL_ERROR;
+     }
+ 
+-    getopt_cleanup(argc, argv2);
+     return status;
+ }
+ 
+@@ -488,7 +462,6 @@ static int Rrd_Lastupdate(
+     CONST84 char *argv[])
+ {
+     time_t    last_update;
+-    char    **argv2;
+     char    **ds_namv;
+     char    **last_ds;
+     char      s[30];
+@@ -502,8 +475,7 @@ static int Rrd_Lastupdate(
+         return TCL_ERROR;
+     }
+ 
+-    argv2 = getopt_init(argc, argv);
+-    if (rrd_lastupdate_r(argv2[1], &last_update,
++    if (rrd_lastupdate_r(argv[1], &last_update,
+                        &ds_cnt, &ds_namv, &last_ds) == 0) {
+         listPtr = Tcl_GetObjResult(interp);
+         for (i = 0; i < ds_cnt; i++) {
+@@ -527,7 +499,6 @@ static int Rrd_Lastupdate(
+             free(ds_namv);
+         }
+     }
+-    getopt_cleanup(argc, argv2);
+     return TCL_OK;
+ }
+ 
+@@ -543,10 +514,8 @@ static int Rrd_Fetch(
+     char    **ds_namv;
+     Tcl_Obj  *listPtr;
+     char      s[30];
+-    char    **argv2;
+ 
+-    argv2 = getopt_init(argc, argv);
+-    if (rrd_fetch(argc, argv2, &start, &end, &step,
++    if (rrd_fetch(argc, argv, &start, &end, &step,
+                   &ds_cnt, &ds_namv, &data) != -1) {
+         datai = data;
+         listPtr = Tcl_GetObjResult(interp);
+@@ -562,7 +531,6 @@ static int Rrd_Fetch(
+         free(ds_namv);
+         free(data);
+     }
+-    getopt_cleanup(argc, argv2);
+ 
+     if (rrd_test_error()) {
+         Tcl_AppendResult(interp, "RRD Error: ",
+@@ -590,7 +558,7 @@ static int Rrd_Graph(
+     int       rc, xsize, ysize;
+     double    ymin, ymax;
+     char      dimensions[50];
+-    char    **argv2;
++    const char    **argv2;
+     CONST84 char *save;
+ 
+     /*
+@@ -692,11 +660,7 @@ static int Rrd_Tune(
+     int argc,
+     CONST84 char *argv[])
+ {
+-    char    **argv2;
+-
+-    argv2 = getopt_init(argc, argv);
+-    rrd_tune(argc, argv2);
+-    getopt_cleanup(argc, argv2);
++    rrd_tune(argc, argv);
+ 
+     if (rrd_test_error()) {
+         Tcl_AppendResult(interp, "RRD Error: ",
+@@ -716,11 +680,7 @@ static int Rrd_Resize(
+     int argc,
+     CONST84 char *argv[])
+ {
+-    char    **argv2;
+-
+-    argv2 = getopt_init(argc, argv);
+-    rrd_resize(argc, argv2);
+-    getopt_cleanup(argc, argv2);
++    rrd_resize(argc, argv);
+ 
+     if (rrd_test_error()) {
+         Tcl_AppendResult(interp, "RRD Error: ",
+@@ -740,11 +700,7 @@ static int Rrd_Restore(
+     int argc,
+     CONST84 char *argv[])
+ {
+-    char    **argv2;
+-
+-    argv2 = getopt_init(argc, argv);
+-    rrd_restore(argc, argv2);
+-    getopt_cleanup(argc, argv2);
++    rrd_restore(argc, argv);
+ 
+     if (rrd_test_error()) {
+         Tcl_AppendResult(interp, "RRD Error: ",
+diff --git a/src/optparse.c b/src/optparse.c
+index 9040ba8..79a3efe 100644
+--- src/optparse.c
++++ src/optparse.c
+@@ -10,7 +10,7 @@
+ #define options_argv(i) \
+     ((i) < options->argc ? options->argv[i] : NULL)
+ 
+-void optparse_init(struct optparse *options, int argc, char **argv)
++void optparse_init(struct optparse *options, int argc, const char **argv)
+ {
+     options->argv = argv;
+     options->argc = argc;
+@@ -42,7 +42,7 @@ is_longopt(const char *arg)
+ static void
+ permute(struct optparse *options, int index)
+ {
+-    char *nonoption = options->argv[index];
++    const char *nonoption = options->argv[index];
+     for (int i = index; i < options->optind - 1; i++)
+         options->argv[i] = options->argv[i + 1];
+     options->argv[options->optind - 1] = nonoption;
+@@ -67,7 +67,7 @@ int optparse(struct optparse *options, const char *optstring)
+     options->errmsg[0] = '\0';
+     options->optopt = 0;
+     options->optarg = NULL;
+-    char *option = options_argv(options->optind);
++    const char *option = options_argv(options->optind);
+     if (option == NULL) {
+         return -1;
+     } else if (is_dashdash(option)) {
+@@ -88,7 +88,7 @@ int optparse(struct optparse *options, const char *optstring)
+     option += options->subopt + 1;
+     options->optopt = option[0];
+     int type = argtype(optstring, option[0]);
+-    char *next = options_argv(options->optind + 1);
++    const char *next = options_argv(options->optind + 1);
+     switch (type) {
+     case -1:
+         opterror(options, "invalid option -- '%c'", option[0]);
+@@ -128,10 +128,10 @@ int optparse(struct optparse *options, const char *optstring)
+     return 0;
+ }
+ 
+-char *optparse_arg(struct optparse *options)
++const char *optparse_arg(struct optparse *options)
+ {
+     options->subopt = 0;
+-    char *option = options->argv[options->optind];
++    const char *option = options->argv[options->optind];
+     if (option != NULL)
+         options->optind++;
+     return option;
+@@ -222,7 +222,7 @@ optparse_long(struct optparse *options,
+               int *longindex)
+ {
+ //    printf("%i < %i\n",options->optind,options->argc);
+-    char *option = options_argv(options->optind);
++    const char *option = options_argv(options->optind);
+     if (option == NULL) {
+         return -1;
+     } else if (is_dashdash(option)) {
+diff --git a/src/optparse.h b/src/optparse.h
+index c4b0ec1..7a0bb38 100644
+--- src/optparse.h
++++ src/optparse.h
+@@ -44,7 +44,7 @@
+  */
+ 
+ struct optparse {
+-    char **argv;
++    const char **argv;
+     int argc;
+     int permute;
+     int optind;
+@@ -65,7 +65,7 @@ struct optparse_long {
+ /**
+  * Initializes the parser state.
+  */
+-void optparse_init(struct optparse *options, int argc, char **argv);
++void optparse_init(struct optparse *options, int argc, const char **argv);
+ 
+ /**
+  * Read the next option in the argv array.
+@@ -98,6 +98,6 @@ optparse_long(struct optparse *options,
+  * subcommand returned by optparse_arg(). This function allows you to
+  * ignore the value of optind.
+  */
+-char *optparse_arg(struct optparse *options);
++const char *optparse_arg(struct optparse *options);
+ 
+ #endif
+diff --git a/src/rrd.h b/src/rrd.h
+index 8439413..4f0e566 100644
+--- src/rrd.h
++++ src/rrd.h
+@@ -155,10 +155,10 @@ extern    "C" {
+ /* main function blocks */
+     int       rrd_create(
+     int,
+-    char **);
++    const char **);
+     rrd_info_t *rrd_info(
+     int,
+-    char **);
++    const char **);
+     rrd_info_t *rrd_info_push(
+     rrd_info_t *,
+     char *,
+@@ -170,19 +170,19 @@ extern    "C" {
+     rrd_info_t *);
+     char     *rrd_list(
+     int,
+-    char **);
++    const char **);
+     char     *rrd_list_r(
+     int,
+-    char *dirname);
++    const char *dirname);
+     int       rrd_update(
+     int,
+-    char **);
++    const char **);
+     rrd_info_t *rrd_update_v(
+     int,
+-    char **);
++    const char **);
+     int       rrd_graph(
+     int,
+-    char **,
++    const char **,
+     char ***,
+     int *,
+     int *,
+@@ -191,11 +191,11 @@ extern    "C" {
+     double *);
+     rrd_info_t *rrd_graph_v(
+     int,
+-    char **);
++    const char **);
+ 
+     int       rrd_fetch(
+     int,
+-    char **,
++    const char **,
+     time_t *,
+     time_t *,
+     unsigned long *,
+@@ -204,32 +204,32 @@ extern    "C" {
+     rrd_value_t **);
+     int       rrd_restore(
+     int,
+-    char **);
++    const char **);
+     int       rrd_dump(
+     int,
+-    char **);
++    const char **);
+     int       rrd_tune(
+     int,
+-    char **);
++    const char **);
+     time_t    rrd_last(
+     int,
+-    char **);
++    const char **);
+     int       rrd_lastupdate(
+     int argc,
+-    char **argv);
++    const char **argv);
+     time_t    rrd_first(
+     int,
+-    char **);
++    const char **);
+     int       rrd_resize(
+     int,
+-    char **);
++    const char **);
+     char     *rrd_strversion(
+     void);
+     double    rrd_version(
+     void);
+     int       rrd_xport(
+     int,
+-    char **,
++    const char **,
+     int *,
+     time_t *,
+     time_t *,
+@@ -239,7 +239,7 @@ extern    "C" {
+     rrd_value_t **);
+     int       rrd_flushcached(
+     int argc,
+-    char **argv);
++    const char **argv);
+ 
+     void      rrd_freemem(
+     void *mem);
+@@ -309,7 +309,7 @@ extern    "C" {
+     const char **argv);
+     int       rrd_dump_opt_r(
+     const char *filename,
+-    char *outname,
++    const char *outname,
+     int opt_noheader);
+     int       rrd_dump_r(
+     const char *filename,
+diff --git a/src/rrd_cgi.c b/src/rrd_cgi.c
+index e7eb5be..bc007b2 100644
+--- src/rrd_cgi.c
++++ src/rrd_cgi.c
+@@ -100,7 +100,7 @@ static char *rrdstrip(
+ static char *scanargs(
+     char *line,
+     int *argc,
+-    char ***args);
++    const char ***args);
+ 
+ /* format at-time specified times using strftime */
+ static char *printstrftime(
+@@ -315,7 +315,7 @@ static const char *putvar(
+ }
+ 
+ /* expand those RRD:* directives that can be used recursively */
+-static char *rrd_expand_vars(
++static const char *rrd_expand_vars(
+     char *buffer)
+ {
+     int       i;
+@@ -432,7 +432,7 @@ static int readfile(
+ 
+ int main(
+     int argc,
+-    char *argv[])
++    const char *argv[])
+ {
+     char     *buffer;
+     long      i;
+@@ -924,7 +924,7 @@ static char *drawgraph(
+     }
+     calfree();
+     if (rrd_graph
+-        (argc + 1, (char **) args - 1, &calcpr, &xsize, &ysize, NULL, &ymin,
++        (argc + 1, args - 1, &calcpr, &xsize, &ysize, NULL, &ymin,
+          &ymax) != -1) {
+         return stralloc(calcpr[0]);
+     } else {
+@@ -971,7 +971,7 @@ static char *printtimelast(
+         /* not raising argc in step with args - 1 since the last argument
+            will be used below for strftime  */
+ 
+-        last = rrd_last(argc, (char **) args - 1);
++        last = rrd_last(argc, args - 1);
+         if (rrd_test_error()) {
+             char      err[4096];
+ 
+@@ -1025,7 +1025,7 @@ static char *printtimenow(
+ static char *scanargs(
+     char *line,
+     int *argument_count,
+-    char ***arguments)
++    const char ***arguments)
+ {
+     char     *getP;     /* read cursor */
+     char     *putP;     /* write cursor */
+@@ -1037,8 +1037,8 @@ static char *scanargs(
+ 
+     /* local array of arguments while parsing */
+     int       argc = 1;
+-    char    **argv;
+-    char    **argv_tmp; /* temp variable for realloc() */
++    const char    **argv;
++    const char    **argv_tmp; /* temp variable for realloc() */
+ 
+ #ifdef DEBUG_PARSER
+     printf("<-- scanargs(%s) -->\n", line);
+@@ -1049,7 +1049,7 @@ static char *scanargs(
+ 
+     /* create initial argument array of char pointers */
+     argsz = 32;
+-    argv = (char **) malloc(argsz * sizeof(char *));
++    argv = malloc(argsz * sizeof(char *));
+     if (!argv) {
+         return NULL;
+     }
+@@ -1144,7 +1144,7 @@ static char *scanargs(
+         if (argc == argsz - 2) {
+             /* resize argument array */
+             argsz *= 2;
+-            argv_tmp = (char **) rrd_realloc(argv, argsz * sizeof(char *));
++            argv_tmp = rrd_realloc(argv, argsz * sizeof(char *));
+             if (*argv_tmp == NULL) {
+                 return NULL;
+             }
+@@ -1211,7 +1211,7 @@ static int parse(
+     /* the name of the vairable ... */
+     char     *val;
+     long      valln;
+-    char    **args;
++    const char    **args;
+     char     *end;
+     long      end_offset;
+     int       argc;
+@@ -1262,7 +1262,7 @@ static int parse(
+         /* make sure we do not shrink the mallocd block */
+         size_t    newbufsize = i + strlen(end) + valln + 1;
+ 
+-        *buf = (char *) rrd_realloc(*buf, newbufsize);
++        *buf = rrd_realloc(*buf, newbufsize);
+ 
+         if (*buf == NULL) {
+             perror("Realoc buf:");
+diff --git a/src/rrd_create.c b/src/rrd_create.c
+index 0cb5b78..984c438 100644
+--- src/rrd_create.c
++++ src/rrd_create.c
+@@ -76,7 +76,7 @@ static void parseGENERIC_DS(
+ 
+ int rrd_create(
+     int argc,
+-    char **argv)
++    const char **argv)
+ {
+     struct optparse_long longopts[] = {
+         {"start", 'b', OPTPARSE_REQUIRED},
+diff --git a/src/rrd_daemon.c b/src/rrd_daemon.c
+index cf12547..5831c1b 100644
+--- src/rrd_daemon.c
++++ src/rrd_daemon.c
+@@ -1796,7 +1796,7 @@ static int handle_request_tune(
+     HANDLER_PROTO)
+ {                       /* {{{ */
+     int       status;
+-    char**    argv = NULL;
++    const char**    argv = NULL;
+     int       argc, argc_tmp;
+     char*     i;
+     int       rc;
+@@ -1835,7 +1835,7 @@ static int handle_request_tune(
+         goto done;
+     }
+ 
+-    if ((argv = (char **) malloc(argc * sizeof(char*))) == NULL) {
++    if ((argv = malloc(argc * sizeof(char*))) == NULL) {
+         rc = send_response(sock, RESP_ERR, "%s\n", rrd_strerror(ENOMEM));
+         goto done;
+     }
+@@ -1846,7 +1846,7 @@ static int handle_request_tune(
+         argc_tmp += 1;
+     }
+ 
+-    status = rrd_tune_r(file, argc, (const char **)argv);
++    status = rrd_tune_r(file, argc, argv);
+     if (status != 0) {
+         rc = send_response(sock, RESP_ERR, "Got error %s\n", rrd_get_error());
+         goto done;   
+@@ -1854,7 +1854,7 @@ static int handle_request_tune(
+     rc = send_response(sock, RESP_OK, "Success\n");
+     done:
+     free(file);
+-    free(argv);
++    free((void *)argv);
+     return rc;
+ }  
+ 
+@@ -4418,7 +4418,7 @@ static int cleanup(
+ 
+ static int read_options(
+     int argc,
+-    char **argv)
++    const char **argv)
+ {                       /* {{{ */
+     struct optparse_long longopts[] = {
+         {NULL, 'a', OPTPARSE_REQUIRED},
+@@ -4963,7 +4963,7 @@ static int read_options(
+ 
+ int main(
+     int argc,
+-    char **argv)
++    const char **argv)
+ {
+     int       status;
+ 
+diff --git a/src/rrd_dump.c b/src/rrd_dump.c
+index 4f616fc..991cdcd 100644
+--- src/rrd_dump.c
++++ src/rrd_dump.c
+@@ -472,7 +472,7 @@ static size_t rrd_dump_opt_cb_fileout(
+ 
+ int rrd_dump_opt_r(
+     const char *filename,
+-    char *outname,
++    const char *outname,
+     int opt_noheader)
+ {
+     FILE     *out_file;
+@@ -512,7 +512,7 @@ int rrd_dump_r(
+ 
+ int rrd_dump(
+     int argc,
+-    char **argv)
++    const char **argv)
+ {
+     int       opt;
+     struct optparse_long longopts[] = {
+diff --git a/src/rrd_fetch.c b/src/rrd_fetch.c
+index aa05cd0..e0c4f4f 100644
+--- src/rrd_fetch.c
++++ src/rrd_fetch.c
+@@ -61,7 +61,7 @@
+ 
+ int rrd_fetch(
+     int argc,
+-    char **argv,
++    const char **argv,
+     time_t *start,
+     time_t *end,        /* which time frame do you want ?
+                          * will be changed to represent reality */
+diff --git a/src/rrd_first.c b/src/rrd_first.c
+index 6279524..7ecc4f1 100644
+--- src/rrd_first.c
++++ src/rrd_first.c
+@@ -13,7 +13,7 @@
+ 
+ time_t rrd_first(
+     int argc,
+-    char **argv)
++    const char **argv)
+ {
+     struct optparse_long longopts[] = {
+         {"rraindex", 129, OPTPARSE_REQUIRED},
+diff --git a/src/rrd_flushcached.c b/src/rrd_flushcached.c
+index 090bca7..3bf6cd2 100644
+--- src/rrd_flushcached.c
++++ src/rrd_flushcached.c
+@@ -22,7 +22,7 @@
+ #include "rrd_tool.h"
+ #include "rrd_client.h"
+ 
+-int rrd_flushcached (int argc, char **argv)
++int rrd_flushcached (int argc, const char **argv)
+ {
+     struct optparse_long longopts[] = {
+         {"daemon", 'd', OPTPARSE_REQUIRED},
+diff --git a/src/rrd_graph.c b/src/rrd_graph.c
+index c0ce6d4..fa8b4c4 100644
+--- src/rrd_graph.c
++++ src/rrd_graph.c
+@@ -4606,7 +4606,7 @@ int scan_for_col(
+ /* Now just a wrapper around rrd_graph_v */
+ int rrd_graph(
+     int argc,
+-    char **argv,
++    const char **argv,
+     char ***prdata,
+     int *xsize,
+     int *ysize,
+@@ -4689,7 +4689,7 @@ int rrd_graph(
+ 
+ rrd_info_t *rrd_graph_v(
+     int argc,
+-    char **argv)
++    const char **argv)
+ {
+     image_desc_t im;
+     rrd_info_t *grinfo;
+@@ -4952,7 +4952,7 @@ void rrd_graph_init(
+ 
+ void rrd_graph_options(
+     int argc,
+-    char *argv[],
++    const char **argv,
+     struct optparse *poptions,
+     image_desc_t *im)
+ {
+diff --git a/src/rrd_graph.h b/src/rrd_graph.h
+index 4df32ec..083cf38 100644
+--- src/rrd_graph.h
++++ src/rrd_graph.h
+@@ -473,12 +473,12 @@ void      time_clean(
+ 
+ void      rrd_graph_options(
+     int,
+-    char **,
++    const char **,
+     struct optparse *,
+     image_desc_t *);
+ void      rrd_graph_script(
+     int,
+-    char **,
++    const char **,
+     image_desc_t *const,
+     int);
+ int       rrd_graph_color(
+diff --git a/src/rrd_graph_helper.c b/src/rrd_graph_helper.c
+index f88893b..dda0069 100644
+--- src/rrd_graph_helper.c
++++ src/rrd_graph_helper.c
+@@ -1952,7 +1952,7 @@ static int parse_xport(
+ 
+ void rrd_graph_script(
+     int argc,
+-    char *argv[],
++    const char **argv,
+     image_desc_t *const im,
+     int optno)
+ {
+diff --git a/src/rrd_info.c b/src/rrd_info.c
+index 76277e8..f1b4313 100644
+--- src/rrd_info.c
++++ src/rrd_info.c
+@@ -82,7 +82,7 @@ rrd_info_t
+ 
+ rrd_info_t *rrd_info(
+     int argc,
+-    char **argv)
++    const char **argv)
+ {
+     struct optparse_long longopts[] = {
+         {"daemon", 'd', OPTPARSE_REQUIRED},
+diff --git a/src/rrd_last.c b/src/rrd_last.c
+index 2e05886..4b6a79f 100644
+--- src/rrd_last.c
++++ src/rrd_last.c
+@@ -11,7 +11,7 @@
+ 
+ time_t rrd_last(
+     int argc,
+-    char **argv)
++    const char **argv)
+ {
+     char *opt_daemon = NULL;
+     time_t lastupdate;
+diff --git a/src/rrd_lastupdate.c b/src/rrd_lastupdate.c
+index 31ab3f7..28211da 100644
+--- src/rrd_lastupdate.c
++++ src/rrd_lastupdate.c
+@@ -14,7 +14,7 @@
+ #include "rrd_client.h"
+ #include <stdarg.h>
+ 
+-int rrd_lastupdate (int argc, char **argv)
++int rrd_lastupdate (int argc, const char **argv)
+ {
+     struct optparse_long longopts[] = {
+         {"daemon", 'd', OPTPARSE_REQUIRED},
+diff --git a/src/rrd_list.c b/src/rrd_list.c
+index e743b9b..6e96220 100644
+--- src/rrd_list.c
++++ src/rrd_list.c
+@@ -37,7 +37,7 @@ static char *move_past_prefix(const char *prefix, const char *string)
+       return (char *)&(string[index]);
+ }
+ 
+-static char *rrd_list_rec(int recursive, char *root, char *dirname)
++static char *rrd_list_rec(int recursive, const char *root, const char *dirname)
+ {
+ #define SANE_ASPRINTF2(_dest_str, _format, ...)                               \
+       if (asprintf(&_dest_str, _format, __VA_ARGS__) == -1) {         \
+@@ -138,7 +138,7 @@ static char *rrd_list_rec(int recursive, char *root, char *dirname)
+       return out;
+ }
+ 
+-char *rrd_list_r(int recursive, char *dirname)
++char *rrd_list_r(int recursive, const char *dirname)
+ {
+ #define SANE_ASPRINTF(_dest_str, _format, ...)                                \
+       if (asprintf(&_dest_str, _format, __VA_ARGS__) == -1) {         \
+@@ -240,7 +240,7 @@ char *rrd_list_r(int recursive, char *dirname)
+       return rrd_list_rec(recursive, dirname, dirname);
+ }
+ 
+-char *rrd_list(int argc, char **argv)
++char *rrd_list(int argc, const char **argv)
+ {
+       char *opt_daemon = NULL;
+       int status;
+diff --git a/src/rrd_modify.c b/src/rrd_modify.c
+index 6de7926..d43fec2 100644
+--- src/rrd_modify.c
++++ src/rrd_modify.c
+@@ -1297,7 +1297,7 @@ done:
+ }
+ 
+ int handle_modify(const rrd_t *in, const char *outfilename,
+-                int argc, char **argv, int optidx,
++                int argc, const char **argv, int optidx,
+                 int newstep) {
+     // parse add/remove options
+     int rc = -1;
+diff --git a/src/rrd_modify.h b/src/rrd_modify.h
+index d78d961..8596801 100644
+--- src/rrd_modify.h
++++ src/rrd_modify.h
+@@ -28,7 +28,7 @@ typedef struct {
+ } rra_mod_op_t;
+ 
+ int handle_modify(const rrd_t *in, const char *outfilename,
+-                int argc, char **argv, int optind,
++                int argc, const char **argv, int optind,
+                 int newstep);
+ 
+ typedef union {
+diff --git a/src/rrd_resize.c b/src/rrd_resize.c
+index 44c1ee5..5236cd6 100644
+--- src/rrd_resize.c
++++ src/rrd_resize.c
+@@ -12,9 +12,9 @@
+ 
+ int rrd_resize(
+     int argc,
+-    char **argv)
++    const char **argv)
+ {
+-    char     *infilename, outfilename[11] = "resize.rrd";
++    const char     *infilename, outfilename[11] = "resize.rrd";
+     rrd_t     rrdold, rrdnew;
+     rrd_value_t buffer;
+     int       version;
+diff --git a/src/rrd_restore.c b/src/rrd_restore.c
+index 14b9446..19975da 100644
+--- src/rrd_restore.c
++++ src/rrd_restore.c
+@@ -1378,7 +1378,7 @@ int write_file(
+ 
+ int rrd_restore(
+     int argc,
+-    char **argv)
++    const char **argv)
+ {
+     struct optparse_long longopts[] = {
+         {"range-check", 'r', OPTPARSE_NONE},
+diff --git a/src/rrd_tool.c b/src/rrd_tool.c
+index 71e2263..ddbae96 100644
+--- src/rrd_tool.c
++++ src/rrd_tool.c
+@@ -22,16 +22,16 @@
+ 
+ 
+ static void PrintUsage(
+-    char *cmd);
++    const char *cmd);
+ static int CountArgs(
+     char *aLine);
+ static int CreateArgs(
++    const char *,
+     char *,
+-    char *,
+-    char **);
++    const char **);
+ static int HandleInputLine(
+     int,
+-    char **,
++    const char **,
+     FILE *);
+ int       RemoteMode = 0;
+ int       ChangeRoot = 0;
+@@ -42,6 +42,6 @@ int       ChangeRoot = 0;
+ 
+ 
+ static void PrintUsage(
+-    char *cmd)
++    const char *cmd)
+ {
+ 
+@@ -443,11 +443,11 @@ static char *fgetslong(
+ 
+ int main(
+     int argc,
+-    char *argv[])
++    const char *argv[])
+ {
+-    char    **myargv;
++    const char    **myargv;
+     char     *aLine;
+-    char     *firstdir = "";
++    const char     *firstdir = "";
+ 
+ #ifdef MUST_DISABLE_SIGFPE
+     signal(SIGFPE, SIG_IGN);
+@@ -526,7 +526,7 @@ int main(
+                 printf("ERROR: not enough arguments\n");
+                 continue;
+             }
+-            if ((myargv = (char **) malloc((argc + 1) *
++            if ((myargv = malloc((argc + 1) *
+                                            sizeof(char *))) == NULL) {
+                 perror("malloc");
+                 exit(1);
+@@ -572,7 +572,7 @@ int main(
+    resolving them portably is not really simple. */
+ static int HandleInputLine(
+     int argc,
+-    char **argv,
++    const char **argv,
+     FILE * out)
+ {
+ #if defined(HAVE_OPENDIR) && defined (HAVE_READDIR)
+@@ -887,12 +887,12 @@ static int CountArgs(
+  * CreateArgs - take a string (aLine) and tokenize
+  */
+ static int CreateArgs(
+-    char *pName,
++    const char *pName,
+     char *aLine,
+-    char **argv)
++    const char **argv)
+ {
+     char     *getP, *putP;
+-    char    **pargv = argv;
++    const char    **pargv = argv;
+     char      Quote = 0;
+     int       inArg = 0;
+     int       len;
+diff --git a/src/rrd_tune.c b/src/rrd_tune.c
+index 3374dd1..dfa8a86 100644
+--- src/rrd_tune.c
++++ src/rrd_tune.c
+@@ -71,7 +71,7 @@ static int set_hwsmootharg(
+ 
+ int rrd_tune(
+     int argc,
+-    char **argv)
++    const char **argv)
+ {
+     char      *opt_daemon = NULL;
+     const char *in_filename = NULL;
+diff --git a/src/rrd_update.c b/src/rrd_update.c
+index 831b8ee..8989f3f 100644
+--- src/rrd_update.c
++++ src/rrd_update.c
+@@ -299,7 +299,7 @@ static void initialize_time(
+ 
+ rrd_info_t *rrd_update_v(
+     int argc,
+-    char **argv)
++    const char **argv)
+ {
+     struct optparse_long longopts[] = {
+         {"template",          't', OPTPARSE_REQUIRED},
+@@ -668,7 +668,7 @@ error:
+ 
+ int rrd_update(
+     int argc,
+-    char **argv)
++    const char **argv)
+ {
+     struct optparse_long longopts[] = {
+         {"template",          't', OPTPARSE_REQUIRED},
+diff --git a/src/rrd_xport.c b/src/rrd_xport.c
+index eb814fb..405c9d8 100644
+--- src/rrd_xport.c
++++ src/rrd_xport.c
+@@ -72,7 +72,7 @@ static int rrd_xport_format_addprints(
+ 
+ int rrd_xport(
+     int argc,
+-    char **argv,
++    const char **argv,
+     int UNUSED(*xsize),
+     time_t *start,
+     time_t *end,        /* which time frame do you want ?
+diff --git a/src/rrdupdate.c b/src/rrdupdate.c
+index 340ef5b..6b51530 100644
+--- src/rrdupdate.c
++++ src/rrdupdate.c
+@@ -20,19 +20,20 @@ int main(
+     int argc,
+     char **argv)
+ {
++    const char **cargv = (const char **)argv;
+     char *name=basename(argv[0]);
+     rrd_info_t *info;
+ 
+     if (!strcmp(name, "rrdcreate")) {
+-        rrd_create(argc, argv);
++        rrd_create(argc, cargv);
+     }
+     else if (!strcmp(name, "rrdinfo")) {
+-         info=rrd_info(argc, argv);
++         info=rrd_info(argc, cargv);
+          rrd_info_print(info);
+          rrd_info_free(info);
+     }
+     else {
+-        rrd_update(argc, argv);
++        rrd_update(argc, cargv);
+     }
+ 
+     if (rrd_test_error()) {



Home | Main Index | Thread Index | Old Index