svn commit: trunk/busybox: include libbb loginutils

vda at busybox.net vda at busybox.net
Fri Dec 5 16:23:06 UTC 2008


Author: vda
Date: 2008-12-05 08:23:06 -0800 (Fri, 05 Dec 2008)
New Revision: 24295

Log:
libbb: add xgetgrnam too. ~0 code size change



Modified:
   trunk/busybox/include/libbb.h
   trunk/busybox/libbb/bb_pwd.c
   trunk/busybox/loginutils/addgroup.c


Changeset:
Modified: trunk/busybox/include/libbb.h
===================================================================
--- trunk/busybox/include/libbb.h	2008-12-05 15:28:01 UTC (rev 24294)
+++ trunk/busybox/include/libbb.h	2008-12-05 16:23:06 UTC (rev 24295)
@@ -703,6 +703,7 @@
 /* chown-like handling of "user[:[group]" */
 void parse_chown_usergroup_or_die(struct bb_uidgid_t *u, char *user_group) FAST_FUNC;
 struct passwd* xgetpwnam(const char *name) FAST_FUNC;
+struct group* xgetgrnam(const char *name) FAST_FUNC;
 struct passwd* xgetpwuid(uid_t uid) FAST_FUNC;
 struct group* xgetgrgid(gid_t gid) FAST_FUNC;
 char* xuid2uname(uid_t uid) FAST_FUNC;

Modified: trunk/busybox/libbb/bb_pwd.c
===================================================================
--- trunk/busybox/libbb/bb_pwd.c	2008-12-05 15:28:01 UTC (rev 24294)
+++ trunk/busybox/libbb/bb_pwd.c	2008-12-05 16:23:06 UTC (rev 24295)
@@ -23,8 +23,15 @@
 	return pw;
 }
 
-/* xgetgrnam too? */
+struct group* FAST_FUNC xgetgrnam(const char *name)
+{
+	struct group *gr = getgrnam(name);
+	if (!gr)
+		bb_error_msg_and_die("unknown group %s", name);
+	return gr;
+}
 
+
 struct passwd* FAST_FUNC xgetpwuid(uid_t uid)
 {
 	struct passwd *pw = getpwuid(uid);
@@ -89,10 +96,7 @@
 {
 	struct group *mygroup;
 
-	mygroup = getgrnam(name);
-	if (mygroup == NULL)
-		bb_error_msg_and_die("unknown group %s", name);
-
+	mygroup = xgetgrnam(name);
 	return mygroup->gr_gid;
 }
 

Modified: trunk/busybox/loginutils/addgroup.c
===================================================================
--- trunk/busybox/loginutils/addgroup.c	2008-12-05 15:28:01 UTC (rev 24294)
+++ trunk/busybox/loginutils/addgroup.c	2008-12-05 16:23:06 UTC (rev 24295)
@@ -158,10 +158,8 @@
 
 		/* check if group and user exist */
 		xuname2uid(argv[0]); /* unknown user: exit */
-		xgroup2gid(argv[1]); /* unknown group: exit */
-// race here!
+		gr = xgetgrnam(argv[1]); /* unknown group: exit */
 		/* check if user is already in this group */
-		gr = getgrnam(argv[1]);
 		for (; *(gr->gr_mem) != NULL; (gr->gr_mem)++) {
 			if (!strcmp(argv[0], *(gr->gr_mem))) {
 				/* user is already in group: do nothing */




More information about the busybox-cvs mailing list