chiark / gitweb /
parse-util: introduce parse_dev() helper
[elogind.git] / src / basic / parse-util.c
index c38e14d96a367e5329b6dda480ea4e50e7377bcf..01135596244836f690e31945e1a6e77761cc7734 100644 (file)
@@ -595,3 +595,18 @@ int parse_ip_port(const char *s, uint16_t *ret) {
         return 0;
 }
 #endif // 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;
+}