EFL 1.7 svn doobies
[profile/ivi/eeze.git] / src / lib / eeze_disk_udev.c
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <Ecore.h>
6 #include <Eeze.h>
7 #include <Eeze_Disk.h>
8
9 #include "eeze_udev_private.h"
10 #include "eeze_disk_private.h"
11
12 EAPI const char *
13 eeze_disk_udev_get_property(Eeze_Disk *disk, const char *property)
14 {
15    const char *ret;
16    EINA_SAFETY_ON_NULL_RETURN_VAL(disk, NULL);
17    EINA_SAFETY_ON_NULL_RETURN_VAL(property, NULL);
18    EINA_SAFETY_ON_TRUE_RETURN_VAL(!*property, NULL);
19
20    ret = udev_device_get_property_value(disk->device, property);
21    return eina_stringshare_add(ret);
22 }
23
24 EAPI const char *
25 eeze_disk_udev_get_sysattr(Eeze_Disk *disk, const char *sysattr)
26 {
27    const char *ret;
28    EINA_SAFETY_ON_NULL_RETURN_VAL(disk, NULL);
29    EINA_SAFETY_ON_NULL_RETURN_VAL(sysattr, NULL);
30    EINA_SAFETY_ON_TRUE_RETURN_VAL(!*sysattr, NULL);
31
32    ret = udev_device_get_sysattr_value(disk->device, sysattr);
33    return eina_stringshare_add(ret);
34 }
35
36 EAPI const char *
37 eeze_disk_udev_get_parent(Eeze_Disk *disk)
38 {
39    _udev_device *parent;
40    EINA_SAFETY_ON_NULL_RETURN_VAL(disk, NULL);
41
42    parent = udev_device_get_parent(disk->device);
43    return eina_stringshare_add(udev_device_get_syspath(parent));
44 }
45
46 EAPI Eina_Bool
47 eeze_disk_udev_walk_check_sysattr(Eeze_Disk *disk,
48                                   const char *sysattr,
49                                   const char *value)
50 {
51    _udev_device *child, *parent;
52    const char *test = NULL;
53
54    EINA_SAFETY_ON_NULL_RETURN_VAL(disk, EINA_FALSE);
55    EINA_SAFETY_ON_NULL_RETURN_VAL(sysattr, EINA_FALSE);
56    EINA_SAFETY_ON_TRUE_RETURN_VAL(!*sysattr, EINA_FALSE);
57
58    for (parent = disk->device; parent;
59         child = parent, parent = udev_device_get_parent(child))
60      {
61         if (!(test = udev_device_get_sysattr_value(parent, sysattr)))
62           continue;
63         if ((value && (!strcmp(test, value))) || (!value))
64           {
65              return EINA_TRUE;
66              break;
67           }
68      }
69    return EINA_FALSE;
70 }
71
72 EAPI const char *
73 eeze_disk_udev_walk_get_sysattr(Eeze_Disk *disk,
74                                   const char *sysattr)
75 {
76    _udev_device *child, *parent;
77    const char *test = NULL;
78
79    EINA_SAFETY_ON_NULL_RETURN_VAL(disk, NULL);
80    EINA_SAFETY_ON_NULL_RETURN_VAL(sysattr, NULL);
81    EINA_SAFETY_ON_TRUE_RETURN_VAL(!*sysattr, NULL);
82
83    for (parent = disk->device; parent;
84         child = parent, parent = udev_device_get_parent(child))
85      {
86         test = udev_device_get_sysattr_value(parent, sysattr);
87         if (test) return eina_stringshare_add(test);
88      }
89    return EINA_FALSE;
90 }