mirror of
https://github.com/systemd/systemd.git
synced 2024-12-22 17:35:35 +03:00
[PATCH] remove mknod callout
Patch from "Guo, Min" <min.guo@intel.com>
This commit is contained in:
parent
ea256f901e
commit
0abf54fc09
45
udev-add.c
45
udev-add.c
@ -74,45 +74,24 @@ exit:
|
||||
*/
|
||||
static int create_node(char *name, char type, int major, int minor, int mode)
|
||||
{
|
||||
char *argv[7];
|
||||
char mode_string[100];
|
||||
char type_string[3];
|
||||
char major_string[20];
|
||||
char minor_string[20];
|
||||
char filename[255];
|
||||
int retval = 0;
|
||||
|
||||
strncpy(filename, UDEV_ROOT, sizeof(filename));
|
||||
strncat(filename, name, sizeof(filename));
|
||||
if (type == 'b') {
|
||||
mode |= S_IFBLK;
|
||||
} else if ((type == 'c') || (type == 'u')){
|
||||
mode |= S_IFCHR;
|
||||
} else if ( type == 'p') {
|
||||
mode |= S_IFIFO;
|
||||
} else {
|
||||
dbg("unknown node type %c\n", type);
|
||||
return -1;
|
||||
}
|
||||
|
||||
snprintf(mode_string, sizeof(mode_string), "--mode=%#o", mode);
|
||||
snprintf(type_string, sizeof(type_string), "%c", type);
|
||||
snprintf(major_string, sizeof(major_string), "%d", major);
|
||||
snprintf(minor_string, sizeof(minor_string), "%d", minor);
|
||||
|
||||
argv[0] = MKNOD;
|
||||
argv[1] = mode_string;
|
||||
argv[2] = filename;
|
||||
argv[3] = type_string;
|
||||
argv[4] = major_string;
|
||||
argv[5] = minor_string;
|
||||
argv[6] = NULL;
|
||||
dbg ("executing %s %s %s %s %s %s",
|
||||
argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
|
||||
switch (fork()) {
|
||||
case 0:
|
||||
/* we are the child, so lets run the program */
|
||||
execv (MKNOD, argv);
|
||||
exit(0);
|
||||
break;
|
||||
case (-1):
|
||||
dbg ("fork failed.");
|
||||
retval = -EFAULT;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
retval = mknod(filename,mode,makedev(major,minor));
|
||||
return retval;
|
||||
|
||||
}
|
||||
|
||||
struct sysfs_class_device *get_class_dev(char *device_name)
|
||||
|
Loading…
Reference in New Issue
Block a user