6364af25d9
rrdtool-1.8.0-gcc14.patch from upstream should fix build with gcc-14, have disabled rrdtool-tclsegfault.patch, see comments in .spec file OBS-URL: https://build.opensuse.org/request/show/1185834 OBS-URL: https://build.opensuse.org/package/show/server:database/rrdtool?expand=0&rev=8
1587 lines
44 KiB
Diff
1587 lines
44 KiB
Diff
|
|
https://github.com/oetiker/rrdtool-1.x/pull/1242
|
|
patch to CHANGES removed
|
|
|
|
|
|
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>
|
|
---
|
|
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 +--
|
|
31 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()) {
|