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