fish: Add is_interactive flag.
authorRichard W.M. Jones <rjones@redhat.com>
Fri, 15 Jul 2011 10:36:23 +0000 (11:36 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Fri, 15 Jul 2011 13:12:22 +0000 (14:12 +0100)
Decide early (before launch) if this is going to be an interactive
session, and set the is_interactive flag.

fish/fish.c

index 4e45cea..750f50d 100644 (file)
@@ -89,6 +89,7 @@ int inspector = 0;
 int utf8_mode = 0;
 int have_terminfo = 0;
 int progress_bars = 0;
+int is_interactive = 0;
 
 static void __attribute__((noreturn))
 usage (int status)
@@ -385,6 +386,12 @@ main (int argc, char *argv[])
     }
   }
 
+  /* Decide here if this will be an interactive session.  We have to
+   * do this as soon as possible after processing the command line
+   * args.
+   */
+  is_interactive = !file && isatty (0);
+
   /* Old-style -i syntax?  Since -a/-d/-N and -i was disallowed
    * previously, if we have -i without any drives but with something
    * on the command line, it must be old-style syntax.
@@ -487,7 +494,7 @@ main (int argc, char *argv[])
   progress_bars =
     override_progress_bars >= 0
     ? override_progress_bars
-    : (optind >= argc && isatty (0));
+    : (optind >= argc && is_interactive);
 
   if (progress_bars)
     guestfs_set_event_callback (g, progress_callback,
@@ -495,7 +502,7 @@ main (int argc, char *argv[])
 
   /* Interactive, shell script, or command(s) on the command line? */
   if (optind >= argc) {
-    if (isatty (0))
+    if (is_interactive)
       interactive ();
     else
       shell_script ();