static void print_exception (struct ui_file *file, struct gdb_exception e) { /* KLUGE: cagney/2005-01-13: Write the string out one line at a time as that way the MI's behavior is preserved. */ const char *start; const char *end; for (start = e.message; start != NULL; start = end) { end = strchr (start, '\n'); if (end == NULL) fputs_filtered (start, file); else { end++; ui_file_write (file, start, end - start); } } fprintf_filtered (file, "\n"); /* Now append the annotation. */ switch (e.reason) { case RETURN_QUIT: annotate_quit (); break; case RETURN_ERROR: /* Assume that these are all errors. */ annotate_error (); break; default: internal_error (__FILE__, __LINE__, _("Bad switch.")); } }
static int gdb_os_write_stdout (host_callback *p, const char *buf, int len) { int i; char b[2]; ui_file_write (gdb_stdtarg, buf, len); return len; }
static void remote_fileio_func_write (char *buf) { long target_fd, num; LONGEST lnum; CORE_ADDR ptrval; int fd, ret; gdb_byte *buffer; size_t length; /* 1. Parameter: file descriptor */ if (remote_fileio_extract_int (&buf, &target_fd)) { remote_fileio_ioerror (); return; } fd = remote_fileio_map_fd ((int) target_fd); if (fd == FIO_FD_INVALID) { remote_fileio_badfd (); return; } /* 2. Parameter: buffer pointer */ if (remote_fileio_extract_long (&buf, &lnum)) { remote_fileio_ioerror (); return; } ptrval = (CORE_ADDR) lnum; /* 3. Parameter: buffer length */ if (remote_fileio_extract_int (&buf, &num)) { remote_fileio_ioerror (); return; } length = (size_t) num; buffer = (gdb_byte *) xmalloc (length); if (target_read_memory (ptrval, buffer, length) != 0) { xfree (buffer); remote_fileio_ioerror (); return; } remote_fio_no_longjmp = 1; switch (fd) { case FIO_FD_CONSOLE_IN: remote_fileio_badfd (); xfree (buffer); return; case FIO_FD_CONSOLE_OUT: ui_file_write (target_fd == 1 ? gdb_stdtarg : gdb_stdtargerr, (char *) buffer, length); gdb_flush (target_fd == 1 ? gdb_stdtarg : gdb_stdtargerr); ret = length; break; default: ret = write (fd, buffer, length); if (ret < 0 && errno == EACCES) errno = EBADF; /* Cygwin returns EACCESS when writing to a R/O file. */ break; } if (ret < 0) remote_fileio_return_errno (-1); else remote_fileio_return_success (ret); xfree (buffer); }
static void do_write (void *data, const char *buffer, long length_buffer) { ui_file_write (data, buffer, length_buffer); }