From 9a44c4f91ce7e517d5325fd3743e6ad9d54ef3f0 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Thu, 28 Dec 2006 05:44:47 +0000 Subject: bb_xget[pw/gr]nam were horribly misnamed - fixed. uidgid_get -> get_uidgid, add additional param (numeric_ok). Make chown use it. chown: fix "chown user: ...." install: fix incorrect use of bb_xget[pw/gr]nam --- libbb/bb_pwd.c | 127 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 63 insertions(+), 64 deletions(-) (limited to 'libbb/bb_pwd.c') diff --git a/libbb/bb_pwd.c b/libbb/bb_pwd.c index b5125b0f4..223a6b44c 100644 --- a/libbb/bb_pwd.c +++ b/libbb/bb_pwd.c @@ -7,31 +7,30 @@ * Licensed under the GPL v2 or later, see the file LICENSE in this tarball. */ -#include -#include -#include #include "libbb.h" - /* - * if bufsize is > 0 char *buffer cannot be set to NULL. - * If idname is not NULL it is written on the static - * allocated buffer (and a pointer to it is returned). - * if idname is NULL, id as string is written to the static - * allocated buffer and NULL is returned. - * if bufsize is = 0 char *buffer can be set to NULL. - * If idname exists a pointer to it is returned, - * else NULL is returned. - * if bufsize is < 0 char *buffer can be set to NULL. - * If idname exists a pointer to it is returned, - * else an error message is printed and the program exits. - */ +#define assert(x) ((void)0) + +/* + * if bufsize is > 0 char *buffer cannot be set to NULL. + * If idname is not NULL it is written on the static + * allocated buffer (and a pointer to it is returned). + * if idname is NULL, id as string is written to the static + * allocated buffer and NULL is returned. + * if bufsize is = 0 char *buffer can be set to NULL. + * If idname exists a pointer to it is returned, + * else NULL is returned. + * if bufsize is < 0 char *buffer can be set to NULL. + * If idname exists a pointer to it is returned, + * else an error message is printed and the program exits. + */ /* internal function for bb_getpwuid and bb_getgrgid */ -static char * bb_getug(char *buffer, char *idname, long id, int bufsize, char prefix) +static char* bb_getug(char *buffer, char *idname, long id, int bufsize, char prefix) { if (bufsize > 0 ) { - assert(buffer!=NULL); - if(idname) { + assert(buffer != NULL); + if (idname) { return safe_strncpy(buffer, idname, bufsize); } snprintf(buffer, bufsize, "%ld", id); @@ -41,75 +40,76 @@ static char * bb_getug(char *buffer, char *idname, long id, int bufsize, char pr return idname; } - /* Hacked by Tito Ragusa (c) 2004 to make it more - * flexible : - * - * if bufsize is > 0 char *group cannot be set to NULL. - * On success groupname is written on static allocated buffer - * group (and a pointer to it is returned). - * On failure gid as string is written to static allocated - * buffer group and NULL is returned. - * if bufsize is = 0 char *group can be set to NULL. - * On success groupname is returned. - * On failure NULL is returned. - * if bufsize is < 0 char *group can be set to NULL. - * On success groupname is returned. - * On failure an error message is printed and - * the program exits. - */ +/* Hacked by Tito Ragusa (c) 2004 to make it more + * flexible : + * + * if bufsize is > 0 char *group cannot be set to NULL. + * On success groupname is written on static allocated buffer + * group (and a pointer to it is returned). + * On failure gid as string is written to static allocated + * buffer group and NULL is returned. + * if bufsize is = 0 char *group can be set to NULL. + * On success groupname is returned. + * On failure NULL is returned. + * if bufsize is < 0 char *group can be set to NULL. + * On success groupname is returned. + * On failure an error message is printed and + * the program exits. + */ /* gets a groupname given a gid */ -char * bb_getgrgid(char *group, long gid, int bufsize) +char* bb_getgrgid(char *group, long gid, int bufsize) { struct group *mygroup = getgrgid(gid); - return bb_getug(group, (mygroup) ? - mygroup->gr_name : (char *)mygroup, gid, bufsize, 'g'); + return bb_getug(group, + mygroup ? mygroup->gr_name : (char *)mygroup, + gid, bufsize, 'g'); } /* returns a gid given a group name */ -long bb_xgetgrnam(const char *name) +long xgroup2gid(const char *name) { struct group *mygroup; - mygroup = getgrnam(name); - if (mygroup==NULL) + mygroup = getgrnam(name); + if (mygroup == NULL) bb_error_msg_and_die("unknown group name: %s", name); return mygroup->gr_gid; } /* returns a uid given a username */ -long bb_xgetpwnam(const char *name) +long xuname2uid(const char *name) { struct passwd *myuser; - myuser = getpwnam(name); - if (myuser==NULL) + myuser = getpwnam(name); + if (myuser == NULL) bb_error_msg_and_die("unknown user name: %s", name); return myuser->pw_uid; } - /* Hacked by Tito Ragusa (c) 2004 to make it more - * flexible : - * - * if bufsize is > 0 char *name cannot be set to NULL. - * On success username is written on the static allocated - * buffer name (and a pointer to it is returned). - * On failure uid as string is written to the static - * allocated buffer name and NULL is returned. - * if bufsize is = 0 char *name can be set to NULL. - * On success username is returned. - * On failure NULL is returned. - * if bufsize is < 0 char *name can be set to NULL - * On success username is returned. - * On failure an error message is printed and - * the program exits. - */ +/* Hacked by Tito Ragusa (c) 2004 to make it more + * flexible : + * + * if bufsize is > 0 char *name cannot be set to NULL. + * On success username is written on the static allocated + * buffer name (and a pointer to it is returned). + * On failure uid as string is written to the static + * allocated buffer name and NULL is returned. + * if bufsize is = 0 char *name can be set to NULL. + * On success username is returned. + * On failure NULL is returned. + * if bufsize is < 0 char *name can be set to NULL + * On success username is returned. + * On failure an error message is printed and + * the program exits. + */ /* gets a username given a uid */ -char * bb_getpwuid(char *name, long uid, int bufsize) +char* bb_getpwuid(char *name, long uid, int bufsize) { struct passwd *myuser = getpwuid(uid); @@ -118,13 +118,12 @@ char * bb_getpwuid(char *name, long uid, int bufsize) } unsigned long get_ug_id(const char *s, - long (*__bb_getxxnam)(const char *)) + long (*xname2id)(const char *)) { unsigned long r; r = bb_strtoul(s, NULL, 10); if (errno) - r = __bb_getxxnam(s); - + return xname2id(s); return r; } -- cgit v1.2.3