On Thu, Nov 01, 2018 at 06:37:15PM -0400, Ted Unangst wrote:
> yes, this is how it should be. please fix group lookup as well.
Was in the queue for a separate diff, here it goes together.
Index: getent.c
===================================================================
RCS file: /cvs/src/usr.bin/getent/getent.c,v
retrieving revision 1.20
diff -u -p -r1.20 getent.c
--- getent.c 26 Sep 2018 16:39:19 -0000 1.20
+++ getent.c 1 Nov 2018 23:43:40 -0000
@@ -201,11 +201,11 @@ group(int argc, char *argv[])
GROUPPRINT;
} else {
for (i = 2; i < argc; i++) {
- gid = strtonum(argv[i], 0, GID_MAX, &err);
- if (!err)
- gr = getgrgid(gid);
- else
- gr = getgrnam(argv[i]);
+ if ((gr = getgrnam(argv[i])) == NULL) {
+ gid = strtonum(argv[i], 0, GID_MAX, &err);
+ if (err == NULL)
+ gr = getgrgid(gid);
+ }
if (gr != NULL)
GROUPPRINT;
else {
@@ -302,11 +302,11 @@ passwd(int argc, char *argv[])
PASSWDPRINT;
} else {
for (i = 2; i < argc; i++) {
- uid = strtonum(argv[i], 0, UID_MAX, &err);
- if (!err)
- pw = getpwuid(uid);
- else
- pw = getpwnam(argv[i]);
+ if ((pw = getpwnam(argv[i])) == NULL) {
+ uid = strtonum(argv[i], 0, UID_MAX, &err);
+ if (err == NULL)
+ pw = getpwuid(uid);
+ }
if (pw != NULL)
PASSWDPRINT;
else {