Current compilers just produce warnings about unprototyped definitions, noting that they've been deprecated for decades now, but in C23 mode they're rejected, because they got removed, cf. draft and paper: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3054.pdf https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2841.htm In short, int whatever(a, b, c) is illegal, and int whatever() is now finally equivalent to int whatever(void); or, to put it another way, when building in C23 mode (which is not /yet/ the default), you get -- >8 -- $ make -j25 make all-recursive make[1]: Entering directory '/home/nabijaczleweli/code/dash' Making all in src make[2]: Entering directory '/home/nabijaczleweli/code/dash/src' CC builtins.def CC mknodes GEN token.h GEN token_vars.h CC mksyntax GEN builtins.h GEN syntax.h GEN nodes.h make all-am make[3]: Entering directory '/home/nabijaczleweli/code/dash/src' CC alias.o CC arith_yacc.o CC arith_yylex.o CC cd.o CC error.o CC eval.o CC exec.o CC expand.o CC histedit.o CC input.o CC jobs.o CC mail.o CC main.o CC memalloc.o CC miscbltin.o CC mystring.o CC options.o CC parser.o CC redir.o CC show.o CC trap.o CC output.o CC system.o CC bltin/printf.o CC bltin/test.o CC bltin/times.o CC var.o CC builtins.o histedit.c:376:16: warning: passing 'const char *' to parameter of type 'char *' discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers] evalstring(s, 0); ^ ./eval.h:54:22: note: passing argument to parameter here int evalstring(char *, int); ^ CC mkinit exec.c:779:18: error: unknown type name 'out' describe_command(out, command, path, verbose) ^ exec.c:779:23: error: unknown type name 'command' describe_command(out, command, path, verbose) ^ exec.c:779:32: error: unknown type name 'path' describe_command(out, command, path, verbose) ^ exec.c:779:38: error: unknown type name 'verbose' describe_command(out, command, path, verbose) ^ exec.c:779:46: error: expected ';' after top level declarator describe_command(out, command, path, verbose) ^ ; exec.c:784:1: error: expected identifier or '(' { ^ exec.c:885:12: error: unknown type name 'argc' commandcmd(argc, argv) ^ exec.c:885:18:options.c error: :unknown type name 'argv'393 :commandcmd(argc, argv)14: ^ error: unknown type name 'value' getoptsreset(value) ^ exec.c:885:23: error: expected ';' after top level declarator commandcmd(argc, argv) ^ ; options.c:393:20: exec.c:888:1: error: error: expected identifier or '(' {expected ';' after top level declarator ^ getoptsreset(value) ^ ; options.c:395:1: error: expected identifier or '(' { ^ 10 errors generated. CC nodes.o make[3]: *** [Makefile:478: exec.o] Error 1 make[3]: *** Waiting for unfinished jobs.... 3 errors generated. jobs.c:247:9: error: unknown type name 'argc' killcmd(argc, argv) ^ jobs.c:247:15: error: unknown type name 'argv' killcmd(argc, argv) ^ jobs.c:247:20: error: expected ';' after top level declarator killcmd(argc, argv) ^ ; jobs.c:250:1: error: expected identifier or '(' { ^ make[3]: *** [Makefile:478: options.o] Error 1 redir.c:288:13: error: unknown type name 'redir' dupredirect(redir, f) ^ redir.c:288:20: error: unknown type name 'f' dupredirect(redir, f) ^ redir.c:288:22: error: expected ';' after top level declarator dupredirect(redir, f) ^ ; redir.c:295:2: error: expected identifier or '(' { ^ 4 errors generated. make[3]: *** [Makefile:478: redir.o] Error 1 4 errors generated. make[3]: *** [Makefile:478: jobs.o] Error 1 nodes.c:122:10: error: unknown type name 'n' calcsize(n) ^ nodes.c:122:12: error: expected ';' after top level declarator calcsize(n) ^ ; nodes.c:124:1: error: expected identifier or '(' { ^ nodes.c:206:14: error: unknown type name 'lp' sizenodelist(lp) ^ nodes.c:206:17: error: expected ';' after top level declarator sizenodelist(lp) ^ ; nodes.c:208:1: error: expected identifier or '(' { ^ nodes.c:219:10: error: unknown type name 'n' copynode(n) ^ nodes.c:219:12: error: expected ';' after top level declarator copynode(n) ^ ; nodes.c:221:1: error: expected identifier or '(' { ^ nodes.c:317:14: error: unknown type name 'lp' copynodelist(lp) ^ nodes.c:317:17: error: expected ';' after top level declarator copynodelist(lp) ^ ; nodes.c:319:1: error: expected identifier or '(' { ^ nodes.c:339:13: error: unknown type name 's' nodesavestr(s) ^ nodes.c:339:15: error: expected ';' after top level declarator nodesavestr(s) ^ ; nodes.c:341:1: error: expected identifier or '(' { ^ 15 errors generated. make[3]: *** [Makefile:478: nodes.o] Error 1 1 warning generated. make[3]: Leaving directory '/home/nabijaczleweli/code/dash/src' -- >8 -- With this patch, you're just left with the histedit.c warning. --- Yeah, Harald's right, I completely missed that the type and linkage layout changed, I only saw the arguments move src/exec.c | 12 +++--------- src/jobs.c | 4 +--- src/mksignames.c | 3 +-- src/nodes.c.pat | 15 +++++---------- src/options.c | 3 +-- src/redir.c | 11 +++-------- 6 files changed, 14 insertions(+), 34 deletions(-) diff --git a/src/exec.c b/src/exec.c index 83cba94..5d25ce3 100644 --- a/src/exec.c +++ b/src/exec.c @@ -775,12 +775,8 @@ typecmd(int argc, char **argv) return err; } -STATIC int -describe_command(out, command, path, verbose) - struct output *out; - char *command; - const char *path; - int verbose; +static int describe_command(struct output *out, char *command, + const char *path, int verbose) { struct cmdentry entry; struct tblentry *cmdp; @@ -882,9 +878,7 @@ out: } int -commandcmd(argc, argv) - int argc; - char **argv; +commandcmd(int argc, char **argv) { char *cmd; int c; diff --git a/src/jobs.c b/src/jobs.c index f3b9ffc..6176d0c 100644 --- a/src/jobs.c +++ b/src/jobs.c @@ -244,9 +244,7 @@ close: int -killcmd(argc, argv) - int argc; - char **argv; +killcmd(int argc, char **argv) { extern char *signal_names[]; int signo = -1; diff --git a/src/mksignames.c b/src/mksignames.c index a832eab..8ccdf38 100644 --- a/src/mksignames.c +++ b/src/mksignames.c @@ -361,8 +361,7 @@ initialize_signames () } void -write_signames (stream) - FILE *stream; +write_signames (FILE *stream) { register int i; diff --git a/src/nodes.c.pat b/src/nodes.c.pat index 9125bc7..463f7f5 100644 --- a/src/nodes.c.pat +++ b/src/nodes.c.pat @@ -88,8 +88,7 @@ copyfunc(union node *n) STATIC void -calcsize(n) - union node *n; +calcsize(union node *n) { %CALCSIZE } @@ -97,8 +96,7 @@ calcsize(n) STATIC void -sizenodelist(lp) - struct nodelist *lp; +sizenodelist(struct nodelist *lp) { while (lp) { funcblocksize += SHELL_ALIGN(sizeof(struct nodelist)); @@ -110,8 +108,7 @@ sizenodelist(lp) STATIC union node * -copynode(n) - union node *n; +copynode(union node *n) { union node *new; @@ -121,8 +118,7 @@ copynode(n) STATIC struct nodelist * -copynodelist(lp) - struct nodelist *lp; +copynodelist(struct nodelist *lp) { struct nodelist *start; struct nodelist **lpp; @@ -143,8 +139,7 @@ copynodelist(lp) STATIC char * -nodesavestr(s) - char *s; +nodesavestr(char *s) { char *rtn = funcstring; diff --git a/src/options.c b/src/options.c index 2d4bd3b..2cf40b4 100644 --- a/src/options.c +++ b/src/options.c @@ -390,8 +390,7 @@ setcmd(int argc, char **argv) void -getoptsreset(value) - const char *value; +getoptsreset(const char *value) { shellparam.optind = number(value) ?: 1; shellparam.optoff = -1; diff --git a/src/redir.c b/src/redir.c index 631ddc9..a3c6baa 100644 --- a/src/redir.c +++ b/src/redir.c @@ -283,16 +283,11 @@ ecreate: STATIC void #ifdef notyet -dupredirect(redir, f, memory) +dupredirect(union node *redir, int f, char memory[10]) #else -dupredirect(redir, f) +dupredirect(union node *redir, int f) #endif - union node *redir; - int f; -#ifdef notyet - char memory[10]; -#endif - { +{ int fd = redir->nfile.fd; int err = 0; -- 2.30.2
Attachment:
signature.asc
Description: PGP signature