chiark / gitweb /
[PATCH] udev - program to query all device attributes to build a rule
[elogind.git] / namedev.c
index 137446e255322143a08fc424c6907d87695fe9bd..7fd69f7778954332ab2075232fa98b7297b58001 100644 (file)
--- a/namedev.c
+++ b/namedev.c
@@ -141,7 +141,7 @@ static struct perm_device *find_perm(char *name)
        return NULL;
 }
 
-static mode_t get_default_mode(struct sysfs_class_device *class_dev)
+static mode_t get_default_mode(void)
 {
        mode_t mode = 0600;     /* default to owner rw only */
 
@@ -151,6 +151,22 @@ static mode_t get_default_mode(struct sysfs_class_device *class_dev)
        return mode;
 }
 
+static char * get_default_owner(void)
+{
+       if (strlen(default_owner_str) == 0) {
+               strncpy(default_owner_str, "root", OWNER_SIZE);
+       }
+       return default_owner_str;
+}
+
+static char * get_default_group(void)
+{
+       if (strlen(default_group_str) == 0) {
+               strncpy(default_group_str, "root", GROUP_SIZE);
+       }
+       return default_group_str;
+}
+
 static void apply_format(struct udevice *udev, unsigned char *string)
 {
        char temp[NAME_SIZE];
@@ -719,9 +735,9 @@ done:
                strfieldcpy(udev->group, perm->group);
        } else {
                /* no matching perms found :( */
-               udev->mode = get_default_mode(class_dev);
-               udev->owner[0] = 0x00;
-               udev->group[0] = 0x00;
+               udev->mode = get_default_mode();
+               strncpy(udev->owner, get_default_owner(), OWNER_SIZE);
+               strncpy(udev->group, get_default_group(), GROUP_SIZE);
        }
        dbg("name, '%s' is going to have owner='%s', group='%s', mode = %#o",
            udev->name, udev->owner, udev->group, udev->mode);