diff options
-rw-r--r-- | util-linux/mdev.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/util-linux/mdev.c b/util-linux/mdev.c index 14aa593..d5faf43 100644 --- a/util-linux/mdev.c +++ b/util-linux/mdev.c @@ -46,6 +46,7 @@ static void make_device(char *path, int delete) char *dev_maj_min = path + strlen(path); char *command = NULL; char *alias = NULL; + int aliaslink; /* Force the configuration file settings exactly. */ umask(0); @@ -168,11 +169,12 @@ static void make_device(char *path, int delete) #if ENABLE_FEATURE_MDEV_RENAME if (!next) break; - if (*next == '>') { + if (*next == '>' || *next == '=') { #if ENABLE_FEATURE_MDEV_RENAME_REGEXP char *s, *p; unsigned i, n; + aliaslink = (*next == '>'); val = next; next = next_field(val); /* substitute %1..9 with off[1..9], if any */ @@ -198,6 +200,7 @@ static void make_device(char *path, int delete) s++; } #else + aliaslink = (*next == '>'); val = next; next = next_field(val); alias = xstrdup(val + 1); @@ -269,9 +272,8 @@ static void make_device(char *path, int delete) } /* recreate device_name as a symlink to moved device node */ - if (rename(device_name, alias) == 0) { + if (rename(device_name, alias) == 0 && aliaslink) symlink(alias, device_name); - } free(alias); } |