start_stop_daemon: optimization - do not pass paramenter, use

existing globals instead

function                                             old     new   delta
start_stop_daemon_main                               792     976    +184
check                                               1618    1620      +2
do_procinit                                          196       -    -196
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 2/0 up/down: 186/-196)          Total: -10 bytes
This commit is contained in:
Denis Vlasenko 2008-04-19 21:30:52 +00:00
parent daeddee442
commit 85d788e491

View File

@ -65,7 +65,7 @@ static int pid_is_exec(pid_t pid)
return 0; return 0;
} }
static int pid_is_user(int pid, int uid) static int pid_is_user(int pid)
{ {
struct stat sb; struct stat sb;
char buf[sizeof("/proc/") + sizeof(int)*3]; char buf[sizeof("/proc/") + sizeof(int)*3];
@ -73,10 +73,10 @@ static int pid_is_user(int pid, int uid)
sprintf(buf, "/proc/%u", pid); sprintf(buf, "/proc/%u", pid);
if (stat(buf, &sb) != 0) if (stat(buf, &sb) != 0)
return 0; return 0;
return (sb.st_uid == uid); return (sb.st_uid == user_id);
} }
static int pid_is_cmd(pid_t pid, const char *name) static int pid_is_cmd(pid_t pid)
{ {
char fname[sizeof("/proc//stat") + sizeof(int)*3]; char fname[sizeof("/proc//stat") + sizeof(int)*3];
char *buf; char *buf;
@ -90,7 +90,7 @@ static int pid_is_cmd(pid_t pid, const char *name)
char *pe = strrchr(++p, ')'); char *pe = strrchr(++p, ')');
if (pe) { if (pe) {
*pe = '\0'; *pe = '\0';
r = !strcmp(p, name); r = !strcmp(p, cmdname);
} }
} }
free(buf); free(buf);
@ -105,10 +105,10 @@ static void check(int pid)
if (execname && !pid_is_exec(pid)) { if (execname && !pid_is_exec(pid)) {
return; return;
} }
if (userspec && !pid_is_user(pid, user_id)) { if (userspec && !pid_is_user(pid)) {
return; return;
} }
if (cmdname && !pid_is_cmd(pid, cmdname)) { if (cmdname && !pid_is_cmd(pid)) {
return; return;
} }
p = xmalloc(sizeof(*p)); p = xmalloc(sizeof(*p));
@ -169,8 +169,6 @@ static int do_stop(void)
struct pid_list *p; struct pid_list *p;
int killed = 0; int killed = 0;
do_procinit();
if (cmdname) { if (cmdname) {
if (ENABLE_FEATURE_CLEAN_UP) what = xstrdup(cmdname); if (ENABLE_FEATURE_CLEAN_UP) what = xstrdup(cmdname);
if (!ENABLE_FEATURE_CLEAN_UP) what = cmdname; if (!ENABLE_FEATURE_CLEAN_UP) what = cmdname;
@ -308,13 +306,13 @@ int start_stop_daemon_main(int argc ATTRIBUTE_UNUSED, char **argv)
if (execname) if (execname)
xstat(execname, &execstat); xstat(execname, &execstat);
do_procinit(); /* Both start and stop needs to know current processes */
if (opt & CTX_STOP) { if (opt & CTX_STOP) {
int i = do_stop(); int i = do_stop();
return (opt & OPT_OKNODO) ? 0 : (i <= 0); return (opt & OPT_OKNODO) ? 0 : (i <= 0);
} }
do_procinit();
if (found) { if (found) {
if (!quiet) if (!quiet)
printf("%s already running\n%d\n", execname, found->pid); printf("%s already running\n%d\n", execname, found->pid);