deleted file mode 100644
@@ -1,57 +0,0 @@
-From e59f703bbcc0af949ee365206426b6394c340c6f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Wolfgang=20St=C3=B6ggl?= <c72578@yahoo.de>
-Date: Wed, 23 Mar 2022 17:58:45 +0100
-Subject: [PATCH] Fix BUILD_DATE in rrdtool help output
-
-- This is a followup to #1102
-- Fixes segfault when running "rrdtool --help"
-- Change DATE_FMT to the same date format as the __DATE__ macro [1]:
- mmm dd yyyy
-
-[1] https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html
-
-Upstream: https://github.com/oetiker/rrdtool-1.x/commit/e59f703bbcc0af949ee365206426b6394c340c6f
-
-Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
----
- configure.ac | 2 +-
- src/rrd_tool.c | 8 ++++++++
- 2 files changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 4d2345855..5169b0d49 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -695,7 +695,7 @@ AC_MSG_RESULT(${COMP_PERL:-No Perl Modules will be built})
-
- # Use reproducible build date and time
- if test "$SOURCE_DATE_EPOCH"; then
-- DATE_FMT="%d %b %Y %H:%M:%S"
-+ DATE_FMT="%b %d %Y %H:%M:%S"
- BUILD_DATE=$(LC_ALL=C date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT")
- AC_DEFINE_UNQUOTED([BUILD_DATE], ["$BUILD_DATE"], [Use reproducible build date])
- fi
-diff --git a/src/rrd_tool.c b/src/rrd_tool.c
-index 930d08272..cc6119d9a 100644
---- a/src/rrd_tool.c
-+++ b/src/rrd_tool.c
-@@ -45,11 +45,19 @@ static void PrintUsage(
- char *cmd)
- {
-
-+#ifdef BUILD_DATE
-+ const char *help_main =
-+ N_("RRDtool %s"
-+ " Copyright by Tobias Oetiker <tobi@oetiker.ch>\n"
-+ " Compiled %s\n\n"
-+ "Usage: rrdtool [options] command command_options\n");
-+#else
- const char *help_main =
- N_("RRDtool %s"
- " Copyright by Tobias Oetiker <tobi@oetiker.ch>\n"
- " Compiled %s %s\n\n"
- "Usage: rrdtool [options] command command_options\n");
-+#endif
-
- const char *help_list =
- N_
deleted file mode 100644
@@ -1,1586 +0,0 @@
-From b76e3c578f1e9f582e9c28f50d82b1f569602075 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Michal=20Such=C3=A1nek?= <hramrach@gmail.com>
-Date: Fri, 5 Jan 2024 15:31:48 +0100
-Subject: [PATCH] Constify argv, fix warnings. (#1242)
-
-* Fix perl warnings
-
- - cast POPs to void to avoid unused value warning
- - declare functions that don't set RETVAL as returning void
-
-Signed-off-by: Michal Suchanek <msuchanek@suse.de>
-
-* Constify argv
-
-rrd has no business modifying the string pointed to by passed agrv, and
-as far as gcc can see it does indeed not modify them because it compiles
-with const argv.
-
-This fixes warnings when passing const strings into rrd, and avoids the
-need to duplicate all strings in the tcl bindings.
-
-This fixes warnings like these:
-[ 3s] prog/sensord/rrd.c: In function 'rrdInit':
-[ 3s] prog/sensord/rrd.c:302:40: warning: cast discards 'const' qualifier from pointer target type [-Wcast-qual]
-[ 3s] 302 | ret = rrd_create(argc, (char**) argv);
-[ 3s] | ^
-[ 3s] prog/sensord/rrd.c: In function 'rrdUpdate':
-[ 3s] prog/sensord/rrd.c:458:42: warning: cast discards 'const' qualifier from pointer target type [-Wcast-qual]
-[ 3s] 458 | if ((ret = rrd_update(3, (char **) /* WEAK */ argv))) {
-[ 3s] | ^
-
-Signed-off-by: Michal Suchanek <msuchanek@suse.de>
-
-* tcl: Do not duplicate const strings
-
----------
-
-Signed-off-by: Michal Suchanek <msuchanek@suse.de>
-
-Upstream: https://github.com/oetiker/rrdtool-1.x/commit/b76e3c578f1e9f582e9c28f50d82b1f569602075
-
-Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
----
- CHANGES | 3 ++
- bindings/lua/rrdlua.c | 25 +++++-----
- bindings/perl-shared/RRDs.xs | 36 +++++++-------
- bindings/python/rrdtoolmodule.c | 38 +++++++--------
- bindings/ruby/main.c | 10 ++--
- bindings/tcl/tclrrd.c | 84 ++++++++-------------------------
- src/optparse.c | 14 +++---
- src/optparse.h | 6 +--
- src/rrd.h | 38 +++++++--------
- src/rrd_cgi.c | 24 +++++-----
- src/rrd_create.c | 2 +-
- src/rrd_daemon.c | 12 ++---
- src/rrd_dump.c | 4 +-
- src/rrd_fetch.c | 2 +-
- src/rrd_first.c | 2 +-
- src/rrd_flushcached.c | 2 +-
- src/rrd_graph.c | 6 +--
- src/rrd_graph.h | 4 +-
- src/rrd_graph_helper.c | 2 +-
- src/rrd_info.c | 2 +-
- src/rrd_last.c | 2 +-
- src/rrd_lastupdate.c | 2 +-
- src/rrd_list.c | 6 +--
- src/rrd_modify.c | 2 +-
- src/rrd_modify.h | 2 +-
- src/rrd_resize.c | 4 +-
- src/rrd_restore.c | 2 +-
- src/rrd_tool.c | 26 +++++-----
- src/rrd_tune.c | 2 +-
- src/rrd_update.c | 4 +-
- src/rrd_xport.c | 2 +-
- src/rrdupdate.c | 7 +--
- 32 files changed, 168 insertions(+), 209 deletions(-)
-
-diff --git a/bindings/lua/rrdlua.c b/bindings/lua/rrdlua.c
-index d1a700641..2095c3b5b 100644
---- a/bindings/lua/rrdlua.c
-+++ b/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 e233b5835..edce76ec4 100644
---- a/bindings/perl-shared/RRDs.xs
-+++ b/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 1ab463584..f255e65bc 100644
---- a/bindings/python/rrdtoolmodule.c
-+++ b/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 e4cc6443d..a036b7fb8 100644
---- a/bindings/ruby/main.c
-+++ b/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 2927d9251..58a4cef68 100644
---- a/bindings/tcl/tclrrd.c
-+++ b/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 9040ba8b2..79a3efe11 100644
---- a/src/optparse.c
-+++ b/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 c4b0ec19c..7a0bb3885 100644
---- a/src/optparse.h
-+++ b/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 184887ccc..b40f9a449 100644
---- a/src/rrd.h
-+++ b/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);
-@@ -323,7 +323,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 b82c310db..14a4f511a 100644
---- a/src/rrd_cgi.c
-+++ b/src/rrd_cgi.c
-@@ -102,7 +102,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(
-@@ -317,7 +317,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;
-@@ -434,7 +434,7 @@ static int readfile(
-
- int main(
- int argc,
-- char *argv[])
-+ const char *argv[])
- {
- char *buffer;
- long i;
-@@ -926,7 +926,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 {
-@@ -973,7 +973,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];
-
-@@ -1027,7 +1027,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 */
-@@ -1039,8 +1039,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);
-@@ -1051,7 +1051,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;
- }
-@@ -1146,7 +1146,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;
- }
-@@ -1213,7 +1213,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;
-@@ -1264,7 +1264,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 f9bad0866..919b4195a 100644
---- a/src/rrd_create.c
-+++ b/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 751798aa1..21c38a11d 100644
---- a/src/rrd_daemon.c
-+++ b/src/rrd_daemon.c
-@@ -1877,7 +1877,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;
-@@ -1916,7 +1916,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;
- }
-@@ -1927,7 +1927,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;
-@@ -1935,7 +1935,7 @@ static int handle_request_tune(
- rc = send_response(sock, RESP_OK, "Success\n");
- done:
- free(file);
-- free(argv);
-+ free((void *)argv);
- return rc;
- }
-
-@@ -4505,7 +4505,7 @@ static int cleanup(
-
- static int read_options(
- int argc,
-- char **argv)
-+ const char **argv)
- { /* {{{ */
- struct optparse_long longopts[] = {
- {NULL, 'a', OPTPARSE_REQUIRED},
-@@ -5050,7 +5050,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 a4490d594..c58e0ee4a 100644
---- a/src/rrd_dump.c
-+++ b/src/rrd_dump.c
-@@ -497,7 +497,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;
-@@ -543,7 +543,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 c739bfc45..54780f19b 100644
---- a/src/rrd_fetch.c
-+++ b/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 a696c5c38..f3dde5404 100644
---- a/src/rrd_first.c
-+++ b/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 090bca749..3bf6cd29d 100644
---- a/src/rrd_flushcached.c
-+++ b/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 b32d45085..46511e9a3 100644
---- a/src/rrd_graph.c
-+++ b/src/rrd_graph.c
-@@ -4607,7 +4607,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,
-@@ -4690,7 +4690,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;
-@@ -4953,7 +4953,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 4df32ec66..083cf3800 100644
---- a/src/rrd_graph.h
-+++ b/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 99cdefa65..ba90e1a6c 100644
---- a/src/rrd_graph_helper.c
-+++ b/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 c0c6f68c7..eb0d4e4de 100644
---- a/src/rrd_info.c
-+++ b/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 026a1e828..1aae72512 100644
---- a/src/rrd_last.c
-+++ b/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 ab30dcf67..4f7f4770e 100644
---- a/src/rrd_lastupdate.c
-+++ b/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 e743b9b7d..6e96220ea 100644
---- a/src/rrd_list.c
-+++ b/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 a2b07f640..70ac9e77f 100644
---- a/src/rrd_modify.c
-+++ b/src/rrd_modify.c
-@@ -1297,7 +1297,7 @@ static int add_rras(const rrd_t *in, rrd_t *out, const int *ds_map,
- }
-
- 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 52d8789be..64a39926e 100644
---- a/src/rrd_modify.h
-+++ b/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 fb75d81ff..742e6d141 100644
---- a/src/rrd_resize.c
-+++ b/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 85d481e0c..ebef5efe8 100644
---- a/src/rrd_restore.c
-+++ b/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 cc6119d9a..56321ee1a 100644
---- a/src/rrd_tool.c
-+++ b/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,7 +42,7 @@ int ChangeRoot = 0;
-
-
- static void PrintUsage(
-- char *cmd)
-+ const char *cmd)
- {
-
- #ifdef BUILD_DATE
-@@ -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 198817f37..dd3f3f7cb 100644
---- a/src/rrd_tune.c
-+++ b/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 fbbe2820a..bb9a0602c 100644
---- a/src/rrd_update.c
-+++ b/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},
-@@ -674,7 +674,7 @@ static int rrd_template_update(const char *filename, /* {{{ */
-
- 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 d15d33dd9..93c02f926 100644
---- a/src/rrd_xport.c
-+++ b/src/rrd_xport.c
-@@ -73,7 +73,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 cbbf48cc1..e368516c8 100644
---- a/src/rrdupdate.c
-+++ b/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()) {
@@ -1,4 +1,4 @@
# Locally calculated
-sha256 bd37614137d7a8dc523359648eb2a81631a34fd91a82ed5581916a52c08433f4 rrdtool-1.8.0.tar.gz
+sha256 5e65385e51f4a7c4b42aa09566396c20e7e1a0a30c272d569ed029a81656e56b rrdtool-1.9.0.tar.gz
sha256 ab6b4646e9e01f1ec287c29c351c886c4cb7f945c11efc0a1be9f6e5e6cc5320 COPYRIGHT
sha256 d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388 LICENSE
@@ -4,7 +4,7 @@
#
################################################################################
-RRDTOOL_VERSION = 1.8.0
+RRDTOOL_VERSION = 1.9.0
RRDTOOL_SITE = https://github.com/oetiker/rrdtool-1.x/releases/download/v$(RRDTOOL_VERSION)
RRDTOOL_LICENSE = GPL-2.0+ with FLOSS license exceptions as explained in COPYRIGHT
RRDTOOL_LICENSE_FILES = COPYRIGHT LICENSE
For release note, see: https://github.com/oetiker/rrdtool-1.x/releases/tag/v1.9.0 The commit also removes the package patches which are included in this version. Signed-off-by: Julien Olivain <ju.o@free.fr> --- ...ix-BUILD_DATE-in-rrdtool-help-output.patch | 57 - .../0002-Constify-argv-fix-warnings.patch | 1586 ----------------- package/rrdtool/rrdtool.hash | 2 +- package/rrdtool/rrdtool.mk | 2 +- 4 files changed, 2 insertions(+), 1645 deletions(-) delete mode 100644 package/rrdtool/0001-Fix-BUILD_DATE-in-rrdtool-help-output.patch delete mode 100644 package/rrdtool/0002-Constify-argv-fix-warnings.patch