Handle { NULL } argv[] properly in manual arg-reduction
Thanks izabera for reporting this!
This commit is contained in:
parent
ea8622a4ce
commit
e92a1aef54
|
@ -17,7 +17,7 @@ main(int argc, char *argv[])
|
||||||
ssize_t off;
|
ssize_t off;
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (argc != 1 && argc != 2)
|
if (argc != 1 && argc != 2)
|
||||||
usage();
|
usage();
|
||||||
|
|
2
chmod.c
2
chmod.c
|
@ -35,7 +35,7 @@ main(int argc, char *argv[])
|
||||||
.follow = 'P', .flags = 0 };
|
.follow = 'P', .flags = 0 };
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
for (; *argv && (*argv)[0] == '-'; argc--, argv++) {
|
for (; *argv && (*argv)[0] == '-'; argc--, argv++) {
|
||||||
if (!(*argv)[1])
|
if (!(*argv)[1])
|
||||||
|
|
2
chroot.c
2
chroot.c
|
@ -17,7 +17,7 @@ main(int argc, char *argv[])
|
||||||
char *shell[] = { "/bin/sh", "-i", NULL }, *aux, *cmd;
|
char *shell[] = { "/bin/sh", "-i", NULL }, *aux, *cmd;
|
||||||
int savederrno;
|
int savederrno;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (!argc)
|
if (!argc)
|
||||||
usage();
|
usage();
|
||||||
|
|
2
cksum.c
2
cksum.c
|
@ -97,7 +97,7 @@ main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
cksum(0, NULL);
|
cksum(0, NULL);
|
||||||
|
|
|
@ -13,7 +13,7 @@ usage(void)
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (argc != 1)
|
if (argc != 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
2
echo.c
2
echo.c
|
@ -8,7 +8,7 @@ main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int nflag = 0;
|
int nflag = 0;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (*argv && !strcmp(*argv, "-n")) {
|
if (*argv && !strcmp(*argv, "-n")) {
|
||||||
nflag = 1;
|
nflag = 1;
|
||||||
|
|
2
expr.c
2
expr.c
|
@ -257,7 +257,7 @@ main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
ret = !parse(argv, argc);
|
ret = !parse(argv, argc);
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
char host[HOST_NAME_MAX + 1];
|
char host[HOST_NAME_MAX + 1];
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
if (gethostname(host, sizeof(host)) < 0)
|
if (gethostname(host, sizeof(host)) < 0)
|
||||||
|
|
3
kill.c
3
kill.c
|
@ -62,7 +62,8 @@ main(int argc, char *argv[])
|
||||||
size_t i;
|
size_t i;
|
||||||
int ret = 0, sig = SIGTERM;
|
int ret = 0, sig = SIGTERM;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (!argc)
|
if (!argc)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
|
|
2
link.c
2
link.c
|
@ -12,7 +12,7 @@ usage(void)
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (argc != 2)
|
if (argc != 2)
|
||||||
usage();
|
usage();
|
||||||
|
|
|
@ -15,7 +15,7 @@ main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
char *login;
|
char *login;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (argc)
|
if (argc)
|
||||||
usage();
|
usage();
|
||||||
|
|
2
nohup.c
2
nohup.c
|
@ -19,7 +19,7 @@ main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int fd, savederrno;
|
int fd, savederrno;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (!argc)
|
if (!argc)
|
||||||
usage();
|
usage();
|
||||||
|
|
|
@ -12,7 +12,7 @@ main(int argc, char *argv[])
|
||||||
char *var;
|
char *var;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (!argc) {
|
if (!argc) {
|
||||||
for (; *environ; environ++)
|
for (; *environ; environ++)
|
||||||
|
|
2
setsid.c
2
setsid.c
|
@ -15,7 +15,7 @@ main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int savederrno;
|
int savederrno;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (!argc)
|
if (!argc)
|
||||||
usage();
|
usage();
|
||||||
|
|
2
sleep.c
2
sleep.c
|
@ -14,7 +14,7 @@ main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
unsigned seconds;
|
unsigned seconds;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (argc != 1)
|
if (argc != 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
2
sponge.c
2
sponge.c
|
@ -17,7 +17,7 @@ main(int argc, char *argv[])
|
||||||
char tmp[] = "/tmp/sponge-XXXXXX";
|
char tmp[] = "/tmp/sponge-XXXXXX";
|
||||||
int fd, tmpfd;
|
int fd, tmpfd;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (argc != 1)
|
if (argc != 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
2
sync.c
2
sync.c
|
@ -12,7 +12,7 @@ usage(void)
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (argc)
|
if (argc)
|
||||||
usage();
|
usage();
|
||||||
|
|
4
test.c
4
test.c
|
@ -234,9 +234,9 @@ main(int argc, char *argv[])
|
||||||
int (*narg[])(char *[]) = { noarg, onearg, twoarg, threearg, fourarg };
|
int (*narg[])(char *[]) = { noarg, onearg, twoarg, threearg, fourarg };
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
len = strlen(argv0);
|
len = argv0 ? strlen(argv0) : 0;
|
||||||
if (len && argv0[--len] == '[' && (!len || argv0[--len] == '/') && strcmp(argv[--argc], "]"))
|
if (len && argv0[--len] == '[' && (!len || argv0[--len] == '/') && strcmp(argv[--argc], "]"))
|
||||||
enprintf(2, "no matching ]\n");
|
enprintf(2, "no matching ]\n");
|
||||||
|
|
||||||
|
|
2
tty.c
2
tty.c
|
@ -15,7 +15,7 @@ main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
char *tty;
|
char *tty;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (argc)
|
if (argc)
|
||||||
usage();
|
usage();
|
||||||
|
|
2
unlink.c
2
unlink.c
|
@ -12,7 +12,7 @@ usage(void)
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (argc != 1)
|
if (argc != 1)
|
||||||
usage();
|
usage();
|
||||||
|
|
2
whoami.c
2
whoami.c
|
@ -18,7 +18,7 @@ main(int argc, char *argv[])
|
||||||
uid_t uid;
|
uid_t uid;
|
||||||
struct passwd *pw;
|
struct passwd *pw;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
if (argc)
|
if (argc)
|
||||||
usage();
|
usage();
|
||||||
|
|
2
yes.c
2
yes.c
|
@ -8,7 +8,7 @@ main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
char **p;
|
char **p;
|
||||||
|
|
||||||
argv0 = argv[0], argc--, argv++;
|
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||||
|
|
||||||
for (p = argv; ; p = (*p && *(p + 1)) ? p + 1 : argv) {
|
for (p = argv; ; p = (*p && *(p + 1)) ? p + 1 : argv) {
|
||||||
fputs(*p ? *p : "y", stdout);
|
fputs(*p ? *p : "y", stdout);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user