X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Futil.c;h=8f70c0f28a143de8611a020f704c3caf81023fd5;hp=ed0991a68b45d1a4b699f6de08ca54dcf81797e5;hb=3ba686c107b2b33e706f59432584875a4152d19a;hpb=4a2a8b5a82325494f5daf4c66c23fdb4f906c9e6 diff --git a/src/util.c b/src/util.c index ed0991a68..8f70c0f28 100644 --- a/src/util.c +++ b/src/util.c @@ -241,6 +241,29 @@ int parse_boolean(const char *v) { return -EINVAL; } +int parse_pid(const char *s, pid_t* ret_pid) { + unsigned long ul; + pid_t pid; + int r; + + assert(s); + assert(ret_pid); + + if ((r = safe_atolu(s, &ul)) < 0) + return r; + + pid = (pid_t) ul; + + if ((unsigned long) pid != ul) + return -ERANGE; + + if (pid <= 0) + return -ERANGE; + + *ret_pid = pid; + return 0; +} + int safe_atou(const char *s, unsigned *ret_u) { char *x = NULL; unsigned long l;