/* Initialize the IO for gdb in curses mode. */ void tui_initialize_io (void) { #ifdef SIGCONT signal (SIGCONT, tui_cont_sig); #endif /* Create tui output streams. */ tui_stdout = tui_fileopen (stdout); tui_stderr = tui_fileopen (stderr); tui_out = tui_out_new (tui_stdout); /* Create the default UI. It is not created because we installed a deprecated_init_ui_hook. */ tui_old_uiout = uiout = cli_out_new (gdb_stdout); #ifdef TUI_USE_PIPE_FOR_READLINE /* Temporary solution for readline writing to stdout: redirect readline output in a pipe, read that pipe and output the content in the curses command window. */ if (pipe (tui_readline_pipe) != 0) { fprintf_unfiltered (gdb_stderr, "Cannot create pipe for readline"); exit (1); } tui_rl_outstream = fdopen (tui_readline_pipe[1], "w"); if (tui_rl_outstream == 0) { fprintf_unfiltered (gdb_stderr, "Cannot redirect readline output"); exit (1); } setvbuf (tui_rl_outstream, (char*) NULL, _IOLBF, 0); #ifdef O_NONBLOCK (void) fcntl (tui_readline_pipe[0], F_SETFL, O_NONBLOCK); #else #ifdef O_NDELAY (void) fcntl (tui_readline_pipe[0], F_SETFL, O_NDELAY); #endif #endif add_file_handler (tui_readline_pipe[0], tui_readline_output, 0); #else tui_rl_outstream = stdout; #endif }
/* Initialize the IO for gdb in curses mode. */ void tui_initialize_io (void) { #ifdef SIGCONT signal (SIGCONT, tui_cont_sig); #endif /* Create tui output streams. */ tui_stdout = new tui_file (stdout); tui_stderr = new tui_file (stderr); tui_out = tui_out_new (tui_stdout); /* Create the default UI. */ tui_old_uiout = cli_out_new (gdb_stdout); #ifdef TUI_USE_PIPE_FOR_READLINE /* Temporary solution for readline writing to stdout: redirect readline output in a pipe, read that pipe and output the content in the curses command window. */ if (gdb_pipe_cloexec (tui_readline_pipe) != 0) error (_("Cannot create pipe for readline")); tui_rl_outstream = fdopen (tui_readline_pipe[1], "w"); if (tui_rl_outstream == 0) error (_("Cannot redirect readline output")); setvbuf (tui_rl_outstream, (char*) NULL, _IOLBF, 0); #ifdef O_NONBLOCK (void) fcntl (tui_readline_pipe[0], F_SETFL, O_NONBLOCK); #else #ifdef O_NDELAY (void) fcntl (tui_readline_pipe[0], F_SETFL, O_NDELAY); #endif #endif add_file_handler (tui_readline_pipe[0], tui_readline_output, 0); #else tui_rl_outstream = stdout; #endif }