1376253ecSaliguori #ifndef READLINE_H 2376253ecSaliguori #define READLINE_H 3376253ecSaliguori 44c36ba32Saliguori #define READLINE_CMD_BUF_SIZE 4095 54c36ba32Saliguori #define READLINE_MAX_CMDS 64 64c36ba32Saliguori #define READLINE_MAX_COMPLETIONS 256 74c36ba32Saliguori 8*c60bf339SStefan Hajnoczi typedef void ReadLinePrintfFunc(void *opaque, const char *fmt, ...); 9*c60bf339SStefan Hajnoczi typedef void ReadLineFlushFunc(void *opaque); 10*c60bf339SStefan Hajnoczi typedef void ReadLineFunc(void *opaque, const char *str, 11*c60bf339SStefan Hajnoczi void *readline_opaque); 12*c60bf339SStefan Hajnoczi typedef void ReadLineCompletionFunc(void *opaque, 13d2674b2cSWenchao Xia const char *cmdline); 14376253ecSaliguori 154c36ba32Saliguori typedef struct ReadLineState { 164c36ba32Saliguori char cmd_buf[READLINE_CMD_BUF_SIZE + 1]; 174c36ba32Saliguori int cmd_buf_index; 184c36ba32Saliguori int cmd_buf_size; 19376253ecSaliguori 204c36ba32Saliguori char last_cmd_buf[READLINE_CMD_BUF_SIZE + 1]; 214c36ba32Saliguori int last_cmd_buf_index; 224c36ba32Saliguori int last_cmd_buf_size; 23376253ecSaliguori 244c36ba32Saliguori int esc_state; 254c36ba32Saliguori int esc_param; 26376253ecSaliguori 274c36ba32Saliguori char *history[READLINE_MAX_CMDS]; 284c36ba32Saliguori int hist_entry; 294c36ba32Saliguori 304c36ba32Saliguori ReadLineCompletionFunc *completion_finder; 314c36ba32Saliguori char *completions[READLINE_MAX_COMPLETIONS]; 324c36ba32Saliguori int nb_completions; 334c36ba32Saliguori int completion_index; 344c36ba32Saliguori 354c36ba32Saliguori ReadLineFunc *readline_func; 364c36ba32Saliguori void *readline_opaque; 374c36ba32Saliguori int read_password; 384c36ba32Saliguori char prompt[256]; 39*c60bf339SStefan Hajnoczi 40*c60bf339SStefan Hajnoczi ReadLinePrintfFunc *printf_func; 41*c60bf339SStefan Hajnoczi ReadLineFlushFunc *flush_func; 42*c60bf339SStefan Hajnoczi void *opaque; 434c36ba32Saliguori } ReadLineState; 444c36ba32Saliguori 454c36ba32Saliguori void readline_add_completion(ReadLineState *rs, const char *str); 464c36ba32Saliguori void readline_set_completion_index(ReadLineState *rs, int completion_index); 474c36ba32Saliguori 484c36ba32Saliguori const char *readline_get_history(ReadLineState *rs, unsigned int index); 494c36ba32Saliguori 504c36ba32Saliguori void readline_handle_byte(ReadLineState *rs, int ch); 514c36ba32Saliguori 524c36ba32Saliguori void readline_start(ReadLineState *rs, const char *prompt, int read_password, 53*c60bf339SStefan Hajnoczi ReadLineFunc *readline_func, void *readline_opaque); 542724b180Saliguori void readline_restart(ReadLineState *rs); 554c36ba32Saliguori void readline_show_prompt(ReadLineState *rs); 564c36ba32Saliguori 57*c60bf339SStefan Hajnoczi ReadLineState *readline_init(ReadLinePrintfFunc *printf_func, 58*c60bf339SStefan Hajnoczi ReadLineFlushFunc *flush_func, 59*c60bf339SStefan Hajnoczi void *opaque, 604c36ba32Saliguori ReadLineCompletionFunc *completion_finder); 61376253ecSaliguori 62376253ecSaliguori #endif /* !READLINE_H */ 63