env: micro-optimization
printenv: fix "printenv VAR1 VAR2" bug (wasn't printing VAR2) (spotted by kalyanatejaswi balabhadrapatruni <kalyanatejaswi@yahoo.co.in>) env_main 267 260 -7 printenv_main 147 75 -72 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-79) Total: -79 bytes text data bss dec hex filename 770336 1096 11228 782660 bf144 busybox_old 770256 1096 11228 782580 bf0f4 busybox_unstripped
This commit is contained in:
parent
84d71f33f5
commit
e013475830
@ -63,7 +63,7 @@ int env_main(int argc, char** argv)
|
|||||||
if (opt & 1) {
|
if (opt & 1) {
|
||||||
cleanenv[0] = NULL;
|
cleanenv[0] = NULL;
|
||||||
environ = cleanenv;
|
environ = cleanenv;
|
||||||
} else if (opt & 2) {
|
} else {
|
||||||
while (unset_env) {
|
while (unset_env) {
|
||||||
unsetenv(unset_env->data);
|
unsetenv(unset_env->data);
|
||||||
unset_env = unset_env->link;
|
unset_env = unset_env->link;
|
||||||
|
@ -14,25 +14,20 @@ extern char **environ;
|
|||||||
int printenv_main(int argc, char **argv);
|
int printenv_main(int argc, char **argv);
|
||||||
int printenv_main(int argc, char **argv)
|
int printenv_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int e = 0;
|
|
||||||
|
|
||||||
/* no variables specified, show whole env */
|
/* no variables specified, show whole env */
|
||||||
if (argc == 1)
|
if (argc == 1) {
|
||||||
|
int e = 0;
|
||||||
while (environ[e])
|
while (environ[e])
|
||||||
puts(environ[e++]);
|
puts(environ[e++]);
|
||||||
|
} else {
|
||||||
/* search for specified variables and print them out if found */
|
/* search for specified variables and print them out if found */
|
||||||
else {
|
|
||||||
int i;
|
|
||||||
size_t l;
|
|
||||||
char *arg, *env;
|
char *arg, *env;
|
||||||
|
|
||||||
for (i=1; (arg = argv[i]); ++i)
|
while ((arg = *++argv) != NULL) {
|
||||||
for (; (env = environ[e]); ++e) {
|
env = getenv(arg);
|
||||||
l = strlen(arg);
|
if (env)
|
||||||
if (!strncmp(env, arg, l) && env[l] == '=')
|
puts(env);
|
||||||
puts(env + l + 1);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fflush_stdout_and_exit(0);
|
fflush_stdout_and_exit(0);
|
||||||
|
Loading…
Reference in New Issue
Block a user