From 0348c8fcfaa22d4f2bf548ad9c187c09ef90c533 Mon Sep 17 00:00:00 2001 From: Alex Richardson Date: Tue, 19 Jan 2021 11:35:04 +0000 Subject: [PATCH] getopt: Fix conversion from string-literal to non-const char * Define a non-const static char EMSG[] = "" to avoid having to add __DECONST() to all uses of EMSG. Also make current_dash a const char * to fix this warning. --- lib/libc/stdlib/getopt.c | 3 +-- lib/libc/stdlib/getopt_long.c | 4 ++-- tools/build/mk/Makefile.boot | 1 + 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/libc/stdlib/getopt.c b/lib/libc/stdlib/getopt.c index b6bdf8a1eeaf..b7f2229a2f54 100644 --- a/lib/libc/stdlib/getopt.c +++ b/lib/libc/stdlib/getopt.c @@ -54,8 +54,7 @@ char *optarg; /* argument associated with option */ #define BADCH (int)'?' #define BADARG (int)':' -#define EMSG "" - +static char EMSG[] = ""; /* * getopt -- * Parse argc/argv argument vector. diff --git a/lib/libc/stdlib/getopt_long.c b/lib/libc/stdlib/getopt_long.c index 4d92fd0cd45d..1f3548bef9ad 100644 --- a/lib/libc/stdlib/getopt_long.c +++ b/lib/libc/stdlib/getopt_long.c @@ -88,7 +88,7 @@ char *optarg; /* argument associated with option */ #define BADARG ((*options == ':') ? (int)':' : (int)'?') #define INORDER (int)1 -#define EMSG "" +static char EMSG[] = ""; #ifdef GNU_COMPATIBLE #define NO_PREFIX (-1) @@ -194,7 +194,7 @@ parse_long_options(char * const *nargv, const char *options, { char *current_argv, *has_equal; #ifdef GNU_COMPATIBLE - char *current_dash; + const char *current_dash; #endif size_t current_argv_len; int i, match, exact_match, second_partial_match; diff --git a/tools/build/mk/Makefile.boot b/tools/build/mk/Makefile.boot index 38df8135e53b..7ebbf726e7f2 100644 --- a/tools/build/mk/Makefile.boot +++ b/tools/build/mk/Makefile.boot @@ -41,6 +41,7 @@ CWARNFLAGS+= -Wno-typedef-redefinition # bsd.sys.mk explicitly turns on -Wsystem-headers, but that's extremely # noisy when building on Linux. CWARNFLAGS+= -Wno-system-headers +CWARNFLAGS.clang+=-Werror=incompatible-pointer-types-discards-qualifiers # b64_pton and b64_ntop is in libresolv on MacOS and Linux: # TODO: only needed for uuencode and uudecode