There was a missing ! on strcmp (despite the fact it worked in my testing,
I have no idea _how_), and a simpler fix for the extra \n problem. I tested this and it worked for me, for what that's worth...
This commit is contained in:
parent
86f5c9906b
commit
e927743bb0
@ -43,23 +43,13 @@ static void make_device(char *path)
|
|||||||
fd = open(temp, O_RDONLY);
|
fd = open(temp, O_RDONLY);
|
||||||
len = read(fd, temp, PATH_MAX-1);
|
len = read(fd, temp, PATH_MAX-1);
|
||||||
if (len<1) goto end;
|
if (len<1) goto end;
|
||||||
temp[--len] = 0; // remove trailing \n
|
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
/* Determine device name, type, major and minor */
|
/* Determine device name, type, major and minor */
|
||||||
|
|
||||||
device_name = strrchr(path, '/') + 1;
|
device_name = strrchr(path, '/') + 1;
|
||||||
type = strncmp(path+5, "block/" ,6) ? S_IFCHR : S_IFBLK;
|
type = strncmp(path+5, "block/" ,6) ? S_IFCHR : S_IFBLK;
|
||||||
major = minor = 0;
|
if(sscanf(temp, "%d:%d", &major, &minor) != 2) goto end;
|
||||||
for (s = temp; *s; s++) {
|
|
||||||
if (*s == ':') {
|
|
||||||
major = minor;
|
|
||||||
minor = 0;
|
|
||||||
} else {
|
|
||||||
minor *= 10;
|
|
||||||
minor += (*s) - '0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If we have a config file, look up permissions for this device */
|
/* If we have a config file, look up permissions for this device */
|
||||||
|
|
||||||
@ -202,7 +192,7 @@ static void find_dev(char *path)
|
|||||||
|
|
||||||
/* If there's a dev entry, mknod it */
|
/* If there's a dev entry, mknod it */
|
||||||
|
|
||||||
if (strcmp(entry->d_name, "dev")) make_device(path);
|
if (!strcmp(entry->d_name, "dev")) make_device(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
|
Loading…
Reference in New Issue
Block a user