xref: /qemu/include/qemu/readline.h (revision d2674b2cf7db7dce865f3c2b89f0e36d1657a3b5)
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