somehow I forgot a sysattr function...

SVN revision: 49058
This commit is contained in:
Mike Blumenkrantz 2010-05-20 07:30:41 +00:00
parent 9ec074719a
commit e7baca25dc
2 changed files with 41 additions and 5 deletions

View File

@ -85,6 +85,7 @@
* @ingroup udev
*/
/*bitmasks for watch events*/
#define EEZE_UDEV_EVENT_NONE 0x0000
#define EEZE_UDEV_EVENT_ADD 0x0001
#define EEZE_UDEV_EVENT_REMOVE 0x0001
@ -130,6 +131,7 @@ extern "C" {
EAPI const char *eeze_udev_syspath_get_devpath(const char *syspath);
EAPI const char *eeze_udev_syspath_get_subsystem(const char *syspath);
EAPI const char *eeze_udev_syspath_get_property(const char *syspath, const char *property);
EAPI const char *eeze_udev_syspath_get_sysattr(const char *syspath, const char *sysattr);
EAPI const char *eeze_udev_devpath_get_syspath(const char *devpath);
EAPI const char *eeze_udev_devpath_get_subsystem(const char *devpath);

View File

@ -171,10 +171,7 @@ eeze_udev_syspath_get_subsystem(const char *syspath)
*
* @param syspath The /sys/ path with or without the /sys/
* @param property The property to get; full list of these is a FIXME
* @return A const char* with the subsystem of the device or NULL on failure
*
* Takes /sys/$PATH and returns the corresponding device subsystem,
* such as "input" for keyboards/mice.
* @return A const char* with the property or NULL on failure
*
* @ingroup udev
*/
@ -186,7 +183,7 @@ eeze_udev_syspath_get_property(const char *syspath, const char *property)
const char *value = NULL, *test;
Eina_Strbuf *sbuf;
if (!syspath) return NULL;
if (!syspath || !property) return NULL;
udev = udev_new();
if (!udev) return NULL;
@ -206,6 +203,43 @@ eeze_udev_syspath_get_property(const char *syspath, const char *property)
return value;
}
/**
* Get the sysattr value of a device from the /sys/ path.
*
* @param syspath The /sys/ path with or without the /sys/
* @param sysattr The sysattr to get; full list of these is a FIXME
* @return A const char* with the sysattr or NULL on failure
*
* @ingroup udev
*/
EAPI const char *
eeze_udev_syspath_get_sysattr(const char *syspath, const char *sysattr)
{
struct udev *udev;
struct udev_device *device;
const char *value = NULL, *test;
Eina_Strbuf *sbuf;
if (!syspath || !sysattr) return NULL;
udev = udev_new();
if (!udev) return NULL;
sbuf = eina_strbuf_new();
if (!strstr(syspath, "/sys/"))
eina_strbuf_append(sbuf, "/sys/");
eina_strbuf_append(sbuf, syspath);
device = udev_device_new_from_syspath(udev, eina_strbuf_string_get(sbuf));
if ((test = udev_device_get_sysattr_value(device, sysattr)));
value = eina_stringshare_add(test);
udev_device_unref(device);
udev_unref(udev);
eina_strbuf_free(sbuf);
return value;
}
/**
* Get the syspath of a device from the /dev/ path.
*