int utf8_mode = 0;
int have_terminfo = 0;
int progress_bars = 0;
+int is_interactive = 0;
static void __attribute__((noreturn))
usage (int status)
exit (EXIT_FAILURE);
}
- /* If developing, add ./appliance to the path. Note that libtools
- * interferes with this because uninstalled guestfish is a shell
- * script that runs the real program with an absolute path. Detect
- * that too.
- *
- * BUT if LIBGUESTFS_PATH environment variable is already set by
- * the user, then don't override it.
- */
- if (getenv ("LIBGUESTFS_PATH") == NULL &&
- argv[0] &&
- (argv[0][0] != '/' || strstr (argv[0], "/.libs/lt-") != NULL))
- guestfs_set_path (g, "appliance:" GUESTFS_DEFAULT_PATH);
-
/* CAUTION: we are careful to modify argv[0] here, only after
* using it just above.
*
}
}
+ /* 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.
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,
/* Interactive, shell script, or command(s) on the command line? */
if (optind >= argc) {
- if (isatty (0))
+ if (is_interactive)
interactive ();
else
shell_script ();
free (line);
- if (pclose (pp) == -1) {
+ if (pclose (pp) != 0) {
perror ("pclose");
return -1;
}
/* 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;
}