From 10950dfe84c064da2fde8d812c0c90cfba836d16 Mon Sep 17 00:00:00 2001 From: "greg@kroah.com" Date: Sun, 23 Nov 2003 20:56:18 -0800 Subject: [PATCH] [PATCH] add support for string group and string user names in udev.permissions. This only works if you are using glibc. Patch based on patch from Marco d'Itri --- udev-add.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/udev-add.c b/udev-add.c index 7ba873a8..634a515c 100644 --- a/udev-add.c +++ b/udev-add.c @@ -28,12 +28,18 @@ #include #include #include +#include +#include +#ifndef __KLIBC__ +#include +#endif #include "udev.h" #include "udev_version.h" #include "namedev.h" #include "udevdb.h" #include "libsysfs/libsysfs.h" +#include "klibc_fixups.h" /* * Right now the major/minor of a device is stored in a file called @@ -146,8 +152,13 @@ static int create_node(struct udevice *dev) unsigned long id = strtoul(dev->owner, &endptr, 10); if (*endptr == 0x00) uid = (uid_t) id; - else - dbg("only numeric owner id supported: %s", dev->owner); + else { + struct passwd *pw = getpwnam(dev->owner); + if (!pw) + dbg("user unknown: %s", dev->owner); + else + uid = pw->pw_uid; + } } if (*dev->group) { @@ -155,8 +166,13 @@ static int create_node(struct udevice *dev) unsigned long id = strtoul(dev->group, &endptr, 10); if (*endptr == 0x00) gid = (gid_t) id; - else - dbg("only numeric group id supported: %s", dev->group); + else { + struct group *gr = getgrnam(dev->group); + if (!gr) + dbg("group unknown: %s", dev->group); + else + gid = gr->gr_gid; + } } if (uid || gid) { -- 2.39.5