summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-11-18 10:36:27 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-11-20 10:30:25 +0100
commit5c141d6a25d7b389a1fa75a94f14ad8a68b587ed (patch)
tree9cae890947a7a49081dcfaae7b803b2dcae2c9db /cpukit
parentshell: Make rtems_shell_main_joel() static (diff)
downloadrtems-5c141d6a25d7b389a1fa75a94f14ad8a68b587ed.tar.bz2
shell: Add and use rtems_shell_execute_cmd()
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/libmisc/shell/internal.h1
-rw-r--r--cpukit/libmisc/shell/main_time.c10
-rw-r--r--cpukit/libmisc/shell/shell.c10
-rw-r--r--cpukit/libmisc/shell/shell_cmdset.c17
4 files changed, 20 insertions, 18 deletions
diff --git a/cpukit/libmisc/shell/internal.h b/cpukit/libmisc/shell/internal.h
index 1884117824..e6d0ef1de4 100644
--- a/cpukit/libmisc/shell/internal.h
+++ b/cpukit/libmisc/shell/internal.h
@@ -25,6 +25,7 @@ extern rtems_shell_topic_t * rtems_shell_first_topic;
rtems_shell_topic_t * rtems_shell_lookup_topic(const char *topic);
+int rtems_shell_execute_cmd(const char *cmd, int argc, char *argv[]);
extern void rtems_shell_register_monitor_commands(void);
diff --git a/cpukit/libmisc/shell/main_time.c b/cpukit/libmisc/shell/main_time.c
index e5746477d9..401186aeb4 100644
--- a/cpukit/libmisc/shell/main_time.c
+++ b/cpukit/libmisc/shell/main_time.c
@@ -38,7 +38,6 @@ static int rtems_shell_main_time(
char *argv[]
)
{
- rtems_shell_cmd_t* shell_cmd;
int errorlevel = 0;
struct timespec start;
struct timespec end;
@@ -52,14 +51,7 @@ static int rtems_shell_main_time(
fprintf(stderr, "error: cannot read time\n");
if (argc) {
- shell_cmd = rtems_shell_lookup_cmd(argv[1]);
- if ( argv[1] == NULL ) {
- errorlevel = -1;
- } else if ( shell_cmd == NULL ) {
- errorlevel = rtems_shell_script_file(argc, &argv[1]);
- } else {
- errorlevel = shell_cmd->command(argc, &argv[1]);
- }
+ errorlevel = rtems_shell_execute_cmd(argv[1], argc, &argv[1]);
}
sc = rtems_clock_get_uptime(&end);
diff --git a/cpukit/libmisc/shell/shell.c b/cpukit/libmisc/shell/shell.c
index 6030eccbc6..5b742575e9 100644
--- a/cpukit/libmisc/shell/shell.c
+++ b/cpukit/libmisc/shell/shell.c
@@ -705,7 +705,6 @@ bool rtems_shell_main_loop(
)
{
rtems_shell_env_t *shell_env;
- rtems_shell_cmd_t *shell_cmd;
int eno;
struct termios term;
struct termios previous_term;
@@ -917,14 +916,7 @@ bool rtems_shell_main_loop(
memcpy (cmd_argv, cmds[cmd], RTEMS_SHELL_CMD_SIZE);
if (!rtems_shell_make_args(cmd_argv, &argc, argv,
RTEMS_SHELL_MAXIMUM_ARGUMENTS)) {
- shell_cmd = rtems_shell_lookup_cmd(argv[0]);
- if ( argv[0] == NULL ) {
- shell_env->errorlevel = -1;
- } else if ( shell_cmd == NULL ) {
- shell_env->errorlevel = rtems_shell_script_file(argc, argv);
- } else {
- shell_env->errorlevel = shell_cmd->command(argc, argv);
- }
+ shell_env->errorlevel = rtems_shell_execute_cmd(argv[0], argc, argv);
}
/* end exec cmd section */
diff --git a/cpukit/libmisc/shell/shell_cmdset.c b/cpukit/libmisc/shell/shell_cmdset.c
index 2f2c246429..07d37dbda7 100644
--- a/cpukit/libmisc/shell/shell_cmdset.c
+++ b/cpukit/libmisc/shell/shell_cmdset.c
@@ -214,3 +214,20 @@ rtems_shell_cmd_t *rtems_shell_alias_cmd(
}
return shell_aux;
}
+
+int rtems_shell_execute_cmd(const char *cmd, int argc, char *argv[])
+{
+ rtems_shell_cmd_t *shell_cmd;
+
+ if (argv[0] == NULL) {
+ return -1;
+ }
+
+ shell_cmd = rtems_shell_lookup_cmd(argv[0]);
+
+ if (shell_cmd == NULL) {
+ return rtems_shell_script_file(argc, argv);
+ } else {
+ return shell_cmd->command(argc, argv);
+ }
+}