From: наб <nabijaczleweli@nabijaczleweli.xyz>
To: dash@vger.kernel.org
Subject: [PATCH] Prototype all function definitions for C23 compat
Date: Tue, 7 Feb 2023 17:34:39 +0100 [thread overview]
Message-ID: <20230207163439.d3fqmpyh6ak3wyhw@tarta.nabijaczleweli.xyz> (raw)
[-- Attachment #1: Type: text/plain, Size: 9146 bytes --]
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.
---
src/exec.c | 10 ++--------
src/jobs.c | 4 +---
src/mksignames.c | 3 +--
src/nodes.c.pat | 15 +++++----------
src/options.c | 3 +--
src/redir.c | 11 +++--------
6 files changed, 13 insertions(+), 33 deletions(-)
diff --git a/src/exec.c b/src/exec.c
index 83cba94..2ce0605 100644
--- a/src/exec.c
+++ b/src/exec.c
@@ -776,11 +776,7 @@ typecmd(int argc, char **argv)
}
STATIC int
-describe_command(out, command, path, verbose)
- struct output *out;
- char *command;
- const char *path;
- int verbose;
+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 #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next reply other threads:[~2023-02-07 16:34 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-07 16:34 наб [this message]
2023-02-09 4:53 ` [PATCH] Prototype all function definitions for C23 compat Herbert Xu
2023-02-09 13:11 ` [PATCH v2] " наб
2023-02-10 2:43 ` Herbert Xu
2023-02-10 2:51 ` Harald van Dijk
2023-02-10 3:01 ` Herbert Xu
2023-02-10 11:24 ` [PATCH v3] " наб
2024-04-06 9:06 ` Herbert Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230207163439.d3fqmpyh6ak3wyhw@tarta.nabijaczleweli.xyz \
--to=nabijaczleweli@nabijaczleweli.xyz \
--cc=dash@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).