]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
maint: id: minor factorization
authorJim Meyering <meyering@redhat.com>
Fri, 27 Apr 2012 18:44:58 +0000 (20:44 +0200)
committerJim Meyering <meyering@redhat.com>
Fri, 27 Apr 2012 20:50:42 +0000 (22:50 +0200)
* src/id.c (main): Factor out uses of "argc - optind".
Move option-consistency checks to precede the potential getcon call.

src/id.c

index c600e63d3874f4dea15dd93bf58689b9de64a31e..e1b51e7642150ce1409d9a9d071a9e70eaf87f09 100644 (file)
--- a/src/id.c
+++ b/src/id.c
@@ -163,34 +163,35 @@ main (int argc, char **argv)
         }
     }
 
-  if (1 < argc - optind)
+  size_t n_ids = argc - optind;
+  if (1 < n_ids)
     {
       error (0, 0, _("extra operand %s"), quote (argv[optind + 1]));
       usage (EXIT_FAILURE);
     }
 
-  if (argc - optind == 1 && just_context)
+  if (n_ids && just_context)
     error (EXIT_FAILURE, 0,
            _("cannot print security context when user specified"));
 
+  if (just_user + just_group + just_group_list + just_context > 1)
+    error (EXIT_FAILURE, 0, _("cannot print \"only\" of more than one choice"));
+
+  if (just_user + just_group + just_group_list == 0 && (use_real || use_name))
+    error (EXIT_FAILURE, 0,
+           _("cannot print only names or real IDs in default format"));
+
   /* If we are on a selinux-enabled kernel and no user is specified,
      get our context. Otherwise, leave the context variable alone -
      it has been initialized known invalid value and will be not
      displayed in print_full_info() */
-  if (selinux_enabled && argc == optind)
+  if (selinux_enabled && n_ids == 0)
     {
       if (getcon (&context) && just_context)
         error (EXIT_FAILURE, 0, _("can't get process context"));
     }
 
-  if (just_user + just_group + just_group_list + just_context > 1)
-    error (EXIT_FAILURE, 0, _("cannot print \"only\" of more than one choice"));
-
-  if (just_user + just_group + just_group_list == 0 && (use_real || use_name))
-    error (EXIT_FAILURE, 0,
-           _("cannot print only names or real IDs in default format"));
-
-  if (argc - optind == 1)
+  if (n_ids == 1)
     {
       struct passwd *pwd = getpwnam (argv[optind]);
       if (pwd == NULL)