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 G_GNUC_PRINTF(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_add_completion_of(ReadLineState *rs, 48 const char *pfx, const char *str); 49 void readline_set_completion_index(ReadLineState *rs, int completion_index); 50 51 const char *readline_get_history(ReadLineState *rs, unsigned int index); 52 53 void readline_handle_byte(ReadLineState *rs, int ch); 54 55 void readline_start(ReadLineState *rs, const char *prompt, int read_password, 56 ReadLineFunc *readline_func, void *readline_opaque); 57 void readline_restart(ReadLineState *rs); 58 void readline_show_prompt(ReadLineState *rs); 59 60 ReadLineState *readline_init(ReadLinePrintfFunc *printf_func, 61 ReadLineFlushFunc *flush_func, 62 void *opaque, 63 ReadLineCompletionFunc *completion_finder); 64 void readline_free(ReadLineState *rs); 65 66 #endif /* READLINE_H */ 67