static void shell_script (void);
static void script (int prompt);
static void cmdline (char *argv[], int optind, int argc);
-static int issue_command (const char *cmd, char *argv[]);
static void initialize_readline (void);
static void cleanup_readline (void);
static void add_history_line (const char *);
" -h|--cmd-help List available commands\n"
" -h|--cmd-help cmd Display detailed help on 'cmd'\n"
" -a|--add image Add image\n"
+ " -D|--no-dest-paths Don't tab-complete paths from guest fs\n"
" -m|--mount dev[:mnt] Mount dev on mnt (if omitted, /)\n"
" -n|--no-sync Don't autosync\n"
" -r|--ro Mount read-only\n"
{ "cmd-help", 2, 0, 'h' },
{ "help", 0, 0, '?' },
{ "mount", 1, 0, 'm' },
+ { "no-dest-paths", 0, 0, 'D' },
{ "no-sync", 0, 0, 'n' },
{ "ro", 0, 0, 'r' },
{ "verbose", 0, 0, 'v' },
drvs = drv;
break;
+ case 'D':
+ complete_dest_paths = 0;
+ break;
+
case 'h':
if (optarg)
display_command (optarg);
}
}
-static int
+int
issue_command (const char *cmd, char *argv[])
{
int argc;
strcasecmp (cmd, "vi") == 0 ||
strcasecmp (cmd, "emacs") == 0)
return do_edit (cmd, argc, argv);
+ else if (strcasecmp (cmd, "lcd") == 0)
+ return do_lcd (cmd, argc, argv);
+ else if (strcasecmp (cmd, "glob") == 0)
+ return do_glob (cmd, argc, argv);
else
return run_action (cmd, argc, argv);
}
"echo", _("display a line of text"));
printf ("%-20s %s\n",
"edit", _("edit a file in the image"));
+ printf ("%-20s %s\n",
+ "lcd", _("local change directory"));
+ printf ("%-20s %s\n",
+ "glob", _("expand wildcards in command"));
/* actions are printed after this (see list_commands) */
}
"\n"
" NOTE: This will not work reliably for large files\n"
" (> 2 MB) or binary files containing \\0 bytes.\n"));
+ else if (strcasecmp (cmd, "lcd") == 0)
+ printf (_("lcd - local change directory\n"
+ " lcd <directory>\n"
+ "\n"
+ " Change guestfish's current directory. This command is\n"
+ " useful if you want to download files to a particular\n"
+ " place.\n"));
+ else if (strcasecmp (cmd, "glob") == 0)
+ printf (_("glob - expand wildcards in command\n"
+ " glob <command> [<args> ...]\n"
+ "\n"
+ " Glob runs <command> with wildcards expanded in any\n"
+ " command args. Note that the command is run repeatedly\n"
+ " once for each expanded argument.\n"));
else if (strcasecmp (cmd, "help") == 0)
printf (_("help - display a list of commands or help on a command\n"
" help cmd\n"
free (argv);
}
+int
+count_strings (char * const * const argv)
+{
+ int c;
+
+ for (c = 0; argv[c]; ++c)
+ ;
+ return c;
+}
+
void
print_strings (char * const * const argv)
{