From 4142d4dc661c85b731c21b3296a04d1c5b5c3367 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Tue, 27 Feb 2001 18:22:03 +0000 Subject: [PATCH] Patch from Vladimir N. Oleynik to save 128 bytes by moving error checking for some my_* functions to utility.c --- busybox.h | 6 +++--- chmod_chown_chgrp.c | 9 --------- coreutils/id.c | 3 --- id.c | 3 --- include/busybox.h | 6 +++--- utility.c | 17 ++++++++++------- 6 files changed, 16 insertions(+), 28 deletions(-) diff --git a/busybox.h b/busybox.h index 8d4976a4b..53d22115a 100644 --- a/busybox.h +++ b/busybox.h @@ -175,11 +175,11 @@ extern unsigned long parse_number(const char *numstr, /* These parse entries in /etc/passwd and /etc/group. This is desirable * for BusyBox since we want to avoid using the glibc NSS stuff, which * increases target size and is often not needed embedded systems. */ -extern long my_getpwnam(char *name); -extern long my_getgrnam(char *name); +extern long my_getpwnam(const char *name); +extern long my_getgrnam(const char *name); extern void my_getpwuid(char *name, long uid); extern void my_getgrgid(char *group, long gid); -extern long my_getpwnamegid(char *name); +extern long my_getpwnamegid(const char *name); extern int device_open(char *device, int mode); diff --git a/chmod_chown_chgrp.c b/chmod_chown_chgrp.c index a458cf77a..4fc986904 100644 --- a/chmod_chown_chgrp.c +++ b/chmod_chown_chgrp.c @@ -122,8 +122,6 @@ int chmod_chown_chgrp_main(int argc, char **argv) gid = strtoul(groupName, &p, 10); /* maybe it's already numeric */ if (groupName == p) gid = my_getgrnam(groupName); - if (gid == -1) - goto bad_group; } else { groupName = strchr(*argv, '.'); if (groupName == NULL) @@ -133,8 +131,6 @@ int chmod_chown_chgrp_main(int argc, char **argv) gid = strtoul(groupName, &p, 10); if (groupName == p) gid = my_getgrnam(groupName); - if (gid == -1) - goto bad_group; } else gid = -1; } @@ -145,9 +141,6 @@ int chmod_chown_chgrp_main(int argc, char **argv) uid = strtoul(*argv, &p, 10); /* if numeric ... */ if (*argv == p) uid = my_getpwnam(*argv); - if (uid == -1) { - error_msg_and_die( "unknown user name: %s", *argv); - } } } @@ -162,8 +155,6 @@ int chmod_chown_chgrp_main(int argc, char **argv) } return EXIT_SUCCESS; - bad_group: - error_msg_and_die( "unknown group name: %s", groupName); } /* diff --git a/coreutils/id.c b/coreutils/id.c index 3667b32b2..3f90d55f6 100644 --- a/coreutils/id.c +++ b/coreutils/id.c @@ -76,9 +76,6 @@ extern int id_main(int argc, char **argv) pwnam=my_getpwnam(user); grnam=my_getgrnam(group); - if (gid == -1 || pwnam==-1 || grnam==-1) { - error_msg_and_die("%s: No such user", user); - } if (no_group) { if(name_not_number && user) diff --git a/id.c b/id.c index 3667b32b2..3f90d55f6 100644 --- a/id.c +++ b/id.c @@ -76,9 +76,6 @@ extern int id_main(int argc, char **argv) pwnam=my_getpwnam(user); grnam=my_getgrnam(group); - if (gid == -1 || pwnam==-1 || grnam==-1) { - error_msg_and_die("%s: No such user", user); - } if (no_group) { if(name_not_number && user) diff --git a/include/busybox.h b/include/busybox.h index 8d4976a4b..53d22115a 100644 --- a/include/busybox.h +++ b/include/busybox.h @@ -175,11 +175,11 @@ extern unsigned long parse_number(const char *numstr, /* These parse entries in /etc/passwd and /etc/group. This is desirable * for BusyBox since we want to avoid using the glibc NSS stuff, which * increases target size and is often not needed embedded systems. */ -extern long my_getpwnam(char *name); -extern long my_getgrnam(char *name); +extern long my_getpwnam(const char *name); +extern long my_getgrnam(const char *name); extern void my_getpwuid(char *name, long uid); extern void my_getgrgid(char *group, long gid); -extern long my_getpwnamegid(char *name); +extern long my_getpwnamegid(const char *name); extern int device_open(char *device, int mode); diff --git a/utility.c b/utility.c index e3535966f..df4573c16 100644 --- a/utility.c +++ b/utility.c @@ -877,29 +877,32 @@ extern int parse_mode(const char *s, mode_t * theMode) #if defined BB_CHMOD_CHOWN_CHGRP || defined BB_PS || defined BB_LS \ || defined BB_TAR || defined BB_ID || defined BB_LOGGER \ || defined BB_LOGNAME || defined BB_WHOAMI || defined BB_SH + +#if defined BB_CHMOD_CHOWN_CHGRP || defined BB_ID /* returns a uid given a username */ -long my_getpwnam(char *name) +long my_getpwnam(const char *name) { struct passwd *myuser; myuser = getpwnam(name); if (myuser==NULL) - return(-1); + error_msg_and_die("unknown user name: %s", name); return myuser->pw_uid; } /* returns a gid given a group name */ -long my_getgrnam(char *name) +long my_getgrnam(const char *name) { struct group *mygroup; mygroup = getgrnam(name); if (mygroup==NULL) - return(-1); + error_msg_and_die("unknown group name: %s", name); return (mygroup->gr_gid); } +#endif /* gets a username given a uid */ void my_getpwuid(char *name, long uid) @@ -927,18 +930,18 @@ void my_getgrgid(char *group, long gid) #if defined BB_ID /* gets a gid given a user name */ -long my_getpwnamegid(char *name) +long my_getpwnamegid(const char *name) { struct group *mygroup; struct passwd *myuser; myuser=getpwnam(name); if (myuser==NULL) - error_msg_and_die( "unknown user name: %s", name); + error_msg_and_die("unknown user name: %s", name); mygroup = getgrgid(myuser->pw_gid); if (mygroup==NULL) - error_msg_and_die( "unknown gid %ld", (long)myuser->pw_gid); + error_msg_and_die("unknown gid %ld", (long)myuser->pw_gid); return mygroup->gr_gid; }