[PATCH 3/3] ISO C23: Port the code to ISO C23
<[email protected]> Wed, 5 Mar 2025 10:56:27 +0100
| Newsgroups | gmane.comp.gnu.utils.bugs |
|---|---|
| Message-ID | <[email protected]> |
From: Petr Písař <[email protected]> With GCC 15, which defaults to ISO 23, a build failed, for example like this: gcc -DLOCALEDIR=\"/usr/local/share/locale\" -DHAVE_CONFIG_H -I. -I.. -I../libopts -I. -I.. -I../lib -I ../lib -I../intl -Wno-format-contains-nul -g -O2 -Wno-format-contains-nul -c -o shar.o shar.c In file included from local.h:23, from shar-opts.h:354, from shar.c:46: ../lib/system.h:78:7: error: conflicting types for ‘fdopen’; have ‘FILE *(void)’ 78 | FILE *fdopen (); | ^~~~~~ The cause is that ISO C23 changed a meaning of an empty argument list from an unspecified list to no arguments. Also K&R syntax is now deprecated and the compiler warned: encode.c: In function ‘write_encoded_bytes’: encode.c:33:1: warning: old-style function definition [-Wold-style-definition] 33 | write_encoded_bytes (group, file) | ^~~~~~~~~~~~~~~~~~~ This patch fixes both the erros and the warnigs by specifying all the arguments in the modern syntax. Signed-off-by: Petr Písař <[email protected]> --- lib/system.h | 6 +++--- src/encode.c | 13 +++---------- src/shar.c | 2 +- src/uudecode.c | 2 +- 4 files changed, 8 insertions(+), 15 deletions(-) diff --git a/lib/system.h b/lib/system.h index 2b9846b..811e8cf 100644 --- a/lib/system.h +++ b/lib/system.h @@ -52,7 +52,7 @@ typedef enum {false = 0, true = 1} bool; #endif #if !HAVE_DECL_STRTOIMAX && !defined strtoimax -intmax_t strtoimax (); +intmax_t strtoimax (const char *nptr, char **endptr, int base); #endif #if HAVE_STRING_H @@ -75,8 +75,8 @@ intmax_t strtoimax (); # include <unistd.h> #endif -FILE *fdopen (); -FILE *popen (); +FILE *fdopen (int fd, const char *mode); +FILE *popen (const char *command, const char *type); /* Global functions of the shar package. */ diff --git a/src/encode.c b/src/encode.c index 09e0c69..b1de8bd 100644 --- a/src/encode.c +++ b/src/encode.c @@ -30,9 +30,7 @@ `------------------------------------------*/ static void -write_encoded_bytes (group, file) - char *group; - FILE *file; +write_encoded_bytes (char *group, FILE *file) { int c1, c2, c3, c4; @@ -52,10 +50,7 @@ write_encoded_bytes (group, file) `--------------------------------------------------------------------*/ static int -read_raw_bytes (file, buffer, buffer_size) - FILE *file; - char *buffer; - int buffer_size; +read_raw_bytes (FILE *file, char *buffer, int buffer_size) { int character; int counter; @@ -75,9 +70,7 @@ read_raw_bytes (file, buffer, buffer_size) `----------------------------------------------------*/ void -copy_file_encoded (input, output) - FILE *input; - FILE *output; +copy_file_encoded (FILE *input, FILE *output) { char buffer[LINE_BUFFER_SIZE]; int counter; diff --git a/src/shar.c b/src/shar.c index 6d7ed1d..2c6e2e1 100644 --- a/src/shar.c +++ b/src/shar.c @@ -109,7 +109,7 @@ static inline unsigned char to_uchar (char ch) { return ch; } #define IS_GRAPH(_c) (isprint (to_uchar (_c)) && !isspace (to_uchar (_c))) #endif -struct tm *localtime (); +struct tm *localtime (const time_t *timep); #if MSDOS /* 1 extra for CR. */ diff --git a/src/uudecode.c b/src/uudecode.c index 0621c99..b8a316e 100644 --- a/src/uudecode.c +++ b/src/uudecode.c @@ -82,7 +82,7 @@ static char const cright_years_z[] = #define UU_CHMOD(_n, _fd, _m) chmod ((_n), UU_MODE_BITS(_m)) #endif -struct passwd *getpwnam (); +struct passwd *getpwnam (const char *name); static uudecode_exit_code_t read_stduu( const char *inname, const char *outname); -- 2.48.1