mdev: fix non-working device deletion, add a test for that

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/util-linux/mdev.c b/util-linux/mdev.c
index b4042c0..cd6c1a8 100644
--- a/util-linux/mdev.c
+++ b/util-linux/mdev.c
@@ -132,6 +132,7 @@
 			major = -1;
 		}
 	}
+	/* else: for delete, -1 still deletes the node, but < -1 suppresses that */
 
 	/* Determine device name, type, major and minor */
 	device_name = (char*) bb_basename(path);
@@ -279,7 +280,7 @@
 				if (aliaslink == '!' && s == a+1) {
 					val = st;
 					/* "!": suppress node creation/deletion */
-					major = -1;
+					major = -2;
 				}
 				else if (aliaslink == '>' || aliaslink == '=') {
 					val = st;
@@ -379,7 +380,7 @@
 				free(command);
 			}
 
-			if (delete && major >= 0) {
+			if (delete && major >= -1) {
 				if (ENABLE_FEATURE_MDEV_RENAME && alias) {
 					if (aliaslink == '>')
 						unlink(device_name);