blob: fc9806ecf1a0bbd43fc4a17812ace39cc10b165a [file] [log] [blame]
aliguori376253e2009-03-05 23:01:23 +00001#ifndef READLINE_H
2#define READLINE_H
3
4#include "qemu-common.h"
5
aliguori4c36ba32009-03-05 23:01:37 +00006#define READLINE_CMD_BUF_SIZE 4095
7#define READLINE_MAX_CMDS 64
8#define READLINE_MAX_COMPLETIONS 256
9
aliguori376253e2009-03-05 23:01:23 +000010typedef void ReadLineFunc(Monitor *mon, const char *str, void *opaque);
aliguori4c36ba32009-03-05 23:01:37 +000011typedef void ReadLineCompletionFunc(const char *cmdline);
aliguori376253e2009-03-05 23:01:23 +000012
aliguori4c36ba32009-03-05 23:01:37 +000013typedef struct ReadLineState {
14 char cmd_buf[READLINE_CMD_BUF_SIZE + 1];
15 int cmd_buf_index;
16 int cmd_buf_size;
aliguori376253e2009-03-05 23:01:23 +000017
aliguori4c36ba32009-03-05 23:01:37 +000018 char last_cmd_buf[READLINE_CMD_BUF_SIZE + 1];
19 int last_cmd_buf_index;
20 int last_cmd_buf_size;
aliguori376253e2009-03-05 23:01:23 +000021
aliguori4c36ba32009-03-05 23:01:37 +000022 int esc_state;
23 int esc_param;
aliguori376253e2009-03-05 23:01:23 +000024
aliguori4c36ba32009-03-05 23:01:37 +000025 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,
aliguori376253e2009-03-05 23:01:23 +000048 ReadLineFunc *readline_func, void *opaque);
aliguori2724b182009-03-05 23:01:47 +000049void readline_restart(ReadLineState *rs);
aliguori4c36ba32009-03-05 23:01:37 +000050void readline_show_prompt(ReadLineState *rs);
51
52ReadLineState *readline_init(Monitor *mon,
53 ReadLineCompletionFunc *completion_finder);
aliguori376253e2009-03-05 23:01:23 +000054
55#endif /* !READLINE_H */