summaryrefslogtreecommitdiffstats
path: root/cpukit/libmisc/shell/shell.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libmisc/shell/shell.h')
-rw-r--r--cpukit/libmisc/shell/shell.h385
1 files changed, 0 insertions, 385 deletions
diff --git a/cpukit/libmisc/shell/shell.h b/cpukit/libmisc/shell/shell.h
deleted file mode 100644
index 98ddf0a958..0000000000
--- a/cpukit/libmisc/shell/shell.h
+++ /dev/null
@@ -1,385 +0,0 @@
-/**
- * @file rtems/shell.h
- *
- * @brief Instantatiate a New Terminal Shell
- */
-
-/*
- * Author:
- *
- * WORK: fernando.ruiz@ctv.es
- * HOME: correo@fernando-ruiz.com
- *
- * Thanks at:
- * Chris Johns
- */
-
-#ifndef __RTEMS_SHELL_H__
-#define __RTEMS_SHELL_H__
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <rtems.h>
-#include <stdio.h>
-#include <termios.h>
-#include <rtems/fs.h>
-#include <rtems/libio.h>
-#include <rtems/chain.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Some key labels to define special keys.
- */
-
-#define RTEMS_SHELL_KEYS_EXTENDED (0x8000)
-#define RTEMS_SHELL_KEYS_NORMAL_MASK (0x00ff)
-#define RTEMS_SHELL_KEYS_INS (0)
-#define RTEMS_SHELL_KEYS_DEL (1)
-#define RTEMS_SHELL_KEYS_UARROW (2)
-#define RTEMS_SHELL_KEYS_DARROW (3)
-#define RTEMS_SHELL_KEYS_LARROW (4)
-#define RTEMS_SHELL_KEYS_RARROW (5)
-#define RTEMS_SHELL_KEYS_HOME (6)
-#define RTEMS_SHELL_KEYS_END (7)
-#define RTEMS_SHELL_KEYS_F1 (8)
-#define RTEMS_SHELL_KEYS_F2 (9)
-#define RTEMS_SHELL_KEYS_F3 (10)
-#define RTEMS_SHELL_KEYS_F4 (11)
-#define RTEMS_SHELL_KEYS_F5 (12)
-#define RTEMS_SHELL_KEYS_F6 (13)
-#define RTEMS_SHELL_KEYS_F7 (14)
-#define RTEMS_SHELL_KEYS_F8 (15)
-#define RTEMS_SHELL_KEYS_F9 (16)
-#define RTEMS_SHELL_KEYS_F10 (17)
-
-typedef bool (*rtems_shell_login_check_t)(
- const char * /* user */,
- const char * /* passphrase */
-);
-
-extern bool rtems_shell_login_prompt(
- FILE *in,
- FILE *out,
- const char *device,
- rtems_shell_login_check_t check
-);
-
-extern bool rtems_shell_login_check(
- const char *user,
- const char *passphrase
-);
-
-typedef int (*rtems_shell_command_t)(int argc, char **argv);
-
-struct rtems_shell_cmd_tt;
-typedef struct rtems_shell_cmd_tt rtems_shell_cmd_t;
-
-struct rtems_shell_cmd_tt {
- const char *name;
- const char *usage;
- const char *topic;
- rtems_shell_command_t command;
- rtems_shell_cmd_t *alias;
- rtems_shell_cmd_t *next;
- mode_t mode;
- uid_t uid;
- gid_t gid;
-};
-
-typedef struct {
- const char *name;
- const char *alias;
-} 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
- * is extended, ie a special key.
- */
-extern unsigned int rtems_shell_getchar(FILE *in);
-
-extern rtems_shell_cmd_t * rtems_shell_lookup_cmd(const char *cmd);
-
-extern rtems_shell_cmd_t *rtems_shell_add_cmd_struct(
- rtems_shell_cmd_t *shell_cmd
-);
-
-rtems_shell_cmd_t * rtems_shell_add_cmd(
- const char *cmd,
- const char *topic,
- const char *usage,
- rtems_shell_command_t command
-);
-
-extern rtems_shell_cmd_t * rtems_shell_alias_cmd(
- const char *cmd,
- const char *alias
-);
-
-extern int rtems_shell_make_args(
- char *commandLine,
- int *argc_p,
- char **argv_p,
- 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(
- FILE *out,
- const char *name
-);
-
-extern void rtems_shell_write_file(
- const char *name,
- const char *content
-);
-
-extern int rtems_shell_script_file(
- int argc,
- char **argv
-);
-
-/**
- * Initialise the shell creating tasks to login and run the shell
- * sessions.
- *
- * @param task_name Name of the shell task.
- * @param task_stacksize The size of the stack. If 0 the default size is used.
- * @param task_priority The priority the shell runs at.
- * @param forever Repeat logins.
- * @param wait Caller should block until shell exits.
- * @param login_check User login check function, NULL disables login checks.
- *
- */
-extern rtems_status_code rtems_shell_init(
- const char *task_name,
- size_t task_stacksize,
- rtems_task_priority task_priority,
- const char *devname,
- bool forever,
- bool wait,
- rtems_shell_login_check_t login_check
-);
-
-/**
- * Run a shell script creating a shell tasks to execute the command under.
- *
- * @param task_name Name of the shell task.
- * @param task_stacksize The size of the stack. If 0 the default size is used.
- * @param task_priority The priority the shell runs at.
- * @param input The file of commands. Can be 'stdin' to use stdin.
- * @param output The output file to write commands to. Can be 'stdout',
- * 'stderr' or '/dev/null'.
- * @param output_append Append the output to the file or truncate the file.
- * Create if it does not exist.
- * @param wait Wait for the script to finish.
- */
-extern rtems_status_code rtems_shell_script(
- const char *task_name,
- size_t task_stacksize, /* 0 default*/
- rtems_task_priority task_priority,
- const char *input,
- const char *output,
- bool output_append,
- bool wait,
- bool echo
-);
-
-/**
- * Private environment associated with each shell instance.
- */
-typedef struct {
- /** 'S','E','N','V': Shell Environment */
- rtems_name magic;
- const char *devname;
- const char *taskname;
- bool exit_shell; /* logout */
- bool forever; /* repeat login */
- int errorlevel;
- bool echo;
- char cwd[256];
- const char *input;
- const char *output;
- bool output_append;
- rtems_id wake_on_end;
- rtems_shell_login_check_t login_check;
-
- /**
- * @brief The real and effective UID of the shell task in case no login check
- * is present.
- */
- uid_t uid;
-
- /**
- * @brief The real and effective GID of the shell task in case no login check
- * is present.
- */
- gid_t gid;
-} rtems_shell_env_t;
-
-bool rtems_shell_main_loop(
- rtems_shell_env_t *rtems_shell_env
-);
-
-extern const rtems_shell_env_t rtems_global_shell_env;
-
-rtems_shell_env_t *rtems_shell_get_current_env(void);
-void rtems_shell_dup_current_env(rtems_shell_env_t *);
-
-/*
- * The types of file systems we can mount. We have them broken out
- * out like this so they can be configured by shellconfig.h. The
- * mount command needs special treatment due to some file systems
- * being dependent on the network stack and some not. If we had
- * all possible file systems being included it would force the
- * networking stack into the applcation and this may not be
- * required.
- */
-struct rtems_shell_filesystems_tt;
-typedef struct rtems_shell_filesystems_tt rtems_shell_filesystems_t;
-
-typedef int (*rtems_shell_filesystems_mounter_t)(
- const char* driver,
- const char* path,
- rtems_shell_filesystems_t* fs,
- rtems_filesystem_options_t options
-);
-
-struct rtems_shell_filesystems_tt {
- rtems_chain_node link;
- const char *name;
- int driver_needed;
- const rtems_filesystem_operations_table *fs_ops;
- rtems_shell_filesystems_mounter_t mounter;
-};
-
-/**
- * This method dynamically builds the command line prompt string
- * and places it in @a prompt.
- *
- * @param[in] shell_env is the shell execution environment
- * @param[in] prompt is a pointer to a string buffer area
- * @param[in] size is length of the prompt buffer area
- *
- * @return This method fills in the memory pointed to by @a prompt.
- *
- * @note An application specific implementation can be provided
- * by the user.
- */
-extern void rtems_shell_get_prompt(
- rtems_shell_env_t *shell_env,
- char *prompt,
- size_t size
-);
-
-/**
- * Helper for the mount command.
- *
- * @param[in] driver The path to the driver.
- * @param[in] path The path to mount on.
- * @param[in] fs The file system definition.
- * @param[in] options Special file system options.
- */
-extern int rtems_shell_libc_mounter(
- const char* driver,
- const char* path,
- rtems_shell_filesystems_t* fs,
- rtems_filesystem_options_t options
-);
-
-/**
- * Add a new file system mount configuration to the mount command.
- *
- * @param[in] fs The file system mount data.
- */
-extern void rtems_shell_mount_add_fsys(rtems_shell_filesystems_t* fs);
-
-/**
- * Delete file system mount configuration from the mount command.
- *
- * @param[in] fs The file system mount data to remove.
- */
-extern void rtems_shell_mount_del_fsys(rtems_shell_filesystems_t* fs);
-
-typedef void (*rtems_shell_wait_for_input_notification)(
- int fd,
- int seconds_remaining,
- void *arg
-);
-
-/**
- * @brief Waits for input.
- *
- * @retval RTEMS_SUCCESSFUL Input detected.
- * @retval RTEMS_TIMEOUT Timeout expired.
- * @retval RTEMS_UNSATISFIED Cannot change or restore termios attributes.
- */
-extern rtems_status_code rtems_shell_wait_for_input(
- int fd,
- int timeout_in_seconds,
- rtems_shell_wait_for_input_notification notification,
- void *notification_arg
-);
-
-/**
- * @brief Waits for explicit input.
- *
- * @param desired_input An explicit unsigned character to wait for or -1 to
- * accept any input.
- *
- * @retval RTEMS_SUCCESSFUL Input detected.
- * @retval RTEMS_TIMEOUT Timeout expired.
- * @retval RTEMS_UNSATISFIED Cannot change or restore termios attributes.
- */
-extern rtems_status_code rtems_shell_wait_for_explicit_input(
- int fd,
- int timeout_in_seconds,
- rtems_shell_wait_for_input_notification notification,
- void *notification_arg,
- int desired_input
-);
-
-extern int rtems_shell_main_monitor(int argc, char **argv);
-
-/*
- * Provide these commands for application use, as their implementation
- * is tedious.
- */
-int rtems_shell_main_mv(int argc, char *argv[]);
-int rtems_shell_main_cp(int argc, char *argv[]);
-int rtems_shell_main_rm(int argc, char *argv[]);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif