1 | #ifndef READLINE_H |
2 | #define READLINE_H |
3 | |
4 | #define READLINE_CMD_BUF_SIZE 4095 |
5 | #define READLINE_MAX_CMDS 64 |
6 | #define READLINE_MAX_COMPLETIONS 256 |
7 | |
8 | typedef void GCC_FMT_ATTR(2, 3) ReadLinePrintfFunc(void *opaque, |
9 | const char *fmt, ...); |
10 | typedef void ReadLineFlushFunc(void *opaque); |
11 | typedef void ReadLineFunc(void *opaque, const char *str, |
12 | void *readline_opaque); |
13 | typedef void ReadLineCompletionFunc(void *opaque, |
14 | const char *cmdline); |
15 | |
16 | typedef struct ReadLineState { |
17 | char cmd_buf[READLINE_CMD_BUF_SIZE + 1]; |
18 | int cmd_buf_index; |
19 | int cmd_buf_size; |
20 | |
21 | char last_cmd_buf[READLINE_CMD_BUF_SIZE + 1]; |
22 | int last_cmd_buf_index; |
23 | int last_cmd_buf_size; |
24 | |
25 | int esc_state; |
26 | int esc_param; |
27 | |
28 | char *history[READLINE_MAX_CMDS]; |
29 | int hist_entry; |
30 | |
31 | ReadLineCompletionFunc *completion_finder; |
32 | char *completions[READLINE_MAX_COMPLETIONS]; |
33 | int nb_completions; |
34 | int completion_index; |
35 | |
36 | ReadLineFunc *readline_func; |
37 | void *readline_opaque; |
38 | int read_password; |
39 | char prompt[256]; |
40 | |
41 | ReadLinePrintfFunc *printf_func; |
42 | ReadLineFlushFunc *flush_func; |
43 | void *opaque; |
44 | } ReadLineState; |
45 | |
46 | void readline_add_completion(ReadLineState *rs, const char *str); |
47 | void readline_set_completion_index(ReadLineState *rs, int completion_index); |
48 | |
49 | const char *readline_get_history(ReadLineState *rs, unsigned int index); |
50 | |
51 | void readline_handle_byte(ReadLineState *rs, int ch); |
52 | |
53 | void readline_start(ReadLineState *rs, const char *prompt, int read_password, |
54 | ReadLineFunc *readline_func, void *readline_opaque); |
55 | void readline_restart(ReadLineState *rs); |
56 | void readline_show_prompt(ReadLineState *rs); |
57 | |
58 | ReadLineState *readline_init(ReadLinePrintfFunc *printf_func, |
59 | ReadLineFlushFunc *flush_func, |
60 | void *opaque, |
61 | ReadLineCompletionFunc *completion_finder); |
62 | void readline_free(ReadLineState *rs); |
63 | |
64 | #endif /* READLINE_H */ |
65 | |