static void ggp_edisc_xfer_send_reader(PurpleHttpConnection *hc, gchar *buffer, size_t offset, size_t length, gpointer _xfer, PurpleHttpContentReaderCb cb) { PurpleXfer *xfer = _xfer; ggp_edisc_xfer *edisc_xfer; int stored; gboolean success, eof = FALSE; g_return_if_fail(xfer != NULL); edisc_xfer = purple_xfer_get_protocol_data(xfer); g_return_if_fail(edisc_xfer != NULL); if (edisc_xfer->already_read != offset) { purple_debug_error("gg", "ggp_edisc_xfer_send_reader: " "Invalid offset (%" G_GSIZE_FORMAT " != %" G_GSIZE_FORMAT ")\n", edisc_xfer->already_read, offset); ggp_edisc_xfer_error(xfer, _("Error while reading a file")); return; } stored = purple_xfer_read_file(xfer, (guchar *)buffer, length); if (stored < 0) success = FALSE; else { success = TRUE; edisc_xfer->already_read += stored; eof = ((goffset)edisc_xfer->already_read >= purple_xfer_get_size(xfer)); } cb(hc, success, eof, stored); }
static void yahoo_process_filetrans_15_reader(PurpleHttpConnection *hc, gchar *buffer, size_t offset, size_t length, gpointer _xfer, PurpleHttpContentReaderCb cb) { PurpleXfer *xfer = _xfer; gssize stored; if ((goffset)offset != purple_xfer_get_bytes_sent(xfer)) { purple_debug_warning("yahoo", "offset != purple_xfer_get_bytes_sent(xfer)\n"); } stored = purple_xfer_read_file(xfer, (guchar*)buffer, length); cb(hc, (stored >= 0), (purple_xfer_get_bytes_remaining(xfer) == 0), stored); }