chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] pre-libsysfs-0.4.0 patch
[elogind.git]
/
namedev.c
diff --git
a/namedev.c
b/namedev.c
index ea75bc5d8f661f9ab6bd5f4e25ed5033e67e6178..633a7bf0dad1f7b892aa68575f7c241a1c4911ab 100644
(file)
--- a/
namedev.c
+++ b/
namedev.c
@@
-121,6
+121,7
@@
int add_config_dev(struct config_device *new_dev)
copy_string(dev, new_dev, place);
copy_string(dev, new_dev, kernel_name);
copy_string(dev, new_dev, exec_program);
copy_string(dev, new_dev, place);
copy_string(dev, new_dev, kernel_name);
copy_string(dev, new_dev, exec_program);
+ copy_string(dev, new_dev, symlink);
return 0;
}
return 0;
}
@@
-222,7
+223,7
@@
static void apply_format(struct udevice *udev, unsigned char *string)
break;
case 'D':
if (strlen(udev->kernel_number) == 0) {
break;
case 'D':
if (strlen(udev->kernel_number) == 0) {
- strcat(pos, "dis
k
");
+ strcat(pos, "dis
c
");
break;
}
strcat(pos, "part");
break;
}
strcat(pos, "part");
@@
-366,6
+367,7
@@
static int do_callout(struct sysfs_class_device *class_dev, struct udevice *udev
if (strcmp_pattern(dev->id, udev->callout_value) != 0)
continue;
strfieldcpy(udev->name, dev->name);
if (strcmp_pattern(dev->id, udev->callout_value) != 0)
continue;
strfieldcpy(udev->name, dev->name);
+ strfieldcpy(udev->symlink, dev->symlink);
dbg("callout returned matching value '%s', '%s' becomes '%s'",
dev->id, class_dev->name, udev->name);
return 0;
dbg("callout returned matching value '%s', '%s' becomes '%s'",
dev->id, class_dev->name, udev->name);
return 0;
@@
-412,10
+414,11
@@
label_found:
*c = 0x00;
dbg("compare attribute '%s' value '%s' with '%s'",
dev->sysfs_file, tmpattr->value, dev->sysfs_value);
*c = 0x00;
dbg("compare attribute '%s' value '%s' with '%s'",
dev->sysfs_file, tmpattr->value, dev->sysfs_value);
- if (strcmp(dev->sysfs_value, tmpattr->value) != 0)
+ if (strcmp
_pattern
(dev->sysfs_value, tmpattr->value) != 0)
continue;
strfieldcpy(udev->name, dev->name);
continue;
strfieldcpy(udev->name, dev->name);
+ strfieldcpy(udev->symlink, dev->symlink);
dbg("found matching attribute '%s', '%s' becomes '%s' ",
dev->sysfs_file, class_dev->name, udev->name);
dbg("found matching attribute '%s', '%s' becomes '%s' ",
dev->sysfs_file, class_dev->name, udev->name);
@@
-461,6
+464,7
@@
static int do_number(struct sysfs_class_device *class_dev, struct udevice *udev,
if (!found)
continue;
strfieldcpy(udev->name, dev->name);
if (!found)
continue;
strfieldcpy(udev->name, dev->name);
+ strfieldcpy(udev->symlink, dev->symlink);
dbg("found matching id '%s', '%s' becomes '%s'",
dev->id, class_dev->name, udev->name);
return 0;
dbg("found matching id '%s', '%s' becomes '%s'",
dev->id, class_dev->name, udev->name);
return 0;
@@
-506,6
+510,7
@@
static int do_topology(struct sysfs_class_device *class_dev, struct udevice *ude
continue;
strfieldcpy(udev->name, dev->name);
continue;
strfieldcpy(udev->name, dev->name);
+ strfieldcpy(udev->symlink, dev->symlink);
dbg("found matching place '%s', '%s' becomes '%s'",
dev->place, class_dev->name, udev->name);
return 0;
dbg("found matching place '%s', '%s' becomes '%s'",
dev->place, class_dev->name, udev->name);
return 0;
@@
-528,6
+533,7
@@
static int do_replace(struct sysfs_class_device *class_dev, struct udevice *udev
continue;
strfieldcpy(udev->name, dev->name);
continue;
strfieldcpy(udev->name, dev->name);
+ strfieldcpy(udev->symlink, dev->symlink);
dbg("found name, '%s' becomes '%s'", dev->kernel_name, udev->name);
return 0;
dbg("found name, '%s' becomes '%s'", dev->kernel_name, udev->name);
return 0;
@@
-546,37
+552,29
@@
int namedev_name_device(struct sysfs_class_device *class_dev, struct udevice *ud
struct sysfs_device *sysfs_device = NULL;
struct sysfs_class_device *class_dev_parent = NULL;
int retval = 0;
struct sysfs_device *sysfs_device = NULL;
struct sysfs_class_device *class_dev_parent = NULL;
int retval = 0;
- char *temp = NULL;
struct perm_device *perm;
udev->mode = 0;
/* find the sysfs_device for this class device */
/* Wouldn't it really be nice if libsysfs could do this for us? */
struct perm_device *perm;
udev->mode = 0;
/* find the sysfs_device for this class device */
/* Wouldn't it really be nice if libsysfs could do this for us? */
- if (class_dev->sysdevice) {
- sysfs_device = class_dev->sysdevice;
- } else {
+ sysfs_device = sysfs_get_classdev_device(class_dev);
+ if (sysfs_device == NULL) {
/* bah, let's go backwards up a level to see if the device is there,
* as block partitions don't point to the physical device. Need to fix that
* up in the kernel...
*/
/* bah, let's go backwards up a level to see if the device is there,
* as block partitions don't point to the physical device. Need to fix that
* up in the kernel...
*/
- if (str
str(class_dev->path, "block")
) {
+ if (str
cmp(class_dev->classname, SYSFS_BLOCK_NAME) == 0
) {
dbg("looking at block device");
if (isdigit(class_dev->path[strlen(class_dev->path)-1])) {
dbg("looking at block device");
if (isdigit(class_dev->path[strlen(class_dev->path)-1])) {
- char path[SYSFS_PATH_MAX];
-
dbg("really is a partition");
dbg("really is a partition");
- strfieldcpy(path, class_dev->path);
- temp = strrchr(path, '/');
- *temp = 0x00;
- dbg("looking for a class device at '%s'", path);
- class_dev_parent = sysfs_open_class_device(path);
+ class_dev_parent = sysfs_get_classdev_parent
+ (class_dev);
if (class_dev_parent == NULL) {
if (class_dev_parent == NULL) {
- dbg("sysfs_
open_class_device at '%s' failed", path
);
+ dbg("sysfs_
get_classdev_parent for class device '%s' failed", class_dev->name
);
} else {
dbg("class_dev_parent->name='%s'", class_dev_parent->name);
} else {
dbg("class_dev_parent->name='%s'", class_dev_parent->name);
- if (class_dev_parent->sysdevice)
- sysfs_device = class_dev_parent->sysdevice;
+ sysfs_device = sysfs_get_classdev_device(class_dev_parent);
}
}
}
}
}
}
@@
-618,8
+616,9
@@
int namedev_name_device(struct sysfs_class_device *class_dev, struct udevice *ud
goto done;
found:
goto done;
found:
- /* substitute placeholder
in NAME
*/
+ /* substitute placeholder */
apply_format(udev, udev->name);
apply_format(udev, udev->name);
+ apply_format(udev, udev->symlink);
done:
perm = find_perm(udev->name);
done:
perm = find_perm(udev->name);
@@
-636,9
+635,6
@@
done:
dbg("name, '%s' is going to have owner='%s', group='%s', mode = %#o",
udev->name, udev->owner, udev->group, udev->mode);
dbg("name, '%s' is going to have owner='%s', group='%s', mode = %#o",
udev->name, udev->owner, udev->group, udev->mode);
- if (class_dev_parent)
- sysfs_close_class_device(class_dev_parent);
-
return 0;
}
return 0;
}