summaryrefslogtreecommitdiff
path: root/namedev.c
diff options
context:
space:
mode:
authorhannal@us.ibm.com <hannal@us.ibm.com>2004-01-19 19:42:42 -0800
committerGreg KH <gregkh@suse.de>2005-04-26 21:13:17 -0700
commit74c73ef994f3ea8d013c33fe7be73e0c0c86977b (patch)
treeb8bc8217dccaacf15a34c69ef11a7a17484d3106 /namedev.c
parentb2a21a35476b4780ef1fc68c60216117ab66fa2b (diff)
[PATCH] set default owner/group in db.
This patch fixes a bug where the udev database stored empty strings for Owner and Group if they were default. This patch stores the default value into the database if not set otherwise. See example output: crw------- 1 root root 4, 65 Jan 16 11:13 ttyS1 P: /class/tty/ttyS1 N: ttyS1 S: O: root G: root This is a bit of a hack. However, until udev supports setting the o/g values they will be root/root anyway so the database might as well reflect the truth instead of empty strings.
Diffstat (limited to 'namedev.c')
-rw-r--r--namedev.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/namedev.c b/namedev.c
index 137446e255..e39207e6a7 100644
--- a/namedev.c
+++ b/namedev.c
@@ -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];
@@ -720,8 +736,8 @@ done:
} else {
/* no matching perms found :( */
udev->mode = get_default_mode(class_dev);
- udev->owner[0] = 0x00;
- udev->group[0] = 0x00;
+ 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);