Audit env(1)
1) Shorten synopsis and reflect this in the manual 2) Use argv0 in usage() 3) Decrement argc in argv-loop for consistency 4) Make it clearer which error-code results from which errno in enprintf 5) Use idiomatic for-loop also for environ. Don't increment these pointers in the loop itself!
This commit is contained in:
parent
933ed8c00b
commit
27656a0cbc
2
README
2
README
|
@ -27,7 +27,7 @@ The following tools are implemented ('*' == finished, '#' == UTF-8 support,
|
|||
=*| dirname yes none
|
||||
=* du yes none
|
||||
=*| echo yes none
|
||||
=* env yes none
|
||||
=*| env yes none
|
||||
#* expand yes none
|
||||
#* expr yes none
|
||||
=*| false yes none
|
||||
|
|
16
env.1
16
env.1
|
@ -1,4 +1,4 @@
|
|||
.Dd January 24, 2015
|
||||
.Dd March 1, 2015
|
||||
.Dt ENV 1
|
||||
.Os sbase
|
||||
.Sh NAME
|
||||
|
@ -7,15 +7,15 @@
|
|||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Fl i
|
||||
.Oo Fl u Ar variable Oc ...
|
||||
.Oo Ar variable Ns = Ns Ar value Oc ...
|
||||
.Oo Fl u Ar var Oc ...
|
||||
.Oo Ar var Ns = Ns Ar value Oc ...
|
||||
.Oo Ar cmd Oo arg ... Oc Oc
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
unsets each
|
||||
.Ar variable ,
|
||||
.Ar var ,
|
||||
then adds or sets each
|
||||
.Ar ( variable , value )
|
||||
.Ar ( var , value )
|
||||
tuple in the environment.
|
||||
.Pp
|
||||
If
|
||||
|
@ -28,11 +28,11 @@ otherwise, the modified environment is printed to stdout.
|
|||
Completely ignore the existing environment and execute
|
||||
.Ar cmd
|
||||
only with each
|
||||
.Ar ( variable , value )
|
||||
.Ar ( var , value )
|
||||
tuple specified.
|
||||
.It Fl u Ar variable
|
||||
.It Fl u Ar var
|
||||
Unset
|
||||
.Ar variable
|
||||
.Ar var
|
||||
in the environment.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
|
|
10
env.c
10
env.c
|
@ -12,7 +12,7 @@ extern char **environ;
|
|||
static void
|
||||
usage(void)
|
||||
{
|
||||
eprintf("usage: env [-i] [-u variable] ... [variable=value] ... [cmd [arg ...]]\n");
|
||||
eprintf("usage: %s [-i] [-u var] ... [var=value] ... [cmd [arg ...]]\n", argv0);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -30,16 +30,16 @@ main(int argc, char *argv[])
|
|||
usage();
|
||||
} ARGEND;
|
||||
|
||||
for (; *argv && strchr(*argv, '='); argv++)
|
||||
for (; *argv && strchr(*argv, '='); argc--, argv++)
|
||||
putenv(*argv);
|
||||
|
||||
if (*argv) {
|
||||
execvp(*argv, argv);
|
||||
enprintf(127 - (errno != EEXIST), "env: '%s':", *argv);
|
||||
enprintf(126 + (errno == EEXIST), "execvp: %s:", *argv);
|
||||
}
|
||||
|
||||
while (environ && *environ)
|
||||
printf("%s\n", *environ++);
|
||||
for (; environ && *environ; environ++)
|
||||
puts(*environ);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user