forked from enlightenment/efl
add some new functions for direct udev lookups on disk devices
SVN revision: 59412
This commit is contained in:
parent
30847d0bdc
commit
374df30b47
|
@ -1,3 +1,10 @@
|
||||||
|
2011-05-15 Mike Blumenkrantz (discomfitor/zmike)
|
||||||
|
+eeze_disk_udev_get_property
|
||||||
|
+eeze_disk_udev_get_sysattr
|
||||||
|
+eeze_disk_udev_walk_check_sysattr
|
||||||
|
+eeze_disk_udev_walk_get_sysattr
|
||||||
|
New functions to perform udev lookups directly on disk devices without wasting unnecessary function calls
|
||||||
|
|
||||||
2011-03-12 Mike Blumenkrantz (discomfitor/zmike)
|
2011-03-12 Mike Blumenkrantz (discomfitor/zmike)
|
||||||
+eeze_udev_syspath_get_devname, added from patch sent by Clement Battin
|
+eeze_udev_syspath_get_devname, added from patch sent by Clement Battin
|
||||||
|
|
||||||
|
|
|
@ -368,6 +368,49 @@ EAPI Eina_Bool eeze_mount_mtab_scan(void);
|
||||||
*/
|
*/
|
||||||
EAPI Eina_Bool eeze_mount_fstab_scan(void);
|
EAPI Eina_Bool eeze_mount_fstab_scan(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the property value of a disk
|
||||||
|
*
|
||||||
|
* @param disk The disk
|
||||||
|
* @param property The property to get; full list of these is a FIXME
|
||||||
|
* @return A stringshared char* with the property or NULL on failure
|
||||||
|
*/
|
||||||
|
|
||||||
|
EAPI const char *eeze_disk_udev_get_property(Eeze_Disk *disk, const char *property);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the sysattr value of a disk.
|
||||||
|
*
|
||||||
|
* @param disk The disk
|
||||||
|
* @param sysattr The sysattr to get; full list of these is a FIXME
|
||||||
|
* @return A stringshared char* with the sysattr or NULL on failure
|
||||||
|
*/
|
||||||
|
|
||||||
|
EAPI const char *eeze_disk_udev_get_sysattr(Eeze_Disk *disk, const char *sysattr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Walks up the device chain using the device from @p disk,
|
||||||
|
* checking each device for @p sysattr with (optional) @p value.
|
||||||
|
*
|
||||||
|
* @param disk The disk to walk
|
||||||
|
* @param sysattr The attribute to find
|
||||||
|
* @param value OPTIONAL: The value that @p sysattr should have, or NULL
|
||||||
|
*
|
||||||
|
* @return If the sysattr (with value) is found, returns TRUE. Else, false.
|
||||||
|
*/
|
||||||
|
EAPI Eina_Bool eeze_disk_udev_walk_check_sysattr(Eeze_Disk *disk, const char *sysattr, const char *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Walks up the device chain of @p disk
|
||||||
|
* checking each device for @p sysattr and returns the value if found.
|
||||||
|
*
|
||||||
|
* @param disk The disk
|
||||||
|
* @param sysattr The attribute to find
|
||||||
|
*
|
||||||
|
* @return The stringshared value of @p sysattr if found, or NULL
|
||||||
|
*/
|
||||||
|
EAPI const char *eeze_disk_udev_walk_get_sysattr(Eeze_Disk *disk, const char *sysattr);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -4,7 +4,7 @@ AM_CPPFLAGS = @EEZE_CFLAGS@
|
||||||
|
|
||||||
if HAVE_EEZE_MOUNT
|
if HAVE_EEZE_MOUNT
|
||||||
AM_CFLAGS = @EEZE_CFLAGS@ @LIBMOUNT_CFLAGS@ @ECORE_FILE_CFLAGS@
|
AM_CFLAGS = @EEZE_CFLAGS@ @LIBMOUNT_CFLAGS@ @ECORE_FILE_CFLAGS@
|
||||||
MOUNT_FILES = eeze_disk.c eeze_disk_mount.c
|
MOUNT_FILES = eeze_disk.c eeze_disk_udev.c eeze_disk_mount.c
|
||||||
if OLD_LIBMOUNT
|
if OLD_LIBMOUNT
|
||||||
MOUNT_FILES += eeze_disk_libmount_old.c
|
MOUNT_FILES += eeze_disk_libmount_old.c
|
||||||
else
|
else
|
||||||
|
|
|
@ -0,0 +1,82 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <Ecore.h>
|
||||||
|
#include <Eeze.h>
|
||||||
|
#include <Eeze_Disk.h>
|
||||||
|
|
||||||
|
#include "eeze_udev_private.h"
|
||||||
|
#include "eeze_disk_private.h"
|
||||||
|
|
||||||
|
EAPI const char *
|
||||||
|
eeze_disk_udev_get_property(Eeze_Disk *disk, const char *property)
|
||||||
|
{
|
||||||
|
const char *ret;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(disk, NULL);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(property, NULL);
|
||||||
|
EINA_SAFETY_ON_TRUE_RETURN_VAL(*property, NULL);
|
||||||
|
|
||||||
|
ret = udev_device_get_property_value(disk->device, property);
|
||||||
|
return eina_stringshare_add(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI const char *
|
||||||
|
eeze_disk_udev_get_sysattr(Eeze_Disk *disk, const char *sysattr)
|
||||||
|
{
|
||||||
|
const char *ret;
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(disk, NULL);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(sysattr, NULL);
|
||||||
|
EINA_SAFETY_ON_TRUE_RETURN_VAL(*sysattr, NULL);
|
||||||
|
|
||||||
|
ret = udev_device_get_sysattr_value(disk->device, sysattr);
|
||||||
|
return eina_stringshare_add(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
eeze_disk_udev_walk_check_sysattr(Eeze_Disk *disk,
|
||||||
|
const char *sysattr,
|
||||||
|
const char *value)
|
||||||
|
{
|
||||||
|
|
||||||
|
_udev_device *child, *parent;
|
||||||
|
const char *test = NULL;
|
||||||
|
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(disk, EINA_FALSE);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(sysattr, EINA_FALSE);
|
||||||
|
EINA_SAFETY_ON_TRUE_RETURN_VAL(*sysattr, EINA_FALSE);
|
||||||
|
|
||||||
|
for (parent = disk->device; parent;
|
||||||
|
child = parent, parent = udev_device_get_parent(child))
|
||||||
|
{
|
||||||
|
if (!(test = udev_device_get_sysattr_value(parent, sysattr)))
|
||||||
|
continue;
|
||||||
|
if ((value && (!strcmp(test, value))) || (!value))
|
||||||
|
{
|
||||||
|
return EINA_TRUE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI const char *
|
||||||
|
eeze_disk_udev_walk_get_sysattr(Eeze_Disk *disk,
|
||||||
|
const char *sysattr)
|
||||||
|
{
|
||||||
|
|
||||||
|
_udev_device *child, *parent;
|
||||||
|
const char *test = NULL;
|
||||||
|
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(disk, NULL);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(sysattr, NULL);
|
||||||
|
EINA_SAFETY_ON_TRUE_RETURN_VAL(*sysattr, NULL);
|
||||||
|
|
||||||
|
for (parent = disk->device; parent;
|
||||||
|
child = parent, parent = udev_device_get_parent(child))
|
||||||
|
{
|
||||||
|
test = udev_device_get_sysattr_value(parent, sysattr);
|
||||||
|
if (test) return eina_stringshare_add(test);
|
||||||
|
}
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
Loading…
Reference in New Issue