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