diff options
author | Denis Vlasenko | 2007-06-23 14:56:43 +0000 |
---|---|---|
committer | Denis Vlasenko | 2007-06-23 14:56:43 +0000 |
commit | 198badafd82905c9a2e76eeacb7ce463d8518bda (patch) | |
tree | fcb367654b5c6cafdca09ef189342fc7019095fc /procps | |
parent | 118b81df76be0e372309d76196c8eedf19ac56cd (diff) | |
download | busybox-198badafd82905c9a2e76eeacb7ce463d8518bda.zip busybox-198badafd82905c9a2e76eeacb7ce463d8518bda.tar.gz |
pidof: size optimizations (-50 bytes)
Diffstat (limited to 'procps')
-rw-r--r-- | procps/pidof.c | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/procps/pidof.c b/procps/pidof.c index 3541aee..01e587c 100644 --- a/procps/pidof.c +++ b/procps/pidof.c @@ -20,9 +20,9 @@ int pidof_main(int argc, char **argv); int pidof_main(int argc, char **argv) { unsigned first = 1; - unsigned fail = 1; unsigned opt; #if ENABLE_FEATURE_PIDOF_OMIT + char ppid_str[sizeof(int)*3 + 1]; llist_t *omits = NULL; /* list of pids to omit */ opt_complementary = "o::"; #endif @@ -35,14 +35,12 @@ int pidof_main(int argc, char **argv) #if ENABLE_FEATURE_PIDOF_OMIT /* fill omit list. */ { - char getppid_str[sizeof(int)*3 + 1]; - llist_t * omits_p = omits; + llist_t *omits_p = omits; while (omits_p) { /* are we asked to exclude the parent's process ID? */ - if (!strncmp(omits_p->data, "%PPID", 5)) { - llist_pop(&omits_p); - snprintf(getppid_str, sizeof(getppid_str), "%u", (unsigned)getppid()); - llist_add_to(&omits_p, getppid_str); + if (strcmp(omits_p->data, "%PPID") == 0) { + sprintf(ppid_str, "%u", (unsigned)getppid()); + omits_p->data = ppid_str; } omits_p = omits_p->link; } @@ -56,27 +54,24 @@ int pidof_main(int argc, char **argv) /* reverse the pidlist like GNU pidof does. */ pidList = pidlist_reverse(find_pid_by_name(argv[optind])); for (pl = pidList; *pl; pl++) { - SKIP_FEATURE_PIDOF_OMIT(const) unsigned omitted = 0; #if ENABLE_FEATURE_PIDOF_OMIT if (opt & OPT_OMIT) { llist_t *omits_p = omits; while (omits_p) { if (xatoul(omits_p->data) == *pl) { - omitted = 1; - break; - } else - omits_p = omits_p->link; + goto omitting; + } + omits_p = omits_p->link; } } #endif - if (!omitted) { - printf(" %u" + first, (unsigned)*pl); - first = 0; - } - fail = (!ENABLE_FEATURE_PIDOF_OMIT && omitted); - + printf(" %u" + first, (unsigned)*pl); + first = 0; if (ENABLE_FEATURE_PIDOF_SINGLE && (opt & OPT_SINGLE)) break; +#if ENABLE_FEATURE_PIDOF_OMIT + omitting: ; +#endif } free(pidList); optind++; @@ -87,5 +82,5 @@ int pidof_main(int argc, char **argv) if (ENABLE_FEATURE_CLEAN_UP) llist_free(omits, NULL); #endif - return fail ? EXIT_FAILURE : EXIT_SUCCESS; + return first; /* 1 (failure) - no processes found */ } |