Subject: Re: bug#20905: FYI: maint: unify three argv-processing calls

From: Paul Eggert <[email-masked]>
Date: Fri, 26 Jun 2015 13:37:43 -0700

Thanks, I followed up with the attached cleanup of various minor issues in the 
neighborhood.
>From 60e0b1ab8c78a75b3ebe836264804bb4c363ba7f Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email-masked]>
Date: Fri, 26 Jun 2015 13:34:51 -0700
Subject: [PATCH] grep: minor tweaks

* src/grep.c (main): Change recently-added static vars to be
constants, which makes them sharable.  Prefer 'return' to 'exit'
when returning/exiting from 'main'.  Move decl closer to first use
and rename local from 'ok' (which was confusing) to 'status'.
Prefer named constant STDOUT_FILENO to unnamed constant 1.
---
 src/grep.c | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/grep.c b/src/grep.c
index 77ddce5..6f43284 100644
--- a/src/grep.c
+++ b/src/grep.c
@@ -2153,7 +2153,7 @@ main (int argc, char **argv)
 {
   char *keys;
   size_t keycc, oldcc, keyalloc;
-  bool with_filenames, ok;
+  bool with_filenames;
   size_t cc;
   int opt, prepended;
   int prev_optind, last_recursive;
@@ -2514,7 +2514,7 @@ main (int argc, char **argv)
     {
       version_etc (stdout, program_name, PACKAGE_NAME, VERSION, AUTHORS,
                    (char *) NULL);
-      exit (EXIT_SUCCESS);
+      return EXIT_SUCCESS;
     }
 
   if (show_help)
@@ -2579,39 +2579,38 @@ main (int argc, char **argv)
 #ifdef SET_BINARY
   /* Output is set to binary mode because we shouldn't convert
      NL to CR-LF pairs, especially when grepping binary files.  */
-  if (!isatty (1))
-    SET_BINARY (1);
+  if (!isatty (STDOUT_FILENO))
+    SET_BINARY (STDOUT_FILENO);
 #endif
 
   if (max_count == 0)
-    exit (EXIT_FAILURE);
+    return EXIT_FAILURE;
 
   if (fts_options & FTS_LOGICAL && devices == READ_COMMAND_LINE_DEVICES)
     devices = READ_DEVICES;
 
-  char **files;
+  char *const *files;
   if (optind < argc)
     {
       files = argv + optind;
     }
   else if (directories == RECURSE_DIRECTORIES && prepended < last_recursive)
     {
-      static char *cwd_only[] = { (char *) ".", NULL };
+      static char *const cwd_only[] = { (char *) ".", NULL };
       files = cwd_only;
       omit_dot_slash = true;
     }
   else
     {
-      static char *stdin_only[] = { (char *) "-", NULL };
+      static char *const stdin_only[] = { (char *) "-", NULL };
       files = stdin_only;
     }
 
-  ok = true;
+  bool status = true;
   do
-    ok &= grep_command_line_arg (*files++);
+    status &= grep_command_line_arg (*files++);
   while (*files != NULL);
 
   /* We register via atexit() to test stdout.  */
-  exit (errseen ? EXIT_TROUBLE : ok);
+  return errseen ? EXIT_TROUBLE : status;
 }
-/* vim:set shiftwidth=2: */
-- 
2.1.0