#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
+#include <sys/stat.h>
#include "udev.h"
#include "udev_version.h"
{
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;
}
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));
{
struct sysfs_class_device *class_dev;
struct udevice dev;
- struct device_attr attr;
int retval = -EINVAL;
/* for now, the block layer is the only place where block devices are */
if (class_dev == NULL)
goto exit;
- retval = namedev_name_device(class_dev, &attr);
+ retval = namedev_name_device(class_dev, &dev);
if (retval)
return retval;
goto exit;
}
- strcpy(dev.name, attr.name);
- strcpy(dev.owner, attr.owner);
- strcpy(dev.group, attr.group);
- dev.mode = attr.mode;
+// strcpy(dev.name, attr.name);
+// strcpy(dev.owner, attr.owner);
+// strcpy(dev.group, attr.group);
+// dev.mode = attr.mode;
retval = udevdb_add_dev(path, &dev);
if (retval != 0)