echo.c \
edit.c \
fish.c \
- fish.h
+ fish.h \
+ lcd.c
+
guestfish_CFLAGS = \
-I$(top_builddir)/src -Wall \
-DGUESTFS_DEFAULT_PATH='"$(libdir)/guestfs"'
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
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"));
/* 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, "help") == 0)
printf (_("help - display a list of commands or help on a command\n"
" help cmd\n"
/* in edit.c */
extern int do_edit (const char *cmd, int argc, char *argv[]);
+/* in lcd.c */
+extern int do_lcd (const char *cmd, int argc, char *argv[]);
+
/* This should just list all the built-in commands so they can
* be added to the generated auto-completion code.
*/
"quit", "exit", "q", \
"alloc", "allocate", \
"echo", \
- "edit", "vi", "emacs"
+ "edit", "vi", "emacs" \
+ "lcd"
#endif /* FISH_H */
--- /dev/null
+/* guestfish - the filesystem interactive shell
+ * Copyright (C) 2009 Red Hat Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "fish.h"
+
+/* guestfish lcd command (similar to the lcd command in BSD ftp) */
+
+int
+do_lcd (const char *cmd, int argc, char *argv[])
+{
+ if (argc != 1) {
+ fprintf (stderr, _("use 'lcd directory' to change local directory\n"));
+ return -1;
+ }
+
+ if (chdir (argv[0]) == -1) {
+ perror (argv[0]);
+ return -1;
+ }
+
+ return 0;
+}