libpurple/protocols/sametime/sametime.c

branch
soc.2013.gobjectification.plugins
changeset 36688
e49025233301
parent 36684
ecc74498e088
parent 34926
c5b444d1447d
child 36701
5acd461707ae
--- a/libpurple/protocols/sametime/sametime.c	Wed Sep 04 21:05:17 2013 +0530
+++ b/libpurple/protocols/sametime/sametime.c	Fri Sep 06 18:18:39 2013 +0530
@@ -36,7 +36,7 @@
 #include "circularbuffer.h"
 #include "conversation.h"
 #include "debug.h"
-#include "ft.h"
+#include "xfer.h"
 #include "imgstore.h"
 #include "mime.h"
 #include "notify.h"
@@ -2152,17 +2152,10 @@
   */
 
   struct mwFileTransfer *ft;
-  FILE *fp;
 
   ft = purple_xfer_get_protocol_data(xfer);
 
-  fp = g_fopen(purple_xfer_get_local_filename(xfer), "wb");
-  if(! fp) {
-    mwFileTransfer_cancel(ft);
-    return;
-  }
-
-  xfer->dest_fp = fp;
+  purple_xfer_start(xfer, -1, NULL, 0);
   mwFileTransfer_accept(ft);
 }
 
@@ -2196,11 +2189,11 @@
   DEBUG_INFO(" size: %u\n", mwFileTransfer_getFileSize(ft));
   DEBUG_INFO(" text: %s\n", NSTR(mwFileTransfer_getMessage(ft)));
 
-  xfer = purple_xfer_new(acct, PURPLE_XFER_RECEIVE, who);
+  xfer = purple_xfer_new(acct, PURPLE_XFER_TYPE_RECEIVE, who);
   if (xfer)
   {
-	purple_xfer_ref(xfer);
-	mwFileTransfer_setClientData(ft, xfer, (GDestroyNotify) purple_xfer_unref);
+	g_object_ref(xfer);
+	mwFileTransfer_setClientData(ft, xfer, (GDestroyNotify) g_object_unref);
 	purple_xfer_set_protocol_data(xfer, ft);
 
 	purple_xfer_set_init_fnc(xfer, ft_incoming_init);
@@ -2216,7 +2209,7 @@
 }
 
 
-static void ft_send(struct mwFileTransfer *ft, FILE *fp) {
+static void ft_send(struct mwFileTransfer *ft) {
   guchar buf[MW_FT_LEN];
   struct mwOpaque o = { MW_FT_LEN, buf };
   guint32 rem;
@@ -2227,7 +2220,7 @@
   rem = mwFileTransfer_getRemaining(ft);
   if(rem < MW_FT_LEN) o.len = rem;
 
-  if(fread(buf, (size_t) o.len, 1, fp)) {
+  if(purple_xfer_read_file(xfer, buf, (size_t) o.len) > 0) {
 
     /* calculate progress and display it */
     purple_xfer_set_bytes_sent(xfer, purple_xfer_get_bytes_sent(xfer) + o.len);
@@ -2261,9 +2254,9 @@
     g_return_if_reached();
   }
 
-  if(purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) {
-    xfer->dest_fp = g_fopen(purple_xfer_get_local_filename(xfer), "rb");
-    ft_send(ft, xfer->dest_fp);
+  if(purple_xfer_get_xfer_type(xfer) == PURPLE_XFER_TYPE_SEND) {
+    purple_xfer_start(xfer, -1, NULL, 0);
+    ft_send(ft);
   }
 }
 
@@ -2296,7 +2289,7 @@
       purple_xfer_cancel_remote(xfer);
 
       /* drop the stolen reference */
-      purple_xfer_unref(xfer);
+      g_object_unref(xfer);
       return;
     }
   }
@@ -2314,18 +2307,12 @@
   */
 
   PurpleXfer *xfer;
-  FILE *fp;
-  size_t wc;
 
   xfer = mwFileTransfer_getClientData(ft);
   g_return_if_fail(xfer != NULL);
 
-  fp = xfer->dest_fp;
-  g_return_if_fail(fp != NULL);
-
   /* we must collect and save our precious data */
-  wc = fwrite(data->data, 1, data->len, fp);
-  if (wc != data->len) {
+  if (!purple_xfer_write_file(xfer, data->data, data->len)) {
     DEBUG_ERROR("failed to write data\n");
     purple_xfer_cancel_local(xfer);
     return;
@@ -2352,7 +2339,7 @@
     purple_xfer_end(xfer);
 
   } else if(mwFileTransfer_isOpen(ft)) {
-    ft_send(ft, xfer->dest_fp);
+    ft_send(ft);
   }
 }
 
@@ -5044,7 +5031,7 @@
   if(! fp) {
     char *msg = g_strdup_printf(_("Error reading file %s: \n%s\n"),
 				filename, g_strerror(errno));
-    purple_xfer_error(purple_xfer_get_type(xfer), acct, purple_xfer_get_remote_user(xfer), msg);
+    purple_xfer_error(purple_xfer_get_xfer_type(xfer), acct, purple_xfer_get_remote_user(xfer), msg);
     g_free(msg);
     g_free(remote_user);
     return;
@@ -5058,8 +5045,8 @@
 
   ft = mwFileTransfer_new(srvc, &idb, NULL, filename, filesize);
 
-  purple_xfer_ref(xfer);
-  mwFileTransfer_setClientData(ft, xfer, (GDestroyNotify) purple_xfer_unref);
+  g_object_ref(xfer);
+  mwFileTransfer_setClientData(ft, xfer, (GDestroyNotify) g_object_unref);
   purple_xfer_set_protocol_data(xfer, ft);
 
   mwFileTransfer_offer(ft);
@@ -5082,7 +5069,7 @@
 
   acct = purple_connection_get_account(gc);
 
-  xfer = purple_xfer_new(acct, PURPLE_XFER_SEND, who);
+  xfer = purple_xfer_new(acct, PURPLE_XFER_TYPE_SEND, who);
   if (xfer)
   {
     purple_xfer_set_init_fnc(xfer, ft_outgoing_init);

mercurial