1376253ecSaliguori #ifndef READLINE_H 2376253ecSaliguori #define READLINE_H 3376253ecSaliguori 4376253ecSaliguori #include "qemu-common.h" 5376253ecSaliguori 64c36ba32Saliguori #define READLINE_CMD_BUF_SIZE 4095 74c36ba32Saliguori #define READLINE_MAX_CMDS 64 84c36ba32Saliguori #define READLINE_MAX_COMPLETIONS 256 94c36ba32Saliguori 10376253ecSaliguori typedef void ReadLineFunc(Monitor *mon, const char *str, void *opaque); 11d2674b2cSWenchao Xia typedef void ReadLineCompletionFunc(Monitor *mon, 12d2674b2cSWenchao Xia const char *cmdline); 13376253ecSaliguori 144c36ba32Saliguori typedef struct ReadLineState { 154c36ba32Saliguori char cmd_buf[READLINE_CMD_BUF_SIZE + 1]; 164c36ba32Saliguori int cmd_buf_index; 174c36ba32Saliguori int cmd_buf_size; 18376253ecSaliguori 194c36ba32Saliguori char last_cmd_buf[READLINE_CMD_BUF_SIZE + 1]; 204c36ba32Saliguori int last_cmd_buf_index; 214c36ba32Saliguori int last_cmd_buf_size; 22376253ecSaliguori 234c36ba32Saliguori int esc_state; 244c36ba32Saliguori int esc_param; 25376253ecSaliguori 264c36ba32Saliguori char *history[READLINE_MAX_CMDS]; 274c36ba32Saliguori int hist_entry; 284c36ba32Saliguori 294c36ba32Saliguori ReadLineCompletionFunc *completion_finder; 304c36ba32Saliguori char *completions[READLINE_MAX_COMPLETIONS]; 314c36ba32Saliguori int nb_completions; 324c36ba32Saliguori int completion_index; 334c36ba32Saliguori 344c36ba32Saliguori ReadLineFunc *readline_func; 354c36ba32Saliguori void *readline_opaque; 364c36ba32Saliguori int read_password; 374c36ba32Saliguori char prompt[256]; 384c36ba32Saliguori Monitor *mon; 394c36ba32Saliguori } ReadLineState; 404c36ba32Saliguori 414c36ba32Saliguori void readline_add_completion(ReadLineState *rs, const char *str); 424c36ba32Saliguori void readline_set_completion_index(ReadLineState *rs, int completion_index); 434c36ba32Saliguori 444c36ba32Saliguori const char *readline_get_history(ReadLineState *rs, unsigned int index); 454c36ba32Saliguori 464c36ba32Saliguori void readline_handle_byte(ReadLineState *rs, int ch); 474c36ba32Saliguori 484c36ba32Saliguori void readline_start(ReadLineState *rs, const char *prompt, int read_password, 49376253ecSaliguori ReadLineFunc *readline_func, void *opaque); 502724b180Saliguori void readline_restart(ReadLineState *rs); 514c36ba32Saliguori void readline_show_prompt(ReadLineState *rs); 524c36ba32Saliguori 534c36ba32Saliguori ReadLineState *readline_init(Monitor *mon, 544c36ba32Saliguori ReadLineCompletionFunc *completion_finder); 55376253ecSaliguori 56376253ecSaliguori #endif /* !READLINE_H */ 57