X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Fcmdline%2Fcmdline_private.h;h=c2e906d8de6d38661666b3126403458e90dbd90d;hb=67cdaea00cd6ec72dc05386b80525157a9cf2018;hp=a87c45275ca6fb348b291cf756e6822fc7bbd46f;hpb=99a2dd955fba6e4cc23b77d590a033650ced9c45;p=dpdk.git diff --git a/lib/cmdline/cmdline_private.h b/lib/cmdline/cmdline_private.h index a87c45275c..c2e906d8de 100644 --- a/lib/cmdline/cmdline_private.h +++ b/lib/cmdline/cmdline_private.h @@ -11,10 +11,55 @@ #include #ifdef RTE_EXEC_ENV_WINDOWS #include +#else +#include #endif #include +#define RDLINE_BUF_SIZE 512 +#define RDLINE_PROMPT_SIZE 32 +#define RDLINE_VT100_BUF_SIZE 8 +#define RDLINE_HISTORY_BUF_SIZE BUFSIZ +#define RDLINE_HISTORY_MAX_LINE 64 + +enum rdline_status { + RDLINE_INIT, + RDLINE_RUNNING, + RDLINE_EXITED +}; + +struct rdline { + enum rdline_status status; + /* rdline bufs */ + struct cirbuf left; + struct cirbuf right; + char left_buf[RDLINE_BUF_SIZE+2]; /* reserve 2 chars for the \n\0 */ + char right_buf[RDLINE_BUF_SIZE]; + + char prompt[RDLINE_PROMPT_SIZE]; + unsigned int prompt_size; + + char kill_buf[RDLINE_BUF_SIZE]; + unsigned int kill_size; + + /* history */ + struct cirbuf history; + char history_buf[RDLINE_HISTORY_BUF_SIZE]; + int history_cur_line; + + /* callbacks and func pointers */ + rdline_write_char_t *write_char; + rdline_validate_t *validate; + rdline_complete_t *complete; + + /* vt100 parser */ + struct cmdline_vt100 vt100; + + /* opaque pointer */ + void *opaque; +}; + #ifdef RTE_EXEC_ENV_WINDOWS struct terminal { DWORD input_mode; @@ -22,6 +67,7 @@ struct terminal { int is_console_input; int is_console_output; }; +#endif struct cmdline { int s_in; @@ -29,11 +75,14 @@ struct cmdline { cmdline_parse_ctx_t *ctx; struct rdline rdl; char prompt[RDLINE_PROMPT_SIZE]; +#ifdef RTE_EXEC_ENV_WINDOWS struct terminal oldterm; char repeated_char; WORD repeat_count; -}; +#else + struct termios oldterm; #endif +}; /* Disable buffering and echoing, save previous settings to oldterm. */ void terminal_adjust(struct cmdline *cl); @@ -51,4 +100,10 @@ ssize_t cmdline_read_char(struct cmdline *cl, char *c); __rte_format_printf(2, 0) int cmdline_vdprintf(int fd, const char *format, va_list op); +int rdline_init(struct rdline *rdl, + rdline_write_char_t *write_char, + rdline_validate_t *validate, + rdline_complete_t *complete, + void *opaque); + #endif