8 struct udev_enumerate *udev_enum;
9 struct udev_list_entry *udev_le, *udev_le_first;
10 struct udev_monitor *udev_monitor;
11 struct udev_device *udev_dev;
13 prop_dictionary_t dict;
19 udev_enum = udev_enumerate_new(udev);
22 ret = udev_enumerate_add_match_expr(udev_enum, "name", "da*");
24 err(1, "udev_enumerate_add_match_expr, out, ret=%d\n", ret);
26 ret = udev_enumerate_add_match_regex(udev_enum, "name", "ad.*");
28 err(1, "udev_enumerate_add_match_regex, out, ret=%d\n", ret);
30 ret = udev_enumerate_scan_devices(udev_enum);
34 err(1, "udev_enumerate_scan_device ret = %d", ret);
38 udev_le_first = udev_enumerate_get_list_entry(udev_enum);
40 if (udev_le_first == NULL)
41 err(1, "udev_enumerate_get_list_entry error");
44 pa = udev_enumerate_get_array(udev_enum);
46 prop_array_externalize_to_file(pa, "array_out.xml");
48 udev_list_entry_foreach(udev_le, udev_le_first) {
49 dict = udev_list_entry_get_dictionary(udev_le);
50 printf("xml: %s\n\n\n", prop_dictionary_externalize(dict));
53 udev_enumerate_unref(udev_enum);
55 udev_monitor = udev_monitor_new(udev);
57 ret = udev_monitor_filter_add_match_regex(udev_monitor, "name", "vn.*");
59 err(1, "udev_monitor_filter_add_match_expr ret = %d", ret);
62 ret = udev_monitor_filter_add_nomatch_expr(udev_monitor, "name", "vn*");
64 err(1, "udev_monitor_filter_add_match_expr2 ret = %d", ret);
66 ret = udev_monitor_enable_receiving(udev_monitor);
68 err(1, "udev_monitor_enable_receiving ret = %d", ret);
71 while ((udev_dev = udev_monitor_receive_device(udev_monitor))) {
74 err(1, "udev_monitor_receive_device failed");
77 dict = udev_device_get_dictionary(udev_dev);
78 printf("xml of new device: %s\n", prop_dictionary_externalize(dict));
80 udev_monitor_unref(udev_monitor);