2011-05-15 13:50:26 -07:00
|
|
|
#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);
|
2011-05-16 05:09:47 -07:00
|
|
|
EINA_SAFETY_ON_TRUE_RETURN_VAL(!*property, NULL);
|
2011-05-16 03:38:47 -07:00
|
|
|
|
2011-05-15 13:50:26 -07:00
|
|
|
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);
|
2011-05-16 05:09:47 -07:00
|
|
|
EINA_SAFETY_ON_TRUE_RETURN_VAL(!*sysattr, NULL);
|
2011-05-15 13:50:26 -07:00
|
|
|
|
|
|
|
ret = udev_device_get_sysattr_value(disk->device, sysattr);
|
|
|
|
return eina_stringshare_add(ret);
|
|
|
|
}
|
|
|
|
|
2011-05-15 17:57:16 -07:00
|
|
|
EAPI const char *
|
|
|
|
eeze_disk_udev_get_parent(Eeze_Disk *disk)
|
|
|
|
{
|
|
|
|
_udev_device *parent;
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(disk, NULL);
|
|
|
|
|
|
|
|
parent = udev_device_get_parent(disk->device);
|
|
|
|
return eina_stringshare_add(udev_device_get_syspath(parent));
|
|
|
|
}
|
|
|
|
|
2011-05-15 13:50:26 -07:00
|
|
|
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;
|
2011-05-16 03:38:47 -07:00
|
|
|
|
2011-05-15 13:50:26 -07:00
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(disk, EINA_FALSE);
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(sysattr, EINA_FALSE);
|
2011-05-16 05:09:47 -07:00
|
|
|
EINA_SAFETY_ON_TRUE_RETURN_VAL(!*sysattr, EINA_FALSE);
|
2011-05-15 13:50:26 -07:00
|
|
|
|
|
|
|
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;
|
2011-05-16 03:38:47 -07:00
|
|
|
|
2011-05-15 13:50:26 -07:00
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(disk, NULL);
|
|
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(sysattr, NULL);
|
2011-05-16 05:09:47 -07:00
|
|
|
EINA_SAFETY_ON_TRUE_RETURN_VAL(!*sysattr, NULL);
|
2011-05-15 13:50:26 -07:00
|
|
|
|
|
|
|
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);
|
|
|
|
}
|
2014-05-07 08:32:49 -07:00
|
|
|
return NULL;
|
2011-05-15 13:50:26 -07:00
|
|
|
}
|