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) {
|
||||
cleanenv[0] = NULL;
|
||||
environ = cleanenv;
|
||||
} else if (opt & 2) {
|
||||
} else {
|
||||
while (unset_env) {
|
||||
unsetenv(unset_env->data);
|
||||
unset_env = unset_env->link;
|
||||
|
@ -14,24 +14,19 @@ extern char **environ;
|
||||
int printenv_main(int argc, char **argv);
|
||||
int printenv_main(int argc, char **argv)
|
||||
{
|
||||
int e = 0;
|
||||
|
||||
/* no variables specified, show whole env */
|
||||
if (argc == 1)
|
||||
if (argc == 1) {
|
||||
int e = 0;
|
||||
while (environ[e])
|
||||
puts(environ[e++]);
|
||||
|
||||
} else {
|
||||
/* search for specified variables and print them out if found */
|
||||
else {
|
||||
int i;
|
||||
size_t l;
|
||||
char *arg, *env;
|
||||
|
||||
for (i=1; (arg = argv[i]); ++i)
|
||||
for (; (env = environ[e]); ++e) {
|
||||
l = strlen(arg);
|
||||
if (!strncmp(env, arg, l) && env[l] == '=')
|
||||
puts(env + l + 1);
|
||||
while ((arg = *++argv) != NULL) {
|
||||
env = getenv(arg);
|
||||
if (env)
|
||||
puts(env);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user