forked from Imagelibrary/rtems
libmisc/shell: Make some internal shell functions public.
- Add 'rtems_shell_init_environment()' so a user can create the shell environment without needing to run a shell. - Move 'rtems_shell_lookup_topic', 'rtems_shell_can_see_cmd', and 'rtems_shell_execute_cmd' from the internal interface to the public interface. Closes #3104.
This commit is contained in:
@@ -11,24 +11,9 @@
|
|||||||
|
|
||||||
#include "shell.h"
|
#include "shell.h"
|
||||||
|
|
||||||
struct rtems_shell_topic_tt;
|
|
||||||
typedef struct rtems_shell_topic_tt rtems_shell_topic_t;
|
|
||||||
|
|
||||||
struct rtems_shell_topic_tt {
|
|
||||||
const char *topic;
|
|
||||||
rtems_shell_topic_t *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
extern rtems_shell_cmd_t * rtems_shell_first_cmd;
|
extern rtems_shell_cmd_t * rtems_shell_first_cmd;
|
||||||
extern rtems_shell_topic_t * rtems_shell_first_topic;
|
extern rtems_shell_topic_t * rtems_shell_first_topic;
|
||||||
|
|
||||||
rtems_shell_topic_t * rtems_shell_lookup_topic(const char *topic);
|
|
||||||
|
|
||||||
bool rtems_shell_can_see_cmd(const rtems_shell_cmd_t *shell_cmd);
|
|
||||||
|
|
||||||
int rtems_shell_execute_cmd(const char *cmd, int argc, char *argv[]);
|
|
||||||
|
|
||||||
extern void rtems_shell_register_monitor_commands(void);
|
extern void rtems_shell_register_monitor_commands(void);
|
||||||
|
|
||||||
extern void rtems_shell_print_heap_info(
|
extern void rtems_shell_print_heap_info(
|
||||||
|
|||||||
@@ -147,6 +147,12 @@ static void rtems_shell_init_once(void)
|
|||||||
"running on %m\n");
|
"running on %m\n");
|
||||||
|
|
||||||
rtems_shell_init_commands();
|
rtems_shell_init_commands();
|
||||||
|
rtems_shell_register_monitor_commands();
|
||||||
|
}
|
||||||
|
|
||||||
|
void rtems_shell_init_environment(void)
|
||||||
|
{
|
||||||
|
assert(pthread_once(&rtems_shell_once, rtems_shell_init_once) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -721,10 +727,7 @@ bool rtems_shell_main_loop(
|
|||||||
FILE *stdinToClose = NULL;
|
FILE *stdinToClose = NULL;
|
||||||
FILE *stdoutToClose = NULL;
|
FILE *stdoutToClose = NULL;
|
||||||
|
|
||||||
eno = pthread_once(&rtems_shell_once, rtems_shell_init_once);
|
rtems_shell_init_environment();
|
||||||
assert(eno == 0);
|
|
||||||
|
|
||||||
rtems_shell_register_monitor_commands();
|
|
||||||
|
|
||||||
shell_env = rtems_shell_init_env(shell_env_arg);
|
shell_env = rtems_shell_init_env(shell_env_arg);
|
||||||
if (shell_env == NULL) {
|
if (shell_env == NULL) {
|
||||||
|
|||||||
@@ -94,6 +94,14 @@ typedef struct {
|
|||||||
const char *alias;
|
const char *alias;
|
||||||
} rtems_shell_alias_t;
|
} rtems_shell_alias_t;
|
||||||
|
|
||||||
|
struct rtems_shell_topic_tt;
|
||||||
|
typedef struct rtems_shell_topic_tt rtems_shell_topic_t;
|
||||||
|
|
||||||
|
struct rtems_shell_topic_tt {
|
||||||
|
const char *topic;
|
||||||
|
rtems_shell_topic_t *next;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The return value has RTEMS_SHELL_KEYS_EXTENDED set if the key
|
* The return value has RTEMS_SHELL_KEYS_EXTENDED set if the key
|
||||||
* is extended, ie a special key.
|
* is extended, ie a special key.
|
||||||
@@ -125,6 +133,26 @@ extern int rtems_shell_make_args(
|
|||||||
int max_args
|
int max_args
|
||||||
);
|
);
|
||||||
|
|
||||||
|
extern rtems_shell_topic_t * rtems_shell_lookup_topic(
|
||||||
|
const char *topic
|
||||||
|
);
|
||||||
|
|
||||||
|
extern bool rtems_shell_can_see_cmd(
|
||||||
|
const rtems_shell_cmd_t *shell_cmd
|
||||||
|
);
|
||||||
|
|
||||||
|
extern int rtems_shell_execute_cmd(
|
||||||
|
const char *cmd, int argc, char *argv[]
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Call to set up the shell environment if you need to execute commands before
|
||||||
|
* running a shell.
|
||||||
|
*/
|
||||||
|
extern void rtems_shell_init_environment(
|
||||||
|
void
|
||||||
|
);
|
||||||
|
|
||||||
extern int rtems_shell_cat_file(
|
extern int rtems_shell_cat_file(
|
||||||
FILE *out,
|
FILE *out,
|
||||||
const char *name
|
const char *name
|
||||||
|
|||||||
Reference in New Issue
Block a user