This fixes an error on OpenBSD,

% chown 1000:1000 yes.c
./chown: getgrnam 1000: No such file or directory
---
 chown.c | 18 ++----------------
 1 file changed, 2 insertions(+), 16 deletions(-)

diff --git a/chown.c b/chown.c
index d7dc8e0..748ce97 100644
--- a/chown.c
+++ b/chown.c
@@ -79,26 +79,12 @@ main(int argc, char *argv[])
                *group++ = '\0';
 
        if (owner && *owner) {
-               errno = 0;
                pw = getpwnam(owner);
-               if (pw) {
-                       uid = pw->pw_uid;
-               } else {
-                       if (errno)
-                               eprintf("getpwnam %s:", owner);
-                       uid = estrtonum(owner, 0, UINT_MAX);
-               }
+               uid = pw ? pw->pw_uid : estrtonum(owner, 0, UINT_MAX);
        }
        if (group && *group) {
-               errno = 0;
                gr = getgrnam(group);
-               if (gr) {
-                       gid = gr->gr_gid;
-               } else {
-                       if (errno)
-                               eprintf("getgrnam %s:", group);
-                       gid = estrtonum(group, 0, UINT_MAX);
-               }
+               gid = gr ? gr->gr_gid : estrtonum(group, 0, UINT_MAX);
        }
        if (uid == (uid_t)-1 && gid == (gid_t)-1)
                usage();
-- 
2.21.0


Reply via email to