sbase

suckless unix tools
git clone git://git.2f30.org/sbase
Log | Files | Refs | README | LICENSE

commit eb137b9e42bc16ab92b4d4be52b27c97ec090096
parent 520d87e58ebc263d8ef975ba274c6d7afaaf149a
Author: FRIGN <dev@frign.de>
Date:   Mon,  2 Mar 2015 17:41:58 +0100

Audit chroot(1)

1) Fix usage()
2) Rename *p to *cmd
3) _exit trick with 126 + (savederrno == ENOENT)
4) return-style-fix

Diffstat:
MREADME | 2+-
Mchroot.c | 20++++++++++----------
2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/README b/README @@ -15,7 +15,7 @@ The following tools are implemented ('*' == finished, '#' == UTF-8 support, =* chgrp yes none =* chmod yes none =* chown yes none -=* chroot non-posix none +=*| chroot non-posix none =* cksum yes none =* cmp yes none #* cols non-posix none diff --git a/chroot.c b/chroot.c @@ -8,13 +8,13 @@ static void usage(void) { - eprintf("usage: chroot dir [cmd [arg ...]]\n"); + eprintf("usage: %s dir [cmd [arg ...]]\n", argv0); } int main(int argc, char *argv[]) { - char *shell[] = { "/bin/sh", "-i", NULL }, *aux, *p; + char *shell[] = { "/bin/sh", "-i", NULL }, *aux, *cmd; int savederrno; ARGBEGIN { @@ -22,7 +22,7 @@ main(int argc, char *argv[]) usage(); } ARGEND; - if (argc < 1) + if (!argc) usage(); if ((aux = getenv("SHELL"))) @@ -35,16 +35,16 @@ main(int argc, char *argv[]) eprintf("chdir:"); if (argc == 1) { - p = *shell; + cmd = *shell; execvp(*shell, shell); } else { - p = argv[1]; - execvp(argv[1], argv+1); + cmd = argv[1]; + execvp(argv[1], argv + 1); } savederrno = errno; - weprintf("execvp %s:", p); - _exit(savederrno == ENOENT ? 127 : 126); - /* unreachable */ - return 0; + weprintf("execvp %s:", cmd); + _exit(126 + (savederrno == ENOENT)); + + return 0; /* not reached */ }