1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
--- busybox-1.10.2/util-linux/mdev.c Thu May 8 17:22:48 2008
+++ busybox-1.10.2-mdev/util-linux/mdev.c Sat May 24 18:43:40 2008
@@ -72,8 +72,14 @@
/* Determine device name, type, major and minor */
device_name = bb_basename(path);
/* http://kernel.org/doc/pending/hotplug.txt says that only
- * "/sys/block/..." is for block devices. "sys/bus" etc is not! */
- type = (strncmp(&path[5], "block/", 6) == 0 ? S_IFBLK : S_IFCHR);
+ * "/sys/block/..." is for block devices. "/sys/bus" etc is not!
+ * Since kernel 2.6.25 block devices are also in /sys/class/block. */
+ /* TODO: would it be acceptable to just use strstr(path, "/block/")? */
+ if (strncmp(&path[5], "class/block/"+6, 6) != 0
+ && strncmp(&path[5], "class/block/", 12) != 0)
+ type = S_IFCHR;
+ else
+ type = S_IFBLK;
if (ENABLE_FEATURE_MDEV_CONF) {
FILE *fp;
@@ -172,8 +178,9 @@
/* substitute %1..9 with off[1..9], if any */
n = 0;
s = val;
- while (*s && *s++ == '%')
- n++;
+ while (*s)
+ if (*s++ == '%')
+ n++;
p = alias = xzalloc(strlen(val) + n * strlen(device_name));
s = val + 1;
|