24#include "gdbsupport/gdb_obstack.h"
25#include "gdbsupport/gdb_select.h"
26#include "gdbsupport/filestuff.h"
44 va_start (args, format);
59 for (
int i = 0; i < n; i++)
112 || (c >= 0x7F && c < 0xA0)
142 buf[out++] =
'0' + ((c >> 6) & 0x7);
143 buf[out++] =
'0' + ((c >> 3) & 0x7);
144 buf[out++] =
'0' + ((c >> 0) & 0x7);
151 if (quoter != 0 && (c ==
'\\' || c == quoter))
159 this->
write (buf, out);
192 const char *term = getenv (
"TERM");
196 if (term ==
nullptr || !strcmp (term,
"dumb"))
202 if (term && !strcmp (term,
"dumb"))
259 m_fd = fileno (file);
272 gdb_file_up
f = gdb_fopen_cloexec (
name, mode);
298 FD_SET (
m_fd, &readfds);
303 return ::read (
m_fd, buf, length_buf);
310 if (fwrite (buf, length_buf, 1,
m_file))
338 if (fputs (linebuffer,
m_file))
347 return ::isatty (
m_fd);
452 std::string copy (buf, length_buf);
453 this->
puts (copy.c_str ());
463 const char *esc = strchr (buf,
'\033');
487 using namespace std::chrono;
489 steady_clock::time_point now = steady_clock::now ();
490 seconds s = duration_cast<seconds> (now.time_since_epoch ());
491 microseconds us = duration_cast<microseconds> (now.time_since_epoch () - s);
492 std::string
timestamp = string_printf (
"%ld.%06ld ",
void write(const char *buf, long length_buf) override
void puts(const char *linebuffer) override
void write(const char *buf, long length_buf) override
void write_async_safe(const char *buf, long sizeof_buf) override
void puts(const char *str) override
void puts(const char *linebuffer) override
void write(const char *buf, long length_buf) override
stderr_file(FILE *stream)
void puts(const char *) override
void write(const char *buf, long length_buf) override
bool open(const char *name, const char *mode)
void set_stream(FILE *file)
void write_async_safe(const char *buf, long length_buf) override
bool can_emit_style_escape() override
long read(char *buf, long length_buf) override
void write(const char *buf, long length_buf) override
bool can_emit_style_escape() override
bool can_emit_style_escape() override
void write(const char *buf, long length_buf) override
void write_async_safe(const char *buf, long length_buf) override
tee_file(ui_file *one, ui_file *two)
void puts(const char *) override
void write(const char *buf, long len) override
virtual void write_async_safe(const char *buf, long length_buf)
virtual bool can_emit_style_escape()
void putstrn(const char *str, int n, int quoter, bool async_safe=false)
virtual void puts(const char *str)
void virtual void write(const char *buf, long length_buf)=0
void vprintf(const char *, va_list) ATTRIBUTE_PRINTF(2
virtual void emit_style_escape(const ui_file_style &style)
void void putstr(const char *str, int quoter)
virtual void reset_style()
void printf(const char *,...) ATTRIBUTE_PRINTF(2
void printchar(int c, int quoter, bool async_safe)
ui_file_style m_applied_style
void void vmessage(const ui_file_style &in_style, const char *format, va_list args) ATTRIBUTE_PRINTF(3
int interruptible_select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout)
mach_port_t kern_return_t mach_port_t mach_msg_type_name_t msgportsPoly mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
static void timestamp(struct mi_timestamp *tv)
std::string to_ansi() const
static bool term_cli_styling()
int gdb_console_fputs(const char *, FILE *)
bool skip_ansi_escape(const char *buf, int *n_read)