xref: /dflybsd-src/lib/libdevattr/devattr_test.c (revision d6f1548688ce6fc623d8ec7fca44865ddde2a5d7)
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