summaryrefslogtreecommitdiff
path: root/src/systemd/src/basic/parse-util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemd/src/basic/parse-util.c')
-rw-r--r--src/systemd/src/basic/parse-util.c19
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 */