42 #include "readline/readline.h"
43 #include "readline/history.h"
56 static void handle_sigquit (
int sig);
59 static void handle_sighup (
int sig);
65 #if defined (SIGQUIT) || defined (SIGHUP)
171 rl_callback_read_char ();
173 (*after_char_processing_hook) ();
240 rl_callback_handler_remove ();
293 char *actual_gdb_prompt = NULL;
337 actual_gdb_prompt = xstrdup (new_prompt);
369 char *composed_prompt;
370 size_t prompt_length;
382 strcpy (prefix,
"\n\032\032pre-");
384 strcat (prefix,
"\n");
389 strcpy (suffix,
"\n\032\032");
391 strcat (suffix,
"\n");
399 prompt_length = strlen (prefix) + strlen (prompt) + strlen (suffix);
400 composed_prompt =
xmalloc (prompt_length + 1);
402 strcpy (composed_prompt, prefix);
403 strcat (composed_prompt, prompt);
404 strcat (composed_prompt, suffix);
408 return composed_prompt;
432 (*call_readline) (client_data);
474 int stdin_is_tty =
ISATTY (stdin);
478 if (
instream == stdin && stdin_is_tty)
514 static char *linebuffer = 0;
515 static unsigned linelength = 0;
531 linebuffer = (
char *)
xmalloc (linelength);
532 linebuffer[0] =
'\0';
547 signal (STOP_SIGNAL, handle_stop_sig);
562 if (!rl || rl == (
char *) EOF)
567 if (strlen (rl) + 1 + (p - linebuffer) > linelength)
569 linelength = strlen (rl) + 1 + (p - linebuffer);
570 nline = (
char *)
xrealloc (linebuffer, linelength);
571 p += nline - linebuffer;
582 if (p > linebuffer && *(p - 1) ==
'\\')
600 signal (STOP_SIGNAL, SIG_DFL);
603 #define SERVER_COMMAND_LENGTH 7
626 expanded = history_expand (linebuffer, &history_value);
635 xfree (history_value);
638 if (strlen (history_value) > linelength)
640 linelength = strlen (history_value) + 1;
641 linebuffer = (
char *)
xrealloc (linebuffer, linelength);
643 strcpy (linebuffer, history_value);
644 p = linebuffer + strlen (linebuffer);
646 xfree (history_value);
651 if (repeat && p == linebuffer && *p !=
'\\')
658 for (p1 = linebuffer; *p1 ==
' ' || *p1 ==
'\t'; p1++);
715 int result_size = 80;
716 static int done_once = 0;
730 result = (
char *)
xmalloc (result_size);
753 (*input_handler) (0);
759 if (input_index > 0 && result[input_index - 1] ==
'\r')
764 result[input_index++] = c;
765 while (input_index >= result_size)
768 result = (
char *)
xrealloc (result, result_size);
772 result[input_index++] =
'\0';
773 (*input_handler) (result);
802 signal (SIGTRAP, SIG_DFL);
814 signal (SIGQUIT, handle_sigquit);
819 if (signal (SIGHUP, handle_sighup) != SIG_IGN)
907 handle_sigquit (
int sig)
910 signal (sig, handle_sigquit);
914 #if defined (SIGQUIT) || defined (SIGHUP)
928 handle_sighup (
int sig)
931 signal (sig, handle_sighup);
961 signal (SIGHUP, SIG_DFL);
968 handle_stop_sig (
int sig)
971 signal (sig, handle_stop_sig);
979 #if STOP_SIGNAL == SIGTSTP
980 signal (SIGTSTP, SIG_DFL);
986 sigprocmask (SIG_SETMASK, &zero, 0);
988 #elif HAVE_SIGSETMASK
992 signal (SIGTSTP, handle_stop_sig);
994 signal (STOP_SIGNAL, handle_stop_sig);
1020 error (
_(
"Erroneous arithmetic operation."));
#define target_can_async_p()
void gdb_add_history(const char *command)
void target_terminal_ours(void)
void start_event_loop(void)
void(* after_char_processing_hook)(void)
void discard_all_intermediate_continuations(void)
void async_init_signals(void)
int saved_command_line_size
void gdb_rl_callback_handler_reinstall(void)
void fputs_unfiltered(const char *buf, struct ui_file *file)
void gdb_rl_callback_handler_install(const char *prompt)
void(* input_handler)(char *)
void clear_quit_flag(void)
char * async_annotation_suffix
void async_enable_stdin(void)
void mark_async_signal_handler(async_signal_handler *async_handler_ptr)
void ui_file_delete(struct ui_file *file)
struct ui_file * gdb_stdout
static void command_line_handler(char *rl)
void quit_force(char *args, int from_tty)
void gdb_setup_readline(void)
static void rl_callback_read_char_wrapper(gdb_client_data client_data)
void execute_command(char *, int)
static int callback_handler_installed
void gdb_disable_readline(void)
struct readline_input_state readline_input_state
void add_file_handler(int fd, handler_func *proc, gdb_client_data client_data)
void async_request_quit(gdb_client_data arg)
struct ui_file * stderr_fileopen(void)
static struct async_signal_handler * async_sigterm_token
void(* call_readline)(gdb_client_data)
#define CATCH(EXCEPTION, MASK)
const char * source_file_name
void handle_sigterm(int sig)
static char * top_level_prompt(void)
void exception_print(struct ui_file *file, struct gdb_exception e)
void fputs_filtered(const char *linebuffer, struct ui_file *stream)
void free_current_contents(void *ptr)
int async_command_editing_p
struct cleanup * make_cleanup(make_cleanup_ftype *function, void *arg)
void pop_all_targets(void)
void reinitialize_more_filter(void)
async_signal_handler * create_async_signal_handler(sig_handler_func *proc, gdb_client_data client_data)
static void change_line_handler(void)
void wrap_here(char *indent)
void printf_unfiltered(const char *format,...)
#define SERVER_COMMAND_LENGTH
void async_disable_stdin(void)
void gdb_readline2(gdb_client_data client_data)
struct ui_file * gdb_stdlog
static struct async_signal_handler * sigint_token
PTR xrealloc(PTR ptr, size_t size)
int input_from_terminal_p(void)
void cli_command_loop(void *data)
static struct async_signal_handler * sigfpe_token
void puts_unfiltered(const char *string)
struct cleanup * make_command_stats_cleanup(int msg_type)
void set_async_editing_command(char *args, int from_tty, struct cmd_list_element *c)
int check_quit_flag(void)
void gdb_rl_callback_handler_remove(void)
struct ui_file * gdb_stderr
void quit_command(char *args, int from_tty)
int call_stdin_event_handler_again_p
static void handle_sigfpe(int sig)
struct ui_file * gdb_stdtarg
void stdin_event_handler(int error, gdb_client_data client_data)
volatile int sync_quit_force_run
static void command_handler(char *command)
void reset_command_nest_depth(void)
void gdb_call_async_signal_handler(struct async_signal_handler *handler, int immediate_p)
void display_gdb_prompt(const char *new_prompt)
static void async_sigterm_handler(gdb_client_data arg)
void bpstat_do_actions(void)
void handle_sigint(int sig)
static void async_float_handler(gdb_client_data)
struct ui_file * gdb_stdtargerr
void discard_all_continuations(void)
void gdb_flush(struct ui_file *file)
struct ui_file * stdio_fileopen(FILE *file)
char * saved_command_line
void annotate_display_prompt(void)
void error(const char *fmt,...)
void delete_file_handler(int fd)
void do_cleanups(struct cleanup *old_chain)
void observer_notify_before_prompt(const char *current_prompt)