fish: Make the 'help' command more helpful.

This commit is contained in:
Richard W.M. Jones
2010-11-04 17:04:03 +00:00
parent 7e3d76e41b
commit 74f7c9e4b7
6 changed files with 68 additions and 4 deletions

View File

@@ -62,6 +62,7 @@ guestfish_SOURCES = \
fish.c \
fish.h \
glob.c \
help.c \
hexedit.c \
lcd.c \
man.c \

View File

@@ -626,7 +626,7 @@ script (int prompt)
"Welcome to guestfish, the libguestfs filesystem interactive shell for\n"
"editing virtual machine filesystems.\n"
"\n"
"Type: 'help' for a list of commands\n"
"Type: 'help' for help on commands\n"
" 'man' to read the manual\n"
" 'quit' to quit the shell\n"
"\n"));
@@ -925,7 +925,7 @@ issue_command (const char *cmd, char *argv[], const char *pipecmd)
/* Otherwise execute it locally. */
else if (STRCASEEQ (cmd, "help")) {
if (argc == 0) {
list_commands ();
display_help ();
r = 0;
} else
r = display_command (argv[0]);

View File

@@ -109,6 +109,9 @@ extern int run_echo (const char *cmd, size_t argc, char *argv[]);
/* in edit.c */
extern int run_edit (const char *cmd, size_t argc, char *argv[]);
/* in help.c */
extern void display_help (void);
/* in hexedit.c */
extern int run_hexedit (const char *cmd, size_t argc, char *argv[]);

View File

@@ -846,8 +846,9 @@ other words, they are not part of the L<guestfs(3)> API.
help
help cmd
Without any parameter, this lists all commands. With a C<cmd>
parameter, this displays detailed help for a command.
Without any parameter, this provides general help.
With a C<cmd> parameter, this displays detailed help for that command.
=head2 quit | exit

58
fish/help.c Normal file
View File

@@ -0,0 +1,58 @@
/* guestfish - the filesystem interactive shell
* Copyright (C) 2010 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"
/* The "help" command. This used to just list all commands, but
* that's not very useful. Instead display some useful
* context-sensitive help. This could be improved if we knew how many
* drives had been added already, and whether anything was mounted.
*/
void
display_help (void)
{
if (guestfs_is_config (g))
printf (_(
"Add disk images to examine using the -a or -d options, or the 'add' command.\n"
"Or create a new disk image using -N, or the 'alloc' or 'sparse' commands.\n"
"Once you have done this, use the 'run' command.\n"
));
else
printf (_(
"Find out what filesystems are available using 'list-filesystems' and then\n"
"mount them to examine or modify the contents using 'mount-ro' or\n"
"'mount-options'.\n"
));
printf ("\n");
printf (_(
"For more information about a command, use 'help cmd'.\n"
"\n"
"To read the manual, type 'man'.\n"
));
printf ("\n");
}

View File

@@ -81,6 +81,7 @@ fish/echo.c
fish/edit.c
fish/fish.c
fish/glob.c
fish/help.c
fish/hexedit.c
fish/inspect.c
fish/lcd.c