chiark / gitweb /
[PATCH] klibc specific tweaks
[elogind.git] / udev-add.c
index 8c63214a46794ebb233ed1e8cffc8c8875865697..7a89076add32891c287d878a738d2c62803ab1e3 100644 (file)
@@ -73,10 +73,17 @@ static int create_node(struct udevice *dev)
 {
        char filename[255];
        int retval = 0;
+       dev_t res;
 
        strncpy(filename, udev_root, sizeof(filename));
        strncat(filename, dev->name, sizeof(filename));
 
+#ifdef __KLIBC__
+       res = (dev->major << 8) | (dev->minor);
+#else
+       res = makedev(dev->major, dev->minor);
+#endif
+
        switch (dev->type) {
        case 'b':
                dev->mode |= S_IFBLK;
@@ -94,7 +101,7 @@ static int create_node(struct udevice *dev)
        }
 
        dbg("mknod(%s, %#o, %u, %u)", filename, dev->mode, dev->major, dev->minor);
-       retval = mknod(filename, dev->mode, makedev(dev->major, dev->minor));
+       retval = mknod(filename, dev->mode, res);
        if (retval)
                dbg("mknod(%s, %#o, %u, %u) failed with error '%s'",
                    filename, dev->mode, dev->major, dev->minor, strerror(errno));