Home | History | Annotate | Download | only in qemu
      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 
     10 typedef void ReadLineFunc(Monitor *mon, const char *str, void *opaque);
     11 typedef void ReadLineCompletionFunc(const char *cmdline);
     12 
     13 typedef 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 
     40 void readline_add_completion(ReadLineState *rs, const char *str);
     41 void readline_set_completion_index(ReadLineState *rs, int completion_index);
     42 
     43 const char *readline_get_history(ReadLineState *rs, unsigned int index);
     44 
     45 void readline_handle_byte(ReadLineState *rs, int ch);
     46 
     47 void readline_start(ReadLineState *rs, const char *prompt, int read_password,
     48                     ReadLineFunc *readline_func, void *opaque);
     49 void readline_restart(ReadLineState *rs);
     50 void readline_show_prompt(ReadLineState *rs);
     51 
     52 ReadLineState *readline_init(Monitor *mon,
     53                              ReadLineCompletionFunc *completion_finder);
     54 
     55 void readline_free(ReadLineState *rs);
     56 
     57 #endif /* !READLINE_H */
     58