From: Michal Suchánek Date: Fri, 5 Jan 2024 14:31:48 +0000 (+0100) Subject: Constify argv, fix warnings. (#1242) X-Git-Tag: v1.9.0~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b76e3c578f1e9f582e9c28f50d82b1f569602075;p=thirdparty%2Frrdtool-1.x.git 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 --- diff --git a/CHANGES b/CHANGES index 1b6f4114..728d51fa 100644 --- a/CHANGES +++ b/CHANGES @@ -41,6 +41,9 @@ Features * Add (remote) dump support to rrdcached +* Constify argv argument to library functions + Without this users of library function that want to pass in const strings need to duplicate them to avoid compiler warnings + RRDtool 1.8.0 - 2022-03-13 ========================== diff --git a/bindings/lua/rrdlua.c b/bindings/lua/rrdlua.c index d1a70064..2095c3b5 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 9040ba8b..79a3efe1 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 c4b0ec19..7a0bb388 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 184887cc..b40f9a44 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 b82c310d..14a4f511 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 f9bad086..919b4195 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 751798aa..21c38a11 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 a4490d59..c58e0ee4 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 c739bfc4..54780f19 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 a696c5c3..f3dde540 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 090bca74..3bf6cd29 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 b32d4508..46511e9a 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 4df32ec6..083cf380 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 99cdefa6..ba90e1a6 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 c0c6f68c..eb0d4e4d 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 026a1e82..1aae7251 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 ab30dcf6..4f7f4770 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 e743b9b7..6e96220e 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 a2b07f64..70ac9e77 100644 --- a/src/rrd_modify.c +++ b/src/rrd_modify.c @@ -1297,7 +1297,7 @@ done: } int handle_modify(const rrd_t *in, const char *outfilename, - int argc, char **argv, int optidx, + int argc, const char **argv, int optidx, int newstep) { // parse add/remove options int rc = -1; diff --git a/src/rrd_modify.h b/src/rrd_modify.h index 52d8789b..64a39926 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 fb75d81f..742e6d14 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 85d481e0..ebef5efe 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 cc6119d9..56321ee1 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 198817f3..dd3f3f7c 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 fbbe2820..bb9a0602 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 @@ error: int rrd_update( int argc, - char **argv) + const char **argv) { struct optparse_long longopts[] = { {"template", 't', OPTPARSE_REQUIRED}, diff --git a/src/rrd_xport.c b/src/rrd_xport.c index d15d33dd..93c02f92 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 cbbf48cc..e368516c 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()) {