123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356 |
-
- #ifndef _clish_shell_h
- #define _clish_shell_h
- #include <stdio.h>
- #include "lub/c_decl.h"
- #include "lub/types.h"
- #include "lub/argv.h"
- #include "tinyrl/tinyrl.h"
- #include "clish/view.h"
- #include "clish/ptype.h"
- #include "clish/var.h"
- #include "konf/net.h"
- #define CLISH_LOCK_PATH "/tmp/clish.lock"
- #define CLISH_LOCK_WAIT 20
- typedef struct clish_shell_s clish_shell_t;
- struct clish_context_s {
- clish_shell_t *shell;
- const clish_command_t *cmd;
- clish_pargv_t *pargv;
- };
- typedef struct clish_context_s clish_context_t;
- typedef enum {
- SHELL_STATE_OK = 0,
- SHELL_STATE_UNKNOWN = 1,
- SHELL_STATE_IO_ERROR = 2,
- SHELL_STATE_SCRIPT_ERROR = 3,
- SHELL_STATE_SYNTAX_ERROR = 4,
- SHELL_STATE_SYSTEM_ERROR = 5,
- SHELL_STATE_INITIALISING = 6,
- SHELL_STATE_HELPING = 7,
- SHELL_STATE_EOF = 8,
- SHELL_STATE_CLOSING = 9
- } clish_shell_state_t;
- typedef enum {
- SHELL_VAR_NONE,
- SHELL_VAR_ACTION,
- SHELL_VAR_REGEX
- } clish_shell_var_t;
- _BEGIN_C_DECL
-
- typedef bool_t clish_shell_init_fn_t(
-
- const clish_shell_t * shell);
-
- typedef void clish_shell_fini_fn_t(
-
- const clish_shell_t * shell);
-
- typedef void clish_shell_cmd_line_fn_t(
-
- clish_context_t *context,
-
- const char *cmd_line);
- typedef int clish_shell_script_fn_t(
- clish_context_t *context,
- clish_action_t *action,
- const char *script,
- char **out);
- typedef bool_t clish_shell_config_fn_t(
- clish_context_t *context);
-
- typedef bool_t clish_shell_access_fn_t(
-
- const clish_shell_t * instance,
-
- const char *access);
- typedef int clish_shell_log_fn_t(
- clish_context_t *context,
- const char *line, int retcode);
-
- typedef int clish_shell_builtin_fn_t(
-
- clish_context_t *context,
-
- const lub_argv_t * argv);
- typedef struct {
- const char *name;
- clish_shell_builtin_fn_t *callback;
-
- } clish_shell_builtin_t;
- typedef struct {
- clish_shell_init_fn_t *init_fn;
- clish_shell_access_fn_t *access_fn;
- clish_shell_cmd_line_fn_t *cmd_line_fn;
- clish_shell_script_fn_t *script_fn;
- clish_shell_fini_fn_t *fini_fn;
- clish_shell_config_fn_t *config_fn;
- clish_shell_log_fn_t *log_fn;
- const clish_shell_builtin_t *cmd_list;
- } clish_shell_hooks_t;
- clish_shell_t *clish_shell_new(const clish_shell_hooks_t * hooks,
- void *cookie,
- FILE * istream,
- FILE * ostream,
- bool_t stop_on_error);
- int clish_shell_startup(clish_shell_t * instance);
- void clish_shell_delete(clish_shell_t * instance);
- clish_view_t *clish_shell_find_create_view(clish_shell_t * instance,
- const char *name,
- const char *prompt);
- clish_ptype_t *clish_shell_find_create_ptype(clish_shell_t * instance,
- const char *name,
- const char *text,
- const char *pattern,
- clish_ptype_method_e method,
- clish_ptype_preprocess_e preprocess);
- clish_ptype_t *clish_shell_find_ptype(clish_shell_t *instance,
- const char *name);
- int clish_shell_xml_read(clish_shell_t * instance, const char *filename);
- void clish_shell_help(clish_shell_t * instance, const char *line);
- int clish_shell_exec_action(clish_action_t *action,
- clish_context_t *context, char **out);
- int clish_shell_execute(clish_context_t *context, char **out);
- int clish_shell_forceline(clish_shell_t *instance, const char *line, char ** out);
- int clish_shell_readline(clish_shell_t *instance, char ** out);
- void clish_shell_dump(clish_shell_t * instance);
- void clish_shell_close(clish_shell_t * instance);
- int clish_shell_push_file(clish_shell_t * instance, const char * fname,
- bool_t stop_on_error);
- int clish_shell_push_fd(clish_shell_t * instance, FILE * file,
- bool_t stop_on_error);
- void clish_shell_insert_var(clish_shell_t *instance, clish_var_t *var);
- clish_var_t *clish_shell_find_var(clish_shell_t *instance, const char *name);
- char *clish_shell_expand_var(const char *name, clish_context_t *context);
- char *clish_shell_expand(const char *str, clish_shell_var_t vtype, clish_context_t *context);
- clish_view_t *clish_shell__get_view(const clish_shell_t * instance);
- unsigned clish_shell__get_depth(const clish_shell_t * instance);
- const char *clish_shell__get_viewid(const clish_shell_t * instance);
- const char *clish_shell__get_overview(const clish_shell_t * instance);
- tinyrl_t *clish_shell__get_tinyrl(const clish_shell_t * instance);
- void *clish_shell__get_client_cookie(const clish_shell_t * instance);
- void
- clish_shell__set_pwd(clish_shell_t *instance, const char * line,
- clish_view_t * view, char * viewid, clish_context_t *context);
- char *clish_shell__get_pwd_line(const clish_shell_t * instance,
- unsigned int index);
- char *clish_shell__get_pwd_full(const clish_shell_t * instance, unsigned depth);
- clish_view_t *clish_shell__get_pwd_view(const clish_shell_t * instance,
- unsigned int index);
- konf_client_t *clish_shell__get_client(const clish_shell_t * instance);
- FILE *clish_shell__get_istream(const clish_shell_t * instance);
- FILE *clish_shell__get_ostream(const clish_shell_t * instance);
- void clish_shell__set_lockfile(clish_shell_t * instance, const char * path);
- char * clish_shell__get_lockfile(clish_shell_t * instance);
- int clish_shell__set_socket(clish_shell_t * instance, const char * path);
- void clish_shell_load_scheme(clish_shell_t * instance, const char * xml_path);
- int clish_shell_loop(clish_shell_t * instance);
- clish_shell_state_t clish_shell__get_state(const clish_shell_t * instance);
- void clish_shell__set_state(clish_shell_t * instance,
- clish_shell_state_t state);
- void clish_shell__set_startup_view(clish_shell_t * instance, const char * viewname);
- void clish_shell__set_startup_viewid(clish_shell_t * instance, const char * viewid);
- void clish_shell__set_default_shebang(clish_shell_t * instance, const char * shebang);
- const char * clish_shell__get_default_shebang(const clish_shell_t * instance);
- const char * clish_shell__get_fifo(clish_shell_t * instance);
- void clish_shell__set_interactive(clish_shell_t * instance, bool_t interactive);
- bool_t clish_shell__get_interactive(const clish_shell_t * instance);
- bool_t clish_shell__get_utf8(const clish_shell_t * instance);
- void clish_shell__set_utf8(clish_shell_t * instance, bool_t utf8);
- void clish_shell__set_timeout(clish_shell_t *instance, int timeout);
- char *clish_shell__get_line(clish_context_t *context);
- char *clish_shell__get_full_line(clish_context_t *context);
- char *clish_shell__get_params(clish_context_t *context);
- void clish_shell__set_log(clish_shell_t *instance, bool_t log);
- bool_t clish_shell__get_log(const clish_shell_t *instance);
- int clish_shell_wdog(clish_shell_t *instance);
- void clish_shell__set_wdog_timeout(clish_shell_t *instance,
- unsigned int timeout);
- unsigned int clish_shell__get_wdog_timeout(const clish_shell_t *instance);
- _END_C_DECL
- #endif
|