X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=fish%2Ffish.c;h=71153eb60463914fc165801e04ca3fc6b9b77c61;hb=6b68c17e07a57d7aec9adc778f41b4c772a235bd;hp=a57472f8c6eb0c5c856f1a1739fac7750c6b1839;hpb=9ba4136a6560be713931f70245c50f3968d2af15;p=libguestfs.git diff --git a/fish/fish.c b/fish/fish.c index a57472f..71153eb 100644 --- a/fish/fish.c +++ b/fish/fish.c @@ -88,6 +88,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) @@ -384,6 +385,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. @@ -486,7 +493,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, @@ -494,7 +501,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 (); @@ -871,7 +878,7 @@ execute_and_inline (const char *cmd, int global_exit_on_error) free (line); - if (pclose (pp) == -1) { + if (pclose (pp) != 0) { perror ("pclose"); return -1; } @@ -1238,9 +1245,8 @@ parse_string_list (const char *str) /* We've reached the end of a token. We shouldn't still be in quotes. */ if (in_quote) { fprintf (stderr, _("Runaway quote in string \"%s\"\n"), str); - free_n_strings (argv, argv_len); - + free (tok); return NULL; }