Skip to content

Commit

Permalink
[shell] Add "shell" command
Browse files Browse the repository at this point in the history
The "shell" command allows a script to enter an interactive shell,
which is potentially useful for troubleshooting.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
  • Loading branch information
mcb30 committed Nov 28, 2010
1 parent 719f2d7 commit 1fcea25
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 3 deletions.
47 changes: 45 additions & 2 deletions src/hci/shell.c
Expand Up @@ -74,14 +74,57 @@ struct command help_command __command = {
* Start command shell
*
*/
void shell ( void ) {
int shell ( void ) {
char *line;
int rc = 0;

do {
line = readline ( shell_prompt );
if ( line ) {
system ( line );
rc = system ( line );
free ( line );
}
} while ( shell_exit == 0 );
shell_exit = 0;

return rc;
}

/** "shell" options */
struct shell_options {};

/** "shell" option list */
static struct option_descriptor shell_opts[] = {};

/** "shell" command descriptor */
static struct command_descriptor shell_cmd =
COMMAND_DESC ( struct shell_options, shell_opts, 0, 0,
"", "" );

/**
* "shell" command
*
* @v argc Argument count
* @v argv Argument list
* @ret rc Return status code
*/
static int shell_exec ( int argc, char **argv ) {
struct shell_options opts;
int rc;

/* Parse options */
if ( ( rc = parse_options ( argc, argv, &shell_cmd, &opts ) ) != 0 )
return rc;

/* Start shell */
if ( ( rc = shell() ) != 0 )
return rc;

return 0;
}

/** "shell" command */
struct command shell_command __command = {
.name = "shell",
.exec = shell_exec,
};
2 changes: 1 addition & 1 deletion src/include/ipxe/shell.h
Expand Up @@ -9,6 +9,6 @@

FILE_LICENCE ( GPL2_OR_LATER );

extern void shell ( void );
extern int shell ( void );

#endif /* _IPXE_SHELL_H */

0 comments on commit 1fcea25

Please sign in to comment.