mdev: add support for "only rename" option in mdev.conf

This commit is contained in:
Denis Vlasenko 2008-05-22 17:49:58 +00:00
parent e9b76e1f1e
commit 4801441e9a

View File

@ -46,6 +46,7 @@ static void make_device(char *path, int delete)
char *dev_maj_min = path + strlen(path); char *dev_maj_min = path + strlen(path);
char *command = NULL; char *command = NULL;
char *alias = NULL; char *alias = NULL;
int aliaslink;
/* Force the configuration file settings exactly. */ /* Force the configuration file settings exactly. */
umask(0); umask(0);
@ -168,11 +169,12 @@ static void make_device(char *path, int delete)
#if ENABLE_FEATURE_MDEV_RENAME #if ENABLE_FEATURE_MDEV_RENAME
if (!next) if (!next)
break; break;
if (*next == '>') { if (*next == '>' || *next == '=') {
#if ENABLE_FEATURE_MDEV_RENAME_REGEXP #if ENABLE_FEATURE_MDEV_RENAME_REGEXP
char *s, *p; char *s, *p;
unsigned i, n; unsigned i, n;
aliaslink = (*next == '>');
val = next; val = next;
next = next_field(val); next = next_field(val);
/* substitute %1..9 with off[1..9], if any */ /* substitute %1..9 with off[1..9], if any */
@ -198,6 +200,7 @@ static void make_device(char *path, int delete)
s++; s++;
} }
#else #else
aliaslink = (*next == '>');
val = next; val = next;
next = next_field(val); next = next_field(val);
alias = xstrdup(val + 1); 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 */ /* 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); symlink(alias, device_name);
}
free(alias); free(alias);
} }