UDEV_ENUMERATE(3)

NAME
udev_enumerate_new, udev_enumerate_ref, udev_enumerate_unref, udev_enumerate_get_udev, udev_enumerate_scan_devices, udev_enumerate_get_array, udev_enumerate_get_list_entry, udev_list_entry_get_next, udev_list_entry_foreach, udev_list_entry_get_dictionary, udev_list_entry_get_device, udev_enumerate_add_match_subsystem, udev_enumerate_add_nomatch_subsystem, udev_enumerate_add_match_expr, udev_enumerate_add_match_property, udev_enumerate_add_nomatch_expr, udev_enumerate_add_nomatch_property, udev_enumerate_add_match_regex, udev_enumerate_add_nomatch_regex - device listing functions

LIBRARY
libdevattr

SYNOPSIS
#include <devattr.h>
struct udev_enumerate *
udev_enumerate_new(struct udev *udev_ctx);
struct udev_enumerate *
udev_enumerate_ref(struct udev_enumerate *udev_enum);
void
udev_enumerate_unref(struct udev_enumerate *udev_enum);
struct udev *
udev_enumerate_get_udev(struct udev_enumerate *udev_enum);
int
udev_enumerate_scan_devices(struct udev_enumerate *udev_enum);
prop_array_t
udev_enumerate_get_array(struct udev_enumerate *udev_enum);
struct udev_list_entry *
udev_enumerate_get_list_entry(struct udev_enumerate *udev_enum);
struct udev_list_entry *
udev_list_entry_get_next(struct udev_list_entry *list_entry);
udev_list_entry_foreach(struct udev_list_entry *list_entry, struct udev_list_entry *first_entry);
prop_dictionary_t
udev_list_entry_get_dictionary(struct udev_list_entry *list_entry);
struct udev_device *
udev_list_entry_get_device(struct udev_list_entry *list_entry);
int
udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enum, const char *subsystem);
int
udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_enum, const char *subsystem);
int
udev_enumerate_add_match_expr(struct udev_enumerate *udev_enum, const char *key, char *expr);
int
udev_enumerate_add_match_property(struct udev_enumerate *udev_enum, const char *key, const char *property);
int
udev_enumerate_add_nomatch_expr(struct udev_enumerate *udev_enum, const char *key, char *expr);
int
udev_enumerate_add_nomatch_property(struct udev_enumerate *udev_enum, const char *key, const char *property);
int
udev_enumerate_add_match_regex(struct udev_enumerate *udev_enum, const char *key, char *expr);
int
udev_enumerate_add_nomatch_regex(struct udev_enumerate *udev_enum, const char *key, char *expr);

DESCRIPTION
The udev_enumerate_new() function creates a new udev_enumerate object in the specified udev context udev_ctx. It returns NULL if no such object could be created.

The udev_enumerate_ref() and udev_enumerate_unref() functions increase or decrease the reference count on a udev_enumerate object respectively. When the reference count drops to 0, the object is automatically destroyed. The udev_enumerate_ref() function returns the same object that was passed in.

The udev_enumerate_get_udev() function returns the udev context in which the udev_enumerate object was created.

The udev_enumerate_scan_devices() function retrieves the set of devices matching the set of expressions and properties specified with previous calls to udev_enumerate_add_match_*() and udev_enumerate_add_nomatch_*(). This function returns -1 in case of failure.

The udev_enumerate_get_array() function returns the raw prop_array(3) array containing the whole set of devices retrieved by udev_enumerate_scan_devices().

The udev_enumerate_get_list_entry() function returns the first list entry of the specified udev_enumerate context or NULL if the set is empty. The udev_list_entry_get_next() returns the next list element after list_entry or NULL if the current element was the last. The udev_list_entry_foreach() is a convenient macro behaving as a for loop that will iterate the whole set starting at the list element specified by first_entry and setting list_entry to the current element.

The udev_list_entry_get_device() function returns the udev_device associated to the current list entry or NULL if no device is associated.

The udev_list_entry_get_dictionary() function returns the raw prop_dictionary(3) dictionary associated to the list entry or NULL if no dictionary is associated.

The udev_enumerate_add_match_subsystem() and udev_enumerate_add_nomatch_subsystem() functions add a filter to match or not to match, respectively, devices with the specified subsystem. These functions return a negative value if an error occurred and 0 if no error occurred.

The udev_enumerate_add_match_expr(), udev_enumerate_add_match_property(), udev_enumerate_add_nomatch_expr() and udev_enumerate_add_nomatch_property() functions add a filter to match or not to match, respectively, devices with the specified key and value expr. The expr can contain wildcards. On error, these functions return a negative value and 0 if no error occurred.

The udev_enumerate_add_match_regex(), and udev_enumerate_add_nomatch_regex() functions add a filter to match or not to match, respectively, devices with the specified key and value expr. The expr can contain regular expressions according to regex(3). On error, these functions return a negative value and 0 if no error occurred.

SEE ALSO
devattr(3), udev(3), udev_device(3), udev_monitor(3), udevd(8)