diff --git a/namedev.c b/namedev.c index 6f69959346..ac05fd88e4 100644 --- a/namedev.c +++ b/namedev.c @@ -446,7 +446,8 @@ static int namedev_init_permissions(void) dev.attr.mode = strtol(temp, NULL, 8); dbg_parse("name = %s, owner = %s, group = %s, mode = %#o", - dev.attr.name, dev.attr.owner, dev.attr.group, dev.attr.mode); + dev.attr.name, dev.attr.owner, dev.attr.group, + dev.attr.mode); retval = add_dev(&dev); if (retval) { dbg("add_dev returned with error %d", retval); @@ -459,7 +460,7 @@ exit: return retval; } -static int get_default_mode(struct sysfs_class_device *class_dev) +static mode_t get_default_mode(struct sysfs_class_device *class_dev) { /* just default everyone to rw for the world! */ return 0666; @@ -544,7 +545,7 @@ static int get_attr(struct sysfs_class_device *class_dev, struct device_attr *at int retval = 0; int found; - attr->mode = -1; + attr->mode = 0; if (class_dev->sysdevice) { dbg_parse("class_dev->sysdevice->directory->path = '%s'", class_dev->sysdevice->directory->path); dbg_parse("class_dev->sysdevice->bus_id = '%s'", class_dev->sysdevice->bus_id); @@ -751,9 +752,10 @@ label_found: } } strcpy(attr->name, class_dev->name); - + done: - if (attr->mode == -1) { + /* mode was never set above */ + if (!attr->mode) { attr->mode = get_default_mode(class_dev); attr->owner[0] = 0x00; attr->group[0] = 0x00; diff --git a/udev-add.c b/udev-add.c index 05f2aa3e9d..d158c41b1d 100644 --- a/udev-add.c +++ b/udev-add.c @@ -71,7 +71,7 @@ exit: /* * We also want to add some permissions here, and possibly some symlinks */ -static int create_node(char *name, char type, int major, int minor, int mode) +static int create_node(char *name, char type, int major, int minor, mode_t mode) { char filename[255]; int retval = 0; @@ -94,7 +94,7 @@ static int create_node(char *name, char type, int major, int minor, int mode) } dbg("mknod(%s, %#o, %u, %u)", filename, mode, major, minor); - retval = mknod(filename,mode,makedev(major,minor)); + retval = mknod(filename, mode, makedev(major, minor)); if (retval) dbg("mknod(%s, %#o, %u, %u) failed with error '%s'", filename, mode, major, minor, strerror(errno)); diff --git a/udev.h b/udev.h index 33cb89af55..af575c2b17 100644 --- a/udev.h +++ b/udev.h @@ -59,7 +59,7 @@ struct device_attr { char name[NAME_SIZE]; char owner[OWNER_SIZE]; char group[GROUP_SIZE]; - int mode; + mode_t mode; }; extern int udev_add_device(char *device, char *subsystem); diff --git a/udevdb.c b/udevdb.c index fa26de46d5..678ddd9603 100644 --- a/udevdb.c +++ b/udevdb.c @@ -73,7 +73,7 @@ struct namedb_record { char type; int major; int minor; - int mode; + mode_t mode; }; /** diff --git a/udevdb.h b/udevdb.h index 8e72eded02..656613b593 100644 --- a/udevdb.h +++ b/udevdb.h @@ -25,7 +25,7 @@ struct udevice { char type; int major; int minor; - int mode; + mode_t mode; }; /* Function Prototypes */