]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
Merge parse-socket-bind-item.? into parse-helpers.?
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 7 Apr 2022 12:03:26 +0000 (14:03 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 7 Apr 2022 16:25:55 +0000 (18:25 +0200)
That file only exported one function, and it fits nicely within the scope of
"parse helpers". Let's move it there to reduce the file count a bit.

No functional change.

src/core/load-fragment.c
src/shared/bus-unit-util.c
src/shared/meson.build
src/shared/parse-helpers.c
src/shared/parse-helpers.h
src/shared/parse-socket-bind-item.c [deleted file]
src/shared/parse-socket-bind-item.h [deleted file]
src/test/meson.build
src/test/test-parse-helpers.c [moved from src/test/test-parse-socket-bind-item.c with 99% similarity]

index b81db4617ba2b9cd0af5e80f7e9354a5aaf36465..74c41335caefe5f00c48071c9022347a3e887e08 100644 (file)
@@ -49,7 +49,6 @@
 #include "missing_ioprio.h"
 #include "mountpoint-util.h"
 #include "nulstr-util.h"
-#include "parse-socket-bind-item.h"
 #include "parse-helpers.h"
 #include "parse-util.h"
 #include "path-util.h"
index 95ef3230b4a9675f4b7f6116d54054b703aaa45b..4f02c2c373062a8dd19a957a93b22a3595f9f718 100644 (file)
@@ -29,7 +29,7 @@
 #include "mountpoint-util.h"
 #include "nsflags.h"
 #include "numa-util.h"
-#include "parse-socket-bind-item.h"
+#include "parse-helpers.h"
 #include "parse-util.h"
 #include "path-util.h"
 #include "percent-util.h"
index 8f1f3b40a9b6dd4cfdfe1339a2775b87d1d3bbd0..1d4e4a07c04a53039f45b265281e469165838461 100644 (file)
@@ -247,8 +247,6 @@ shared_sources = files(
         'parse-argument.h',
         'parse-helpers.c',
         'parse-helpers.h',
-        'parse-socket-bind-item.c',
-        'parse-socket-bind-item.h',
         'pcre2-dlopen.c',
         'pcre2-dlopen.h',
         'pe-header.h',
index 5ebe366265adf005e30f082581872be1fa314770..a9bb58715edcc33442812c02cd961347ff7a5cc5 100644 (file)
@@ -1,7 +1,11 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "af-list.h"
+#include "extract-word.h"
+#include "ip-protocol-list.h"
 #include "log.h"
 #include "parse-helpers.h"
+#include "parse-util.h"
 #include "path-util.h"
 #include "utf8.h"
 
@@ -50,3 +54,146 @@ int path_simplify_and_warn(
 
         return 0;
 }
+
+static int parse_af_token(
+                const char *token,
+                int *family,
+                int *ip_protocol,
+                uint16_t *nr_ports,
+                uint16_t *port_min) {
+
+        int af;
+
+        assert(token);
+        assert(family);
+
+        af = af_from_ipv4_ipv6(token);
+        if (af == AF_UNSPEC)
+                return -EINVAL;
+
+        *family = af;
+        return 0;
+}
+
+static int parse_ip_protocol_token(
+                const char *token,
+                int *family,
+                int *ip_protocol,
+                uint16_t *nr_ports,
+                uint16_t *port_min) {
+
+        int proto;
+
+        assert(token);
+        assert(ip_protocol);
+
+        proto = ip_protocol_from_tcp_udp(token);
+        if (proto < 0)
+                return -EINVAL;
+
+        *ip_protocol = proto;
+        return 0;
+}
+
+static int parse_ip_ports_token(
+                const char *token,
+                int *family,
+                int *ip_protocol,
+                uint16_t *nr_ports,
+                uint16_t *port_min) {
+
+        assert(token);
+        assert(nr_ports);
+        assert(port_min);
+
+        if (streq(token, "any"))
+                *nr_ports = *port_min = 0;
+        else {
+                uint16_t mn = 0, mx = 0;
+                int r = parse_ip_port_range(token, &mn, &mx);
+                if (r < 0)
+                        return r;
+
+                *nr_ports = mx - mn + 1;
+                *port_min = mn;
+        }
+
+        return 0;
+}
+
+typedef int (*parse_token_f)(
+                const char *,
+                int *,
+                int *,
+                uint16_t *,
+                uint16_t *);
+
+int parse_socket_bind_item(
+                const char *str,
+                int *address_family,
+                int *ip_protocol,
+                uint16_t *nr_ports,
+                uint16_t *port_min) {
+
+        /* Order of token parsers is important. */
+        const parse_token_f parsers[] = {
+                &parse_af_token,
+                &parse_ip_protocol_token,
+                &parse_ip_ports_token,
+        };
+        parse_token_f const *parser_ptr = parsers;
+        int af = AF_UNSPEC, proto = 0, r;
+        uint16_t nr = 0, mn = 0;
+        const char *p = str;
+
+        assert(str);
+        assert(address_family);
+        assert(ip_protocol);
+        assert(nr_ports);
+        assert(port_min);
+
+        if (isempty(p))
+                return -EINVAL;
+
+        for (;;) {
+                _cleanup_free_ char *token = NULL;
+
+                r = extract_first_word(&p, &token, ":", EXTRACT_DONT_COALESCE_SEPARATORS);
+                if (r == 0)
+                        break;
+                if (r < 0)
+                        return r;
+
+                if (isempty(token))
+                        return -EINVAL;
+
+                while (parser_ptr != parsers + ELEMENTSOF(parsers)) {
+                        r = (*parser_ptr)(token, &af, &proto, &nr, &mn);
+                        if (r == -ENOMEM)
+                                return r;
+
+                        ++parser_ptr;
+                        /* Continue to next token if parsing succeeded,
+                         * otherwise apply next parser to the same token.
+                         */
+                        if (r >= 0)
+                                break;
+                }
+                if (parser_ptr == parsers + ELEMENTSOF(parsers))
+                                break;
+        }
+
+        /* Failed to parse a token. */
+        if (r < 0)
+                return r;
+
+        /* Parsers applied successfully, but end of the string not reached. */
+        if (p)
+                return -EINVAL;
+
+        *address_family = af;
+        *ip_protocol = proto;
+        *nr_ports = nr;
+        *port_min = mn;
+        return 0;
+}
index 8b1d33498c3e8db7d2f2fd6e0b86f5fca09a9944..49da2815fb221125addbe5e5cf470fe00dd7429e 100644 (file)
@@ -1,6 +1,8 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 #pragma once
 
+#include <stdint.h>
+
 enum {
         PATH_CHECK_FATAL    = 1 << 0,  /* If not set, then error message is appended with 'ignoring'. */
         PATH_CHECK_ABSOLUTE = 1 << 1,
@@ -14,3 +16,10 @@ int path_simplify_and_warn(
                 const char *filename,
                 unsigned line,
                 const char *lvalue);
+
+int parse_socket_bind_item(
+        const char *str,
+        int *address_family,
+        int *ip_protocol,
+        uint16_t *nr_ports,
+        uint16_t *port_min);
diff --git a/src/shared/parse-socket-bind-item.c b/src/shared/parse-socket-bind-item.c
deleted file mode 100644 (file)
index 3c92467..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-/* SPDX-License-Identifier: LGPL-2.1-or-later */
-
-#include "af-list.h"
-#include "extract-word.h"
-#include "ip-protocol-list.h"
-#include "parse-socket-bind-item.h"
-#include "parse-util.h"
-
-static int parse_af_token(
-                const char *token,
-                int *family,
-                int *ip_protocol,
-                uint16_t *nr_ports,
-                uint16_t *port_min) {
-
-        int af;
-
-        assert(token);
-        assert(family);
-
-        af = af_from_ipv4_ipv6(token);
-        if (af == AF_UNSPEC)
-                return -EINVAL;
-
-        *family = af;
-        return 0;
-}
-
-static int parse_ip_protocol_token(
-                const char *token,
-                int *family,
-                int *ip_protocol,
-                uint16_t *nr_ports,
-                uint16_t *port_min) {
-
-        int proto;
-
-        assert(token);
-        assert(ip_protocol);
-
-        proto = ip_protocol_from_tcp_udp(token);
-        if (proto < 0)
-                return -EINVAL;
-
-        *ip_protocol = proto;
-        return 0;
-}
-
-static int parse_ip_ports_token(
-                const char *token,
-                int *family,
-                int *ip_protocol,
-                uint16_t *nr_ports,
-                uint16_t *port_min) {
-
-        assert(token);
-        assert(nr_ports);
-        assert(port_min);
-
-        if (streq(token, "any"))
-                *nr_ports = *port_min = 0;
-        else {
-                uint16_t mn = 0, mx = 0;
-                int r = parse_ip_port_range(token, &mn, &mx);
-                if (r < 0)
-                        return r;
-
-                *nr_ports = mx - mn + 1;
-                *port_min = mn;
-        }
-
-        return 0;
-}
-
-typedef int (*parse_token_f)(
-                const char *,
-                int *,
-                int *,
-                uint16_t *,
-                uint16_t *);
-
-int parse_socket_bind_item(
-                const char *str,
-                int *address_family,
-                int *ip_protocol,
-                uint16_t *nr_ports,
-                uint16_t *port_min) {
-
-        /* Order of token parsers is important. */
-        const parse_token_f parsers[] = {
-                &parse_af_token,
-                &parse_ip_protocol_token,
-                &parse_ip_ports_token,
-        };
-        parse_token_f const *parser_ptr = parsers;
-        int af = AF_UNSPEC, proto = 0, r;
-        uint16_t nr = 0, mn = 0;
-        const char *p = str;
-
-        assert(str);
-        assert(address_family);
-        assert(ip_protocol);
-        assert(nr_ports);
-        assert(port_min);
-
-        if (isempty(p))
-                return -EINVAL;
-
-        for (;;) {
-                _cleanup_free_ char *token = NULL;
-
-                r = extract_first_word(&p, &token, ":", EXTRACT_DONT_COALESCE_SEPARATORS);
-                if (r == 0)
-                        break;
-                if (r < 0)
-                        return r;
-
-                if (isempty(token))
-                        return -EINVAL;
-
-                while (parser_ptr != parsers + ELEMENTSOF(parsers)) {
-                        r = (*parser_ptr)(token, &af, &proto, &nr, &mn);
-                        if (r == -ENOMEM)
-                                return r;
-
-                        ++parser_ptr;
-                        /* Continue to next token if parsing succeeded,
-                         * otherwise apply next parser to the same token.
-                         */
-                        if (r >= 0)
-                                break;
-                }
-                if (parser_ptr == parsers + ELEMENTSOF(parsers))
-                                break;
-        }
-
-        /* Failed to parse a token. */
-        if (r < 0)
-                return r;
-
-        /* Parsers applied successfully, but end of the string not reached. */
-        if (p)
-                return -EINVAL;
-
-        *address_family = af;
-        *ip_protocol = proto;
-        *nr_ports = nr;
-        *port_min = mn;
-        return 0;
-}
diff --git a/src/shared/parse-socket-bind-item.h b/src/shared/parse-socket-bind-item.h
deleted file mode 100644 (file)
index c8cff8d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/* SPDX-License-Identifier: LGPL-2.1-or-later */
-
-#pragma once
-
-#include <stdint.h>
-
-int parse_socket_bind_item(
-        const char *str,
-        int *address_family,
-        int *ip_protocol,
-        uint16_t *nr_ports,
-        uint16_t *port_min);
index 297a65d9afc54f2f743b4bed4044b64cc138debb..c189f7073b764802bd14830bfb2c3dbf643b9b24 100644 (file)
@@ -255,7 +255,7 @@ tests += [
 
         [files('test-parse-argument.c')],
 
-        [files('test-parse-socket-bind-item.c')],
+        [files('test-parse-helpers.c')],
 
         [files('test-parse-util.c')],
 
similarity index 99%
rename from src/test/test-parse-socket-bind-item.c
rename to src/test/test-parse-helpers.c
index 6bca27265c0724c7e777fb0782dc5ee82f7e2fc1..052e2514f43849374fa4b13df21a40a65137a94b 100644 (file)
@@ -5,7 +5,7 @@
 #include <stdio.h>
 
 #include "macro.h"
-#include "parse-socket-bind-item.h"
+#include "parse-helpers.h"
 #include "tests.h"
 
 static void test_valid_item(