Files
external_libudev-zero/udev_enumerate.c
T
illiliti 7a09bb0557 init
2020-07-04 09:25:16 +03:00

163 lines
4.3 KiB
C

#include <stdlib.h>
#include "udev.h"
#include "udev_list.h"
struct udev_enumerate
{
struct udev_list_entry subsystem_nomatch;
struct udev_list_entry subsystem_match;
struct udev_list_entry sysattr_nomatch;
struct udev_list_entry property_match;
struct udev_list_entry sysattr_match;
struct udev_list_entry sysname_match;
struct udev_list_entry devices;
struct udev *udev;
int refcount;
};
UDEV_EXPORT int udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem)
{
if (!udev_enumerate || !subsystem) {
return -1;
}
return udev_list_entry_add(&udev_enumerate->subsystem_match, subsystem, NULL) ? 0 : -1;
}
UDEV_EXPORT int udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem)
{
if (!udev_enumerate || !subsystem) {
return -1;
}
return udev_list_entry_add(&udev_enumerate->subsystem_nomatch, subsystem, NULL) ? 0 : -1;
}
UDEV_EXPORT int udev_enumerate_add_match_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value)
{
if (!udev_enumerate || !sysattr) {
return -1;
}
return udev_list_entry_add(&udev_enumerate->sysattr_match, sysattr, value) ? 0 : -1;
}
UDEV_EXPORT int udev_enumerate_add_nomatch_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value)
{
if (!udev_enumerate || !sysattr) {
return -1;
}
return udev_list_entry_add(&udev_enumerate->sysattr_nomatch, sysattr, value) ? 0 : -1;
}
UDEV_EXPORT int udev_enumerate_add_match_property(struct udev_enumerate *udev_enumerate, const char *property, const char *value)
{
if (!udev_enumerate || !property) {
return -1;
}
return udev_list_entry_add(&udev_enumerate->property_match, property, value) ? 0 : -1;
}
UDEV_EXPORT int udev_enumerate_add_match_sysname(struct udev_enumerate *udev_enumerate, const char *sysname)
{
if (!udev_enumerate || !sysname) {
return -1;
}
return udev_list_entry_add(&udev_enumerate->sysname_match, sysname, NULL) ? 0 : -1;
}
UDEV_EXPORT int udev_enumerate_add_match_tag(struct udev_enumerate *udev_enumerate, const char *tag)
{
// XXX NOT IMPLEMENTED
return 0;
}
UDEV_EXPORT int udev_enumerate_add_match_parent(struct udev_enumerate *udev_enumerate, struct udev_device *parent)
{
// XXX NOT IMPLEMENTED
return 0;
}
UDEV_EXPORT int udev_enumerate_add_match_is_initialized(struct udev_enumerate *udev_enumerate)
{
return 0;
}
UDEV_EXPORT int udev_enumerate_scan_devices(struct udev_enumerate *udev_enumerate)
{
}
UDEV_EXPORT int udev_enumerate_scan_subsystems(struct udev_enumerate *udev_enumerate)
{
}
UDEV_EXPORT struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enumerate *udev_enumerate)
{
if (!udev_enumerate) {
return NULL;
}
return &udev_enumerate->devices;
}
UDEV_EXPORT int udev_enumerate_add_syspath(struct udev_enumerate *udev_enumerate, const char *syspath)
{
// XXX NOT IMPLEMENTED
return 0;
}
UDEV_EXPORT struct udev *udev_enumerate_get_udev(struct udev_enumerate *udev_enumerate)
{
if (!udev_enumerate) {
return NULL;
}
return udev_enumerate->udev;
}
UDEV_EXPORT struct udev_enumerate *udev_enumerate_new(struct udev *udev)
{
struct udev_enumerate *udev_enumerate;
if (!udev) {
return NULL;
}
udev_enumerate = calloc(1, sizeof(struct udev_enumerate));
if (!udev_enumerate) {
return NULL;
}
udev_enumerate->refcount = 1;
udev_enumerate->udev = udev;
udev_list_entry_init(&udev_enumerate->subsystem_nomatch);
udev_list_entry_init(&udev_enumerate->subsystem_match);
udev_list_entry_init(&udev_enumerate->sysattr_nomatch);
udev_list_entry_init(&udev_enumerate->property_match);
udev_list_entry_init(&udev_enumerate->sysattr_match);
udev_list_entry_init(&udev_enumerate->sysname_match);
udev_list_entry_init(&udev_enumerate->devices);
return udev_enumerate;
}
UDEV_EXPORT struct udev_enumerate *udev_enumerate_ref(struct udev_enumerate *udev_enumerate)
{
if (!udev_enumerate) {
return NULL;
}
udev_enumerate->refcount++;
return udev_enumerate;
}
UDEV_EXPORT struct udev_enumerate *udev_enumerate_unref(struct udev_enumerate *udev_enumerate)
{
}