diff options
Diffstat (limited to 'src/basic/parse-util.c')
-rw-r--r-- | src/basic/parse-util.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c index c38e14d96..011355962 100644 --- a/src/basic/parse-util.c +++ b/src/basic/parse-util.c @@ -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; +} |