]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev-dump: split out dump_event() from udevadm-test.c
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 11 Jan 2025 06:56:27 +0000 (15:56 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 18 Jan 2025 18:07:18 +0000 (03:07 +0900)
src/udev/meson.build
src/udev/udev-dump.c [new file with mode: 0644]
src/udev/udev-dump.h [new file with mode: 0644]
src/udev/udevadm-test.c

index f008ea1f6653772c8ca8dcd88cf13c55c8ec17b7..b1f41c4c5cfa49ca7e13dcb84b96f0295b8644a6 100644 (file)
@@ -31,6 +31,7 @@ libudevd_core_sources = files(
         'udev-builtin.c',
         'udev-config.c',
         'udev-ctrl.c',
+        'udev-dump.c',
         'udev-event.c',
         'udev-format.c',
         'udev-manager.c',
diff --git a/src/udev/udev-dump.c b/src/udev/udev-dump.c
new file mode 100644 (file)
index 0000000..5900eef
--- /dev/null
@@ -0,0 +1,96 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include "ansi-color.h"
+#include "device-private.h"
+#include "device-util.h"
+#include "format-util.h"
+#include "fs-util.h"
+#include "udev-builtin.h"
+#include "udev-dump.h"
+#include "udev-event.h"
+#include "user-util.h"
+
+void dump_event(UdevEvent *event, FILE *f) {
+        sd_device *dev = ASSERT_PTR(ASSERT_PTR(event)->dev);
+
+        if (!f)
+                f = stdout;
+
+        fprintf(f, "%sProperties:%s\n", ansi_highlight(), ansi_normal());
+        FOREACH_DEVICE_PROPERTY(dev, key, value)
+                fprintf(f, "  %s=%s\n", key, value);
+
+        if (sd_device_get_tag_first(dev)) {
+                fprintf(f, "%sTags:%s\n", ansi_highlight(), ansi_normal());
+                FOREACH_DEVICE_TAG(dev, tag)
+                        fprintf(f, "  %s\n", tag);
+        }
+
+        if (sd_device_get_devnum(dev, NULL) >= 0) {
+
+                if (sd_device_get_devlink_first(dev)) {
+                        int prio;
+                        device_get_devlink_priority(dev, &prio);
+                        fprintf(f, "%sDevice node symlinks:%s (priority=%i)\n", ansi_highlight(), ansi_normal(), prio);
+                        FOREACH_DEVICE_DEVLINK(dev, devlink)
+                                fprintf(f, "  %s\n", devlink);
+                }
+
+                fprintf(f, "%sInotify watch:%s\n  %s\n", ansi_highlight(), ansi_normal(), enabled_disabled(event->inotify_watch));
+
+                uid_t uid = event->uid;
+                if (!uid_is_valid(uid))
+                        (void) device_get_devnode_uid(dev, &uid);
+                if (uid_is_valid(uid)) {
+                        _cleanup_free_ char *user = uid_to_name(uid);
+                        fprintf(f, "%sDevice node owner:%s\n  %s (uid="UID_FMT")\n", ansi_highlight(), ansi_normal(), strna(user), uid);
+                }
+
+                gid_t gid = event->gid;
+                if (!gid_is_valid(uid))
+                        (void) device_get_devnode_gid(dev, &gid);
+                if (gid_is_valid(gid)) {
+                        _cleanup_free_ char *group = gid_to_name(gid);
+                        fprintf(f, "%sDevice node group:%s\n  %s (gid="GID_FMT")\n", ansi_highlight(), ansi_normal(), strna(group), gid);
+                }
+
+                mode_t mode = event->mode;
+                if (mode == MODE_INVALID)
+                        (void) device_get_devnode_mode(dev, &mode);
+                if (mode != MODE_INVALID)
+                        fprintf(f, "%sDevice node permission:%s\n  %04o\n", ansi_highlight(), ansi_normal(), mode);
+
+                if (!ordered_hashmap_isempty(event->seclabel_list)) {
+                        const char *name, *label;
+                        fprintf(f, "%sDevice node security label:%s\n", ansi_highlight(), ansi_normal());
+                        ORDERED_HASHMAP_FOREACH_KEY(label, name, event->seclabel_list)
+                                fprintf(f, "  %s : %s\n", name, label);
+                }
+        }
+
+        if (sd_device_get_ifindex(dev, NULL) >= 0) {
+                if (!isempty(event->name))
+                        fprintf(f, "%sNetwork interface name:%s\n  %s\n", ansi_highlight(), ansi_normal(), event->name);
+
+                if (!strv_isempty(event->altnames)) {
+                        bool space = true;
+                        fprintf(f, "%sAlternative interface names:%s", ansi_highlight(), ansi_normal());
+                        fputstrv(f, event->altnames, "\n  ", &space);
+                        fputs("\n", f);
+                }
+        }
+
+        if (!ordered_hashmap_isempty(event->run_list)) {
+                void *val;
+                const char *command;
+                fprintf(f, "%sQueued commands:%s\n", ansi_highlight(), ansi_normal());
+                ORDERED_HASHMAP_FOREACH_KEY(val, command, event->run_list) {
+                        UdevBuiltinCommand builtin_cmd = PTR_TO_UDEV_BUILTIN_CMD(val);
+
+                        if (builtin_cmd != _UDEV_BUILTIN_INVALID)
+                                fprintf(f, "  RUN{builtin} : %s\n", command);
+                        else
+                                fprintf(f, "  RUN{program} : %s\n", command);
+                }
+        }
+}
diff --git a/src/udev/udev-dump.h b/src/udev/udev-dump.h
new file mode 100644 (file)
index 0000000..6e3f136
--- /dev/null
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+#pragma once
+
+#include <stdio.h>
+
+typedef struct UdevEvent UdevEvent;
+
+void dump_event(UdevEvent *event, FILE *f);
index 088522b915f57e133917bf95252805cdad37f56a..5ceb6a5f289acc0265efa09a3bdec639f21de81e 100644 (file)
@@ -3,33 +3,19 @@
  * Copyright © 2003-2004 Greg Kroah-Hartman <greg@kroah.com>
  */
 
-#include <errno.h>
 #include <getopt.h>
 #include <signal.h>
-#include <stddef.h>
 #include <stdio.h>
-#include <stdlib.h>
-#include <sys/signalfd.h>
-#include <unistd.h>
 
 #include "sd-device.h"
 
-#include "ansi-color.h"
 #include "device-private.h"
-#include "device-util.h"
-#include "format-util.h"
-#include "path-util.h"
-#include "string-util.h"
-#include "strv.h"
-#include "strxcpyx.h"
-#include "terminal-util.h"
 #include "udev-builtin.h"
+#include "udev-dump.h"
 #include "udev-event.h"
-#include "udev-format.h"
 #include "udev-rules.h"
 #include "udevadm-util.h"
 #include "udevadm.h"
-#include "user-util.h"
 
 static sd_device_action_t arg_action = SD_DEVICE_ADD;
 static ResolveNameTiming arg_resolve_name_timing = RESOLVE_NAME_EARLY;
@@ -153,83 +139,7 @@ int test_main(int argc, char *argv[], void *userdata) {
         puts("Processing udev rules done.");
 
         puts("");
-        printf("%sProperties:%s\n", ansi_highlight(), ansi_normal());
-        FOREACH_DEVICE_PROPERTY(dev, key, value)
-                printf("  %s=%s\n", key, value);
-
-        if (sd_device_get_tag_first(dev)) {
-                printf("%sTags:%s\n", ansi_highlight(), ansi_normal());
-                FOREACH_DEVICE_TAG(dev, tag)
-                        printf("  %s\n", tag);
-        }
-
-        if (sd_device_get_devnum(dev, NULL) >= 0) {
-
-                if (sd_device_get_devlink_first(dev)) {
-                        int prio;
-                        device_get_devlink_priority(dev, &prio);
-                        printf("%sDevice node symlinks:%s (priority=%i)\n", ansi_highlight(), ansi_normal(), prio);
-                        FOREACH_DEVICE_DEVLINK(dev, devlink)
-                                printf("  %s\n", devlink);
-                }
-
-                printf("%sInotify watch:%s\n  %s\n", ansi_highlight(), ansi_normal(), enabled_disabled(event->inotify_watch));
-
-                uid_t uid = event->uid;
-                if (!uid_is_valid(uid))
-                        (void) device_get_devnode_uid(dev, &uid);
-                if (uid_is_valid(uid)) {
-                        _cleanup_free_ char *user = uid_to_name(uid);
-                        printf("%sDevice node owner:%s\n  %s (uid="UID_FMT")\n", ansi_highlight(), ansi_normal(), strna(user), uid);
-                }
-
-                gid_t gid = event->gid;
-                if (!gid_is_valid(uid))
-                        (void) device_get_devnode_gid(dev, &gid);
-                if (gid_is_valid(gid)) {
-                        _cleanup_free_ char *group = gid_to_name(gid);
-                        printf("%sDevice node group:%s\n  %s (gid="GID_FMT")\n", ansi_highlight(), ansi_normal(), strna(group), gid);
-                }
-
-                mode_t mode = event->mode;
-                if (mode == MODE_INVALID)
-                        (void) device_get_devnode_mode(dev, &mode);
-                if (mode != MODE_INVALID)
-                        printf("%sDevice node permission:%s\n  %04o\n", ansi_highlight(), ansi_normal(), mode);
-
-                if (!ordered_hashmap_isempty(event->seclabel_list)) {
-                        const char *name, *label;
-                        printf("%sDevice node security label:%s\n", ansi_highlight(), ansi_normal());
-                        ORDERED_HASHMAP_FOREACH_KEY(label, name, event->seclabel_list)
-                                printf("  %s : %s\n", name, label);
-                }
-        }
-
-        if (sd_device_get_ifindex(dev, NULL) >= 0) {
-                if (!isempty(event->name))
-                        printf("%sNetwork interface name:%s\n  %s\n", ansi_highlight(), ansi_normal(), event->name);
-
-                if (!strv_isempty(event->altnames)) {
-                        bool space = true;
-                        printf("%sAlternative interface names:%s", ansi_highlight(), ansi_normal());
-                        fputstrv(stdout, event->altnames, "\n  ", &space);
-                        puts("");
-                }
-        }
-
-        if (!ordered_hashmap_isempty(event->run_list)) {
-                void *val;
-                const char *command;
-                printf("%sQueued commands:%s\n", ansi_highlight(), ansi_normal());
-                ORDERED_HASHMAP_FOREACH_KEY(val, command, event->run_list) {
-                        UdevBuiltinCommand builtin_cmd = PTR_TO_UDEV_BUILTIN_CMD(val);
-
-                        if (builtin_cmd != _UDEV_BUILTIN_INVALID)
-                                printf("  RUN{builtin} : %s\n", command);
-                        else
-                                printf("  RUN{program} : %s\n", command);
-                }
-        }
+        dump_event(event, NULL);
 
         r = 0;
 out: