[PATCH 17/22] shell: Add and use rtems_shell_execute_cmd()

Sebastian Huber sebastian.huber at embedded-brains.de
Tue Nov 18 14:37:23 UTC 2014


---
 cpukit/libmisc/shell/internal.h     |  1 +
 cpukit/libmisc/shell/main_time.c    | 10 +---------
 cpukit/libmisc/shell/shell.c        | 10 +---------
 cpukit/libmisc/shell/shell_cmdset.c | 17 +++++++++++++++++
 4 files changed, 20 insertions(+), 18 deletions(-)

diff --git a/cpukit/libmisc/shell/internal.h b/cpukit/libmisc/shell/internal.h
index 1884117..e6d0ef1 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 e574647..401186a 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 6030ecc..5b74257 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 2f2c246..07d37db 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);
+  }
+}
-- 
1.8.4.5



More information about the devel mailing list