chiark / gitweb /
add builtin load/unload initializers
[elogind.git] / udev / udevadm-monitor.c
index 9b8bf4eccf50c31b84ef61a3903c014a083aa9e3..64913dbd55cbfa9acd9067b48b25d04d7b06d957 100644 (file)
@@ -64,7 +64,7 @@ static void print_device(struct udev_device *device, const char *source, int pro
        }
 }
 
-int udevadm_monitor(struct udev *udev, int argc, char *argv[])
+static int adm_monitor(struct udev *udev, int argc, char *argv[])
 {
        struct sigaction act;
        sigset_t mask;
@@ -72,8 +72,8 @@ int udevadm_monitor(struct udev *udev, int argc, char *argv[])
        bool prop = false;
        bool print_kernel = false;
        bool print_udev = false;
-       struct udev_list_node subsystem_match_list;
-       struct udev_list_node tag_match_list;
+       struct udev_list subsystem_match_list;
+       struct udev_list tag_match_list;
        struct udev_monitor *udev_monitor = NULL;
        struct udev_monitor *kernel_monitor = NULL;
        int fd_ep = -1;
@@ -92,8 +92,8 @@ int udevadm_monitor(struct udev *udev, int argc, char *argv[])
                {}
        };
 
-       udev_list_init(&subsystem_match_list);
-       udev_list_init(&tag_match_list);
+       udev_list_init(udev, &subsystem_match_list, true);
+       udev_list_init(udev, &tag_match_list, true);
 
        for (;;) {
                option = getopt_long(argc, argv, "pekus:t:h", options, NULL);
@@ -122,11 +122,11 @@ int udevadm_monitor(struct udev *udev, int argc, char *argv[])
                                        devtype[0] = '\0';
                                        devtype++;
                                }
-                               udev_list_entry_add(udev, &subsystem_match_list, subsys, devtype, 0);
+                               udev_list_entry_add(&subsystem_match_list, subsys, devtype);
                                break;
                        }
                case 't':
-                       udev_list_entry_add(udev, &tag_match_list, optarg, NULL, 0);
+                       udev_list_entry_add(&tag_match_list, optarg, NULL);
                        break;
                case 'h':
                        printf("Usage: udevadm monitor [--property] [--kernel] [--udev] [--help]\n"
@@ -285,7 +285,13 @@ out:
                close(fd_ep);
        udev_monitor_unref(udev_monitor);
        udev_monitor_unref(kernel_monitor);
-       udev_list_cleanup_entries(udev, &subsystem_match_list);
-       udev_list_cleanup_entries(udev, &tag_match_list);
+       udev_list_cleanup(&subsystem_match_list);
+       udev_list_cleanup(&tag_match_list);
        return rc;
 }
+
+const struct udevadm_cmd udevadm_monitor = {
+       .name = "monitor",
+       .cmd = adm_monitor,
+       .help = "listen to kernel and udev events",
+};