]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udevadm: move key/value parsing func. to udevadm-util.c
authorDavid Tardon <dtardon@redhat.com>
Tue, 29 Apr 2025 12:22:15 +0000 (14:22 +0200)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 9 May 2025 00:53:50 +0000 (09:53 +0900)
src/udev/udevadm-info.c
src/udev/udevadm-util.c
src/udev/udevadm-util.h

index ea66a2ad226b394a09b2a94a721d8362a1e14eb5..fd2df5b2739c09ac39595a4a6038670cefe537b3 100644 (file)
@@ -875,28 +875,6 @@ static int ensure_device_enumerator(sd_device_enumerator **e) {
         return 0;
 }
 
-static int parse_key_value_argument(const char *s, char **key, char **value) {
-        _cleanup_free_ char *k = NULL, *v = NULL;
-        int r;
-
-        assert(s);
-        assert(key);
-        assert(value);
-
-        r = extract_many_words(&s, "=", EXTRACT_DONT_COALESCE_SEPARATORS, &k, &v);
-        if (r < 0)
-                return log_error_errno(r, "Failed to parse key/value pair %s: %m", s);
-        if (r < 2)
-                return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Missing '=' in key/value pair %s.", s);
-
-        if (!filename_is_valid(k))
-                return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "%s is not a valid key name", k);
-
-        free_and_replace(*key, k);
-        free_and_replace(*value, v);
-        return 0;
-}
-
 int info_main(int argc, char *argv[], void *userdata) {
         _cleanup_(sd_device_enumerator_unrefp) sd_device_enumerator *e = NULL;
         _cleanup_strv_free_ char **devices = NULL;
index 5bede0e4daa015ed1d7e94f113ccfed2cdfe1987..0b18e2add905ad703ea9fc61aefea175e4f3fb2a 100644 (file)
@@ -145,6 +145,28 @@ int parse_resolve_name_timing(const char *str, ResolveNameTiming *ret) {
         return 1;
 }
 
+int parse_key_value_argument(const char *s, char **key, char **value) {
+        _cleanup_free_ char *k = NULL, *v = NULL;
+        int r;
+
+        assert(s);
+        assert(key);
+        assert(value);
+
+        r = extract_many_words(&s, "=", EXTRACT_DONT_COALESCE_SEPARATORS, &k, &v);
+        if (r < 0)
+                return log_error_errno(r, "Failed to parse key/value pair %s: %m", s);
+        if (r < 2)
+                return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Missing '=' in key/value pair %s.", s);
+
+        if (!filename_is_valid(k))
+                return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "%s is not a valid key name", k);
+
+        free_and_replace(*key, k);
+        free_and_replace(*value, v);
+        return 0;
+}
+
 static int udev_ping_via_ctrl(usec_t timeout_usec, bool ignore_connection_failure) {
         _cleanup_(udev_ctrl_unrefp) UdevCtrl *uctrl = NULL;
         int r;
index f9a3b99fd7371885753be77fa0bc1fb3eb988558..8a615b93398d7639e30a6cfd2e4316097b166be3 100644 (file)
@@ -10,5 +10,6 @@ int find_device(const char *id, const char *prefix, sd_device **ret);
 int find_device_with_action(const char *id, sd_device_action_t action, sd_device **ret);
 int parse_device_action(const char *str, sd_device_action_t *ret);
 int parse_resolve_name_timing(const char *str, ResolveNameTiming *ret);
+int parse_key_value_argument(const char *s, char **key, char **value);
 int udev_ping(usec_t timeout, bool ignore_connection_failure);
 int search_rules_files(char * const *a, const char *root, char ***ret);