diff options
Diffstat (limited to 'src/systemd/src/basic/parse-util.c')
-rw-r--r-- | src/systemd/src/basic/parse-util.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/systemd/src/basic/parse-util.c b/src/systemd/src/basic/parse-util.c index 8ffd9464c3..0bd551a760 100644 --- a/src/systemd/src/basic/parse-util.c +++ b/src/systemd/src/basic/parse-util.c @@ -44,6 +44,7 @@ int parse_boolean(const char *v) { return -EINVAL; } +#if 0 /* NM_IGNORED */ int parse_pid(const char *s, pid_t* ret_pid) { unsigned long ul = 0; pid_t pid; @@ -61,12 +62,13 @@ int parse_pid(const char *s, pid_t* ret_pid) { if ((unsigned long) pid != ul) return -ERANGE; - if (pid <= 0) + if (!pid_is_valid(pid)) return -ERANGE; *ret_pid = pid; return 0; } +#endif /* NM_IGNORED */ int parse_mode(const char *s, mode_t *ret) { char *x; @@ -594,4 +596,19 @@ int parse_ip_port(const char *s, uint16_t *ret) { return 0; } + +int parse_dev(const char *s, dev_t *ret) { + unsigned x, y; + dev_t d; + + if (sscanf(s, "%u:%u", &x, &y) != 2) + return -EINVAL; + + d = makedev(x, y); + if ((unsigned) major(d) != x || (unsigned) minor(d) != y) + return -EINVAL; + + *ret = d; + return 0; +} #endif /* NM_IGNORED */ |