static ssize_t port_write (void *cookie, const char *buf, size_t siz) { SCM port = PTR2SCM (cookie); #ifdef GUILE_CHARS_ARE_UCS4 if (siz > SSIZE_MAX) { scm_c_write (port, buf, SSIZE_MAX); return SSIZE_MAX; } else { scm_c_write (port, buf, siz); return siz; } #else { size_t i; SCM chr_as_int; SCM chr; for (i = 0; i < siz; i++) { chr_as_int = scm_from_uchar ((unsigned char) buf[i]); chr = scm_integer_to_char (chr_as_int); scm_write_char (chr, port); } } return siz; #endif }
static SCM scm_dump_client(SCM client_smob) { client_t *client = (client_t *)SCM_SMOB_DATA(client_smob); SCM out_port = scm_current_output_port(); char *str = NULL; int len; const char *fmt = "window: %u\nposition: (%d, %d)\nsize: %u x %u\nborder width: %u\n"; if ((len = asprintf(&str, fmt, client->window, client->rect.x, client->rect.y, client->rect.width, client->rect.height, client->border_width)) < 0) { fprintf(stderr, "asprintf failed\n"); /* not sure what to return here, will figure it out later */ return SCM_UNSPECIFIED; } scm_c_write(out_port, str, len); free(str); xcb_query_tree_cookie_t c = xcb_query_tree(wm_conf.connection, client->window); xcb_query_tree_reply_t *r = xcb_query_tree_reply(wm_conf.connection, c, NULL); if ((len = asprintf(&str, "root: %u\nparent: %u\nchildren_len: %u\n", r->root, r->parent, r->children_len)) < 0) { fprintf(stderr, "asprintf failed\n"); return SCM_UNSPECIFIED; } scm_c_write(out_port, str, len); free(str); if (r) free(r); return SCM_UNSPECIFIED; }
static void ioscm_file_port_write (struct ui_file *file, const char *buffer, long length_buffer) { ioscm_file_port *stream = (ioscm_file_port *) ui_file_data (file); if (stream->magic != &file_port_magic) internal_error (__FILE__, __LINE__, _("ioscm_pot_file_write: bad magic number")); scm_c_write (stream->port, buffer, length_buffer); }
void ioscm_file_port::write (const char *buffer, long length_buffer) { scm_c_write (m_port, buffer, length_buffer); }