can_user_push.c: simplify code
authorKyle J. McKay <mackyle@gmail.com>
Sun, 25 Aug 2013 04:15:40 +0000 (24 21:15 -0700)
committerKyle J. McKay <mackyle@gmail.com>
Sun, 25 Aug 2013 04:15:40 +0000 (24 21:15 -0700)
Replace the getgrent/endgrent loop with a single getgrnam call.

There's no need to enumerate all group entries when a single call
to getgrnam will do the same job.

src/can_user_push.c

index c71bac9..6ea89c0 100644 (file)
@@ -47,20 +47,19 @@ int main(int argc, char *argv[])
   if (!group || !*group || !user || !*user)
     return EXIT_FAILURE;
 
-  while (ent = getgrent()) {
+  ent = getgrnam(group);
+  if (ent) {
     char **memb;
-    if (strcmp(ent->gr_name, group) != 0)
-      continue;
     memb = ent->gr_mem;
-    if (!memb)
-      continue;
-    for (; *memb; ++memb) {
-      if (strcmp(*memb, user) == 0) {
-        found = 1;
-        break;
+    if (memb) {
+      for (; *memb; ++memb) {
+        if (strcmp(*memb, user) == 0) {
+          found = 1;
+          break;
+        }
       }
     }
   }
-  endgrent();
+
   return found ? EXIT_SUCCESS : EXIT_FAILURE;
 }