static gboolean spice_win_usb_driver_send_request(SpiceWinUsbDriver *self, guint16 op, guint16 vid, guint16 pid, GError **err) { USBClerkDriverOp req; GOutputStream *ostream; SpiceWinUsbDriverPrivate *priv; gsize bytes; gboolean ret; SPICE_DEBUG("sending a request to usbclerk service (op=%d vid=0x%04x pid=0x%04x", op, vid, pid); g_return_val_if_fail(SPICE_IS_WIN_USB_DRIVER(self), FALSE); priv = self->priv; memset(&req, 0, sizeof(req)); req.hdr.magic = USB_CLERK_MAGIC; req.hdr.version = USB_CLERK_VERSION; req.hdr.type = op; req.hdr.size = sizeof(req); req.vid = vid; req.pid = pid; ostream = g_win32_output_stream_new(priv->handle, FALSE); ret = g_output_stream_write_all(ostream, &req, sizeof(req), &bytes, NULL, err); g_warn_if_fail(g_output_stream_close(ostream, NULL, NULL)); g_object_unref(ostream); SPICE_DEBUG("write_all request returned %d written bytes %"G_GSIZE_FORMAT " expecting %"G_GSIZE_FORMAT, ret, bytes, sizeof(req)); return ret; }
gboolean gimp_config_dump (GObject *gimp, GimpConfigDumpFormat format) { GOutputStream *output; GimpConfigWriter *writer; GimpConfig *rc; g_return_val_if_fail (G_IS_OBJECT (gimp), FALSE); rc = g_object_new (GIMP_TYPE_RC, "gimp", gimp, NULL); #ifdef G_OS_WIN32 output = g_win32_output_stream_new ((gpointer) 1, FALSE); #else output = g_unix_output_stream_new (1, FALSE); #endif writer = gimp_config_writer_new_stream (output, NULL, NULL); switch (format) { case GIMP_CONFIG_DUMP_NONE: break; case GIMP_CONFIG_DUMP_GIMPRC: gimp_config_writer_comment (writer, "Dump of the GIMP default configuration"); gimp_config_writer_linefeed (writer); gimp_config_serialize_properties (rc, writer); gimp_config_writer_linefeed (writer); break; case GIMP_CONFIG_DUMP_GIMPRC_SYSTEM: dump_gimprc_system (rc, writer, output); break; case GIMP_CONFIG_DUMP_GIMPRC_MANPAGE: dump_gimprc_manpage (rc, writer, output); break; } gimp_config_writer_finish (writer, NULL, NULL); g_object_unref (output); g_object_unref (rc); return TRUE; }
/** * gimp_config_writer_new_fd: * @fd: * * Return value: a new #GimpConfigWriter or %NULL in case of an error * * Since: GIMP 2.4 **/ GimpConfigWriter * gimp_config_writer_new_fd (gint fd) { GimpConfigWriter *writer; g_return_val_if_fail (fd > 0, NULL); writer = g_slice_new0 (GimpConfigWriter); #ifdef G_OS_WIN32 writer->output = g_win32_output_stream_new ((gpointer) fd, FALSE); #else writer->output = g_unix_output_stream_new (fd, FALSE); #endif writer->buffer = g_string_new (NULL); return writer; }