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?= 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 * 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 * tcl: Do not duplicate const strings --------- Signed-off-by: Michal Suchanek --- 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 #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 -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()) {