From 4801441e9a30015c6e11b300eae49c91b5c9af7a Mon Sep 17 00:00:00 2001
From: Denis Vlasenko <vda.linux@googlemail.com>
Date: Thu, 22 May 2008 17:49:58 +0000
Subject: mdev: add support for "only rename" option in mdev.conf

---
 util-linux/mdev.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/util-linux/mdev.c b/util-linux/mdev.c
index 14aa593f5..d5faf432e 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);
 			}
-- 
cgit v1.2.3-55-g6feb