udev_enumerate.3: Some cleanup.
[dragonfly.git] / lib / libdevattr / devattr_test.c
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 }