blob: e41e729a0e6fbb46286aa6894593ee6ba9036ac6 [file] [log] [blame]
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()) {