1 #include <stdlib.h> 2 #include <stdio.h> 3 #include "devattr.h" 4 5 int main(void) 6 { 7 struct udev *udev; 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; 12 prop_array_t pa; 13 prop_dictionary_t dict; 14 int ret; 15 16 printf("1\n"); 17 udev = udev_new(); 18 printf("2\n"); 19 udev_enum = udev_enumerate_new(udev); 20 printf("3\n"); 21 22 ret = udev_enumerate_add_match_expr(udev_enum, "name", "da*"); 23 if (ret != 0) 24 err(1, "udev_enumerate_add_match_expr, out, ret=%d\n", ret); 25 26 ret = udev_enumerate_add_match_regex(udev_enum, "name", "ad.*"); 27 if (ret != 0) 28 err(1, "udev_enumerate_add_match_regex, out, ret=%d\n", ret); 29 30 ret = udev_enumerate_scan_devices(udev_enum); 31 printf("4\n"); 32 if (ret != 0) { 33 printf("4 out...\n"); 34 err(1, "udev_enumerate_scan_device ret = %d", ret); 35 } 36 37 printf("5\n"); 38 udev_le_first = udev_enumerate_get_list_entry(udev_enum); 39 printf("6\n"); 40 if (udev_le_first == NULL) 41 err(1, "udev_enumerate_get_list_entry error"); 42 43 printf("7\n"); 44 pa = udev_enumerate_get_array(udev_enum); 45 printf("8\n"); 46 prop_array_externalize_to_file(pa, "array_out.xml"); 47 printf("9\n"); 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)); 51 } 52 53 udev_enumerate_unref(udev_enum); 54 55 udev_monitor = udev_monitor_new(udev); 56 #if 1 57 ret = udev_monitor_filter_add_match_regex(udev_monitor, "name", "vn.*"); 58 if (ret != 0) 59 err(1, "udev_monitor_filter_add_match_expr ret = %d", ret); 60 #endif 61 #if 0 62 ret = udev_monitor_filter_add_nomatch_expr(udev_monitor, "name", "vn*"); 63 if (ret != 0) 64 err(1, "udev_monitor_filter_add_match_expr2 ret = %d", ret); 65 #endif 66 ret = udev_monitor_enable_receiving(udev_monitor); 67 if (ret != 0) 68 err(1, "udev_monitor_enable_receiving ret = %d", ret); 69 70 printf("meeh\n"); 71 while ((udev_dev = udev_monitor_receive_device(udev_monitor))) { 72 printf("mooh\n"); 73 if (udev_dev == NULL) 74 err(1, "udev_monitor_receive_device failed"); 75 76 printf("foo\n"); 77 dict = udev_device_get_dictionary(udev_dev); 78 printf("xml of new device: %s\n", prop_dictionary_externalize(dict)); 79 } 80 udev_monitor_unref(udev_monitor); 81 udev_unref(udev); 82 return 0; 83 } 84