diff options
author | David Tardon <dtardon@redhat.com> | 2023-05-05 08:09:14 +0200 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2023-05-05 08:54:28 +0200 |
commit | b8f83d7f0c35dca6ca3a23c42215d566e2815ca5 (patch) | |
tree | 3d6713e2a00c49626ae857361ab71103ad4d4e2a | |
parent | 9f2f16a344e8a7660756859dcd303f0bf5763b05 (diff) | |
download | systemd-b8f83d7f0c35dca6ca3a23c42215d566e2815ca5.tar.gz |
fd-util: introduce parse_fd()
It's a simple wrapper for safe_atoi() that returns error if the parsed
fd is < 0 .
-rw-r--r-- | src/basic/parse-util.c | 15 | ||||
-rw-r--r-- | src/basic/parse-util.h | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c index a53cbc73b8..d6138f0295 100644 --- a/src/basic/parse-util.c +++ b/src/basic/parse-util.c @@ -333,6 +333,21 @@ int parse_errno(const char *t) { return e; } +int parse_fd(const char *t) { + int r, fd; + + assert(t); + + r = safe_atoi(t, &fd); + if (r < 0) + return r; + + if (fd < 0) + return -ERANGE; + + return fd; +} + static const char *mangle_base(const char *s, unsigned *base) { const char *k; diff --git a/src/basic/parse-util.h b/src/basic/parse-util.h index 877199529d..c480407c2a 100644 --- a/src/basic/parse-util.h +++ b/src/basic/parse-util.h @@ -21,6 +21,7 @@ int parse_size(const char *t, uint64_t base, uint64_t *size); int parse_sector_size(const char *t, uint64_t *ret); int parse_range(const char *t, unsigned *lower, unsigned *upper); int parse_errno(const char *t); +int parse_fd(const char *t); #define SAFE_ATO_REFUSE_PLUS_MINUS (1U << 30) #define SAFE_ATO_REFUSE_LEADING_ZERO (1U << 29) |