#ifndef READLINE_H #define READLINE_H #define READLINE_CMD_BUF_SIZE 4095 #define READLINE_MAX_CMDS 64 #define READLINE_MAX_COMPLETIONS 256 typedef void G_GNUC_PRINTF(2, 3) ReadLinePrintfFunc(void *opaque, const char *fmt, ...); typedef void ReadLineFlushFunc(void *opaque); typedef void ReadLineFunc(void *opaque, const char *str, void *readline_opaque); typedef void ReadLineCompletionFunc(void *opaque, const char *cmdline); typedef struct ReadLineState { char cmd_buf[READLINE_CMD_BUF_SIZE + 1]; int cmd_buf_index; int cmd_buf_size; char last_cmd_buf[READLINE_CMD_BUF_SIZE + 1]; int last_cmd_buf_index; int last_cmd_buf_size; int esc_state; int esc_param; char *history[READLINE_MAX_CMDS]; int hist_entry; ReadLineCompletionFunc *completion_finder; char *completions[READLINE_MAX_COMPLETIONS]; int nb_completions; int completion_index; ReadLineFunc *readline_func; void *readline_opaque; int read_password; char prompt[256]; ReadLinePrintfFunc *printf_func; ReadLineFlushFunc *flush_func; void *opaque; } ReadLineState; void readline_add_completion(ReadLineState *rs, const char *str); void readline_set_completion_index(ReadLineState *rs, int completion_index); const char *readline_get_history(ReadLineState *rs, unsigned int index); void readline_handle_byte(ReadLineState *rs, int ch); void readline_start(ReadLineState *rs, const char *prompt, int read_password, ReadLineFunc *readline_func, void *readline_opaque); void readline_restart(ReadLineState *rs); void readline_show_prompt(ReadLineState *rs); ReadLineState *readline_init(ReadLinePrintfFunc *printf_func, ReadLineFlushFunc *flush_func, void *opaque, ReadLineCompletionFunc *completion_finder); void readline_free(ReadLineState *rs); #endif /* READLINE_H */