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 {