head 1.2; access; symbols pkgsrc-2024Q2:1.1.0.2 pkgsrc-2024Q2-base:1.1; locks; strict; comment @# @; 1.2 date 2024.08.23.17.48.50; author adam; state dead; branches; next 1.1; commitid nVbhBNiZOUgaoYmF; 1.1 date 2024.06.18.11.48.40; author markd; state Exp; branches; next ; commitid J7yIa5tNGq6ewseF; desc @@ 1.2 log @rrdtool py-rrdtool ruby-rrdtool: updated to 1.9.0 RRDtool 1.9.0 Bugfixes Fix ytop and ybase adjustments for overlaping area issue on transparent areas @@turban Suppress warnings of implicit fall through @@youpong Update tarball download link in doc @@c72578 Fix unsigned integer overflow in rrdtool first. Add test for rrd_first() @@c72578 Fix tests under MSYS2 (Windows) @@c72578 Fix BUILD_DATE in rrdtool help output @@c72578 acinclude.m4: Include when using exit @@ryandesign rrdtool-release: Create NUMVERS from VERSION file @@c72578 Avoids leaking of file descriptors in multi threaded programs by @@ensc Avoids potential unterminated string because of fixed PATH_MAX buffer Fix extra reference of parameters of rrd_fetch_dbi_{long,double} @@jamborm Features Remove autogenerated files from git repo (configure, Makefile.in, conftools, rrd_config.h.in) Reads $RRD_LOCKING environment variable and adds --locking option to some tools. The updatex api has been also updated to support setting locking related bits in its extra_flags parameter. @@ensc This allows now to choose between three kinds of locking: none: no locking is done at all; caller has to do it manually and can implement e.g., a timeout with alarm(2) or so try: fails when lock is hold by another process; users will see "ERROR: could not lock RRD". This is the default and the only possible mode with the old code block: waits until lock is available. It can be used like env RRD_LOCKING=block rrdupdate ... or rrdupdate --locking none ... or rrd_updatex_r(filename, tmplt, RRD_FLAGS_LOCKING_MODE_BLOCK, ...); Add (remote) dump support to rrdcached @@thz 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 Avoid multiple implementations of asprintf The locale-independent rrd_asprintf is equivalent to platform-provided snprintf when strings and integers are formatted. There is no user of vasprintf-msvc that is locale-dependent, therefore this implementation can be replaced with rrd_vasprintf. @ text @$NetBSD: patch-const-argv.patch,v 1.1 2024/06/18 11:48:40 markd Exp $ const argv patches from Fedora. diff --git a/bindings/lua/rrdlua.c b/bindings/lua/rrdlua.c index d1a7006..2095c3b 100644 --- bindings/lua/rrdlua.c +++ 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 9040ba8..79a3efe 100644 --- src/optparse.c +++ 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 c4b0ec1..7a0bb38 100644 --- src/optparse.h +++ 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 8439413..4f0e566 100644 --- src/rrd.h +++ 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); @@@@ -309,7 +309,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 e7eb5be..bc007b2 100644 --- src/rrd_cgi.c +++ src/rrd_cgi.c @@@@ -100,7 +100,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( @@@@ -315,7 +315,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; @@@@ -432,7 +432,7 @@@@ static int readfile( int main( int argc, - char *argv[]) + const char *argv[]) { char *buffer; long i; @@@@ -924,7 +924,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 { @@@@ -971,7 +971,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]; @@@@ -1025,7 +1025,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 */ @@@@ -1037,8 +1037,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); @@@@ -1049,7 +1049,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; } @@@@ -1144,7 +1144,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; } @@@@ -1211,7 +1211,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; @@@@ -1262,7 +1262,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 0cb5b78..984c438 100644 --- src/rrd_create.c +++ 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 cf12547..5831c1b 100644 --- src/rrd_daemon.c +++ src/rrd_daemon.c @@@@ -1796,7 +1796,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; @@@@ -1835,7 +1835,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; } @@@@ -1846,7 +1846,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; @@@@ -1854,7 +1854,7 @@@@ static int handle_request_tune( rc = send_response(sock, RESP_OK, "Success\n"); done: free(file); - free(argv); + free((void *)argv); return rc; } @@@@ -4418,7 +4418,7 @@@@ static int cleanup( static int read_options( int argc, - char **argv) + const char **argv) { /* {{{ */ struct optparse_long longopts[] = { {NULL, 'a', OPTPARSE_REQUIRED}, @@@@ -4963,7 +4963,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 4f616fc..991cdcd 100644 --- src/rrd_dump.c +++ src/rrd_dump.c @@@@ -472,7 +472,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; @@@@ -512,7 +512,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 aa05cd0..e0c4f4f 100644 --- src/rrd_fetch.c +++ 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 6279524..7ecc4f1 100644 --- src/rrd_first.c +++ 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 090bca7..3bf6cd2 100644 --- src/rrd_flushcached.c +++ 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 c0ce6d4..fa8b4c4 100644 --- src/rrd_graph.c +++ src/rrd_graph.c @@@@ -4606,7 +4606,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, @@@@ -4689,7 +4689,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; @@@@ -4952,7 +4952,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 4df32ec..083cf38 100644 --- src/rrd_graph.h +++ 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 f88893b..dda0069 100644 --- src/rrd_graph_helper.c +++ 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 76277e8..f1b4313 100644 --- src/rrd_info.c +++ 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 2e05886..4b6a79f 100644 --- src/rrd_last.c +++ 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 31ab3f7..28211da 100644 --- src/rrd_lastupdate.c +++ 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 e743b9b..6e96220 100644 --- src/rrd_list.c +++ 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 6de7926..d43fec2 100644 --- src/rrd_modify.c +++ 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 d78d961..8596801 100644 --- src/rrd_modify.h +++ 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 44c1ee5..5236cd6 100644 --- src/rrd_resize.c +++ 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 14b9446..19975da 100644 --- src/rrd_restore.c +++ 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 71e2263..ddbae96 100644 --- src/rrd_tool.c +++ 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,6 +42,6 @@@@ int ChangeRoot = 0; static void PrintUsage( - char *cmd) + const char *cmd) { @@@@ -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 3374dd1..dfa8a86 100644 --- src/rrd_tune.c +++ 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 831b8ee..8989f3f 100644 --- src/rrd_update.c +++ 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}, @@@@ -668,7 +668,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 eb814fb..405c9d8 100644 --- src/rrd_xport.c +++ src/rrd_xport.c @@@@ -72,7 +72,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 340ef5b..6b51530 100644 --- src/rrdupdate.c +++ src/rrdupdate.c @@@@ -20,19 +20,20 @@@@ int main( int argc, char **argv) { + const char **cargv = (const char **)argv; char *name=basename(argv[0]); rrd_info_t *info; if (!strcmp(name, "rrdcreate")) { - rrd_create(argc, argv); + rrd_create(argc, cargv); } else if (!strcmp(name, "rrdinfo")) { - info=rrd_info(argc, argv); + info=rrd_info(argc, cargv); rrd_info_print(info); rrd_info_free(info); } else { - rrd_update(argc, argv); + rrd_update(argc, cargv); } if (rrd_test_error()) { @ 1.1 log @rrdtool: fix build with gcc14 - from fedora @ text @d1 1 a1 1 $NetBSD$ @