|  | #ifndef READLINE_H | 
|  | #define READLINE_H | 
|  |  | 
|  | #include "qemu-common.h" | 
|  |  | 
|  | #define READLINE_CMD_BUF_SIZE 4095 | 
|  | #define READLINE_MAX_CMDS 64 | 
|  | #define READLINE_MAX_COMPLETIONS 256 | 
|  |  | 
|  | typedef void ReadLineFunc(Monitor *mon, const char *str, void *opaque); | 
|  | typedef void ReadLineCompletionFunc(const char *cmdline); | 
|  |  | 
|  | typedef struct ReadLineState { | 
|  | char cmd_buf[READLINE_CMD_BUF_SIZE + 1]; | 
|  | int cmd_buf_index; | 
|  | int cmd_buf_size; | 
|  |  | 
|  | char last_cmd_buf[READLINE_CMD_BUF_SIZE + 1]; | 
|  | int last_cmd_buf_index; | 
|  | int last_cmd_buf_size; | 
|  |  | 
|  | int esc_state; | 
|  | int esc_param; | 
|  |  | 
|  | char *history[READLINE_MAX_CMDS]; | 
|  | int hist_entry; | 
|  |  | 
|  | ReadLineCompletionFunc *completion_finder; | 
|  | char *completions[READLINE_MAX_COMPLETIONS]; | 
|  | int nb_completions; | 
|  | int completion_index; | 
|  |  | 
|  | ReadLineFunc *readline_func; | 
|  | void *readline_opaque; | 
|  | int read_password; | 
|  | char prompt[256]; | 
|  | Monitor *mon; | 
|  | } ReadLineState; | 
|  |  | 
|  | void readline_add_completion(ReadLineState *rs, const char *str); | 
|  | void readline_set_completion_index(ReadLineState *rs, int completion_index); | 
|  |  | 
|  | const char *readline_get_history(ReadLineState *rs, unsigned int index); | 
|  |  | 
|  | void readline_handle_byte(ReadLineState *rs, int ch); | 
|  |  | 
|  | void readline_start(ReadLineState *rs, const char *prompt, int read_password, | 
|  | ReadLineFunc *readline_func, void *opaque); | 
|  | void readline_restart(ReadLineState *rs); | 
|  | void readline_show_prompt(ReadLineState *rs); | 
|  |  | 
|  | ReadLineState *readline_init(Monitor *mon, | 
|  | ReadLineCompletionFunc *completion_finder); | 
|  |  | 
|  | #endif /* !READLINE_H */ |