Simplify procargs
Denys Vlasenko <[email protected]> Sun, 3 Aug 2025 18:15:13 +0200
| Newsgroups | org.kernel.vger.dash |
|---|---|
| Message-ID | <CAK1hOcPiN8HPDR-Y-w+GXVa9gZNwHuahV=g=CJ_oOM-KQW1tiA@mail.gmail.com> |
procargs(int argc, char **argv)
argc is used in just one place:
if (argc > 0)
xargv++;
Trivially replaceable by if(xargv[0] != NULL), so can avoid passing
this argument.
char **xargv;
xargv = argv;
xargv is always equal to argv, so why having a separate variable?
const char *xminusc;
xminusc = minusc;
Similar situation with xminusc being equal to minusc
during the range where it is live, they diverge here:
if (xminusc) {
minusc = *xargv++;
but after this, xminusc is not used.
0001-Simplify-procargs.patch
(text/x-patch, 2 KB)
From 7f36d8ed920f4dbb7623175df5faef2a09d84d4f Mon Sep 17 00:00:00 2001 From: Denys Vlasenko <[email protected]> Date: Sun, 3 Aug 2025 18:13:01 +0200 Subject: [PATCH] Simplify procargs Signed-off-by: Denys Vlasenko <[email protected]> --- src/main.c | 2 +- src/options.c | 12 ++++-------- src/options.h | 2 +- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/main.c b/src/main.c index 1e192f8..e9771fc 100644 --- a/src/main.c +++ b/src/main.c @@ -149,7 +149,7 @@ main(int argc, char **argv) rootpid = getpid(); init(); setstackmark(&smark); - login = procargs(argc, argv); + login = procargs(argv); if (login) { state = 1; read_profile("/etc/profile"); diff --git a/src/options.c b/src/options.c index c74e4fe..3e6c450 100644 --- a/src/options.c +++ b/src/options.c @@ -119,26 +119,22 @@ STATIC int getopts(char *, char *, char **); */ int -procargs(int argc, char **argv) +procargs(char **xargv) { int i; - const char *xminusc; - char **xargv; int login; - xargv = argv; login = xargv[0] && xargv[0][0] == '-'; arg0 = xargv[0]; - if (argc > 0) + if (xargv[0]) xargv++; for (i = 0; i < NOPTS; i++) optlist[i] = 2; argptr = xargv; login |= options(1); xargv = argptr; - xminusc = minusc; if (*xargv == NULL) { - if (xminusc) + if (minusc) sh_error("-c requires an argument"); sflag = 1; } @@ -153,7 +149,7 @@ procargs(int argc, char **argv) debug = 1; #endif /* POSIX 1003.2: first arg after -c cmd is $0, remainder $1... */ - if (xminusc) { + if (minusc) { minusc = *xargv++; if (*xargv) goto setarg0; diff --git a/src/options.h b/src/options.h index f421316..0ad5535 100644 --- a/src/options.h +++ b/src/options.h @@ -76,7 +76,7 @@ extern char **argptr; /* argument list for builtin commands */ extern char *optionarg; /* set by nextopt */ extern char *optptr; /* used by nextopt */ -int procargs(int, char **); +int procargs(char **); void optschanged(void); void setparam(char **); void freeparam(volatile struct shparam *); -- 2.41.0