summaryrefslogtreecommitdiff
path: root/proclist.c
diff options
context:
space:
mode:
authorJeremie Koenig <jk@jk.fr.eu.org>2010-08-17 22:20:32 +0000
committerJeremie Koenig <jk@jk.fr.eu.org>2010-08-30 14:14:49 +0200
commit2fb5b93b4cd56fd68b525371ba63b0933b61d03a (patch)
tree77f3674f76f45e68116d69c5fee74fcd386e041d /proclist.c
parentc62d5ff73ceaad21bb0784ed6098d307a625b10d (diff)
Fetch process information and reject the non-existing ones
* process.c, process.h (process_make_node): Make static, include a procinfo structure into the node information. (process_lookup_pid): New function, replaces process_make_node as the outer interface, returns an error for non-existing processes. * proclist.c (proclist_lookup): Convert to the new interface.
Diffstat (limited to 'proclist.c')
-rw-r--r--proclist.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/proclist.c b/proclist.c
index 148e4bc3..75b61a2e 100644
--- a/proclist.c
+++ b/proclist.c
@@ -52,12 +52,18 @@ proclist_lookup (void *hook, const char *name, struct node **np)
char *endp;
pid_t pid;
+ /* Self-lookups should not end up here. */
+ assert (name[0]);
+
+ /* No leading zeros allowed */
+ if (name[0] == '0' && name[1])
+ return ENOENT;
+
pid = strtol (name, &endp, 10);
- if (name[0] == '0' || !name[0] || *endp)
+ if (*endp)
return ENOENT;
- *np = process_make_node (pl->process, pid);
- return *np ? 0 : ENOMEM;
+ return process_lookup_pid (pl->process, pid, np);
}
struct node *