summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@vrfy.org>2008-10-07 00:41:00 +0200
committerKay Sievers <kay.sievers@vrfy.org>2008-10-07 00:41:00 +0200
commitee173c5927649e8f2e6f42046315e84eb8e55e1b (patch)
tree2ec32dd626052a3db4d5b910b4eab279fd53f1a0
parent4df1d70329234fa10eceb02c8ecfff48e1ca9247 (diff)
replace spaces in dm and md name symlinks
We create multiple symlinks for dm names with spaces, which isn't what we want.
-rw-r--r--rules/packages/64-md-raid.rules4
-rw-r--r--rules/suse/64-device-mapper.rules2
-rw-r--r--udev/udev_rules.c12
3 files changed, 9 insertions, 9 deletions
diff --git a/rules/packages/64-md-raid.rules b/rules/packages/64-md-raid.rules
index 02a321093a..0e6a939c12 100644
--- a/rules/packages/64-md-raid.rules
+++ b/rules/packages/64-md-raid.rules
@@ -11,9 +11,9 @@ KERNEL!="md*", GOTO="md_end"
ATTR{md/array_state}=="|clear|inactive", GOTO="md_end"
IMPORT{program}="/sbin/mdadm --detail --export $tempnode"
-ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}"
+ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace"
ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}"
-ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n"
+ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace"
ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n"
IMPORT{program}="vol_id --export $tempnode"
diff --git a/rules/suse/64-device-mapper.rules b/rules/suse/64-device-mapper.rules
index b065aec554..e0a63eee72 100644
--- a/rules/suse/64-device-mapper.rules
+++ b/rules/suse/64-device-mapper.rules
@@ -8,7 +8,7 @@ ACTION!="add|change", GOTO="device_mapper_end"
IMPORT{program}="/sbin/dmsetup export -j%M -m%m"
ENV{DM_NAME}!="?*", GOTO="device_mapper_end"
-SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}"
+SYMLINK+="disk/by-id/dm-name-$env{DM_NAME}", OPTIONS+="string_escape=replace"
ENV{DM_UUID}=="?*", SYMLINK+="disk/by-id/dm-uuid-$env{DM_UUID}"
ENV{DM_STATE}=="SUSPENDED", GOTO="device_mapper_end"
diff --git a/udev/udev_rules.c b/udev/udev_rules.c
index 9527f46e79..d06f536d1e 100644
--- a/udev/udev_rules.c
+++ b/udev/udev_rules.c
@@ -1447,7 +1447,7 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice)
rule->symlink.operation == KEY_OP_ADD)) {
char temp[UTIL_PATH_SIZE];
char *pos, *next;
- int count;
+ int count = 0;
if (rule->symlink.operation == KEY_OP_ASSIGN_FINAL)
udevice->symlink_final = 1;
@@ -1459,12 +1459,12 @@ int udev_rules_get_name(struct udev_rules *rules, struct udevice *udevice)
/* allow multiple symlinks separated by spaces */
util_strlcpy(temp, key_val(rule, &rule->symlink), sizeof(temp));
udev_rules_apply_format(udevice, temp, sizeof(temp));
- if (rule->string_escape == ESCAPE_UNSET ||
- rule->string_escape == ESCAPE_REPLACE) {
+ if (rule->string_escape == ESCAPE_UNSET)
count = util_replace_chars(temp, ALLOWED_CHARS_FILE " ");
- if (count > 0)
- info(udevice->udev, "%i character(s) replaced\n" , count);
- }
+ else if (rule->string_escape == ESCAPE_REPLACE)
+ count = util_replace_chars(temp, ALLOWED_CHARS_FILE);
+ if (count > 0)
+ info(udevice->udev, "%i character(s) replaced\n" , count);
dbg(udevice->udev, "rule applied, added symlink(s) '%s'\n", temp);
pos = temp;
while (isspace(pos[0]))