]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fd-util: introduce parse_fd()
authorDavid Tardon <dtardon@redhat.com>
Fri, 5 May 2023 06:09:14 +0000 (08:09 +0200)
committerDavid Tardon <dtardon@redhat.com>
Fri, 5 May 2023 06:54:28 +0000 (08:54 +0200)
It's a simple wrapper for safe_atoi() that returns error if the parsed
fd is < 0 .

src/basic/parse-util.c
src/basic/parse-util.h

index a53cbc73b89e12f3774456d4b93bd6429e99dddd..d6138f02958b0c5f4d7a9ed884e87ee6c09ad843 100644 (file)
@@ -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;
 
index 877199529ddc607adc0843b0a734bbfeba5130d6..c480407c2a57a9bd1d1c1f960d7e23e04cb15c9e 100644 (file)
@@ -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)