chiark / gitweb /
[PATCH] remove mknod callout
authorgreg@kroah.com <greg@kroah.com>
Tue, 5 Aug 2003 04:39:33 +0000 (21:39 -0700)
committerGreg KH <gregkh@suse.de>
Wed, 27 Apr 2005 04:01:40 +0000 (21:01 -0700)
Patch from "Guo, Min" <min.guo@intel.com>

udev-add.c

index 54af7e4d77bd0494dbbbf671a8495664ae354975..adbeb92425f5247a0497c61aac548f24c58f01e3 100644 (file)
@@ -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));
-
-       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;
-       }
+       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;
+       }
+
+       retval = mknod(filename,mode,makedev(major,minor));
        return retval;
+               
 }
 
 struct sysfs_class_device *get_class_dev(char *device_name)