X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fbasic%2Fparse-util.c;h=01135596244836f690e31945e1a6e77761cc7734;hb=c55f016940fe25c43d779cfd4706c17eacd01a63;hp=c38e14d96a367e5329b6dda480ea4e50e7377bcf;hpb=c3e41400d106b6c2482d9d42298fac1a6a882071;p=elogind.git 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; +}