comparison src/protocols/msn/buddyicon.c @ 5564:187c740f2a4e

[gaim-migrate @ 5966] Committing what I have so far. Some new functions, and msn is almost done. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Fri, 30 May 2003 18:04:45 +0000
parents 4f72b611f0ee
children 952710ac6635
comparison
equal deleted inserted replaced
5563:9eb5b13fd412 5564:187c740f2a4e
69 69
70 return dest; 70 return dest;
71 } 71 }
72 72
73 static gboolean 73 static gboolean
74 __get_buddy_icon_info(struct gaim_account *account, char **base64, 74 __get_buddy_icon_info(GaimAccount *account, char **base64,
75 char **md5sum, int *file_size, int *base64_size) 75 char **md5sum, int *file_size, int *base64_size)
76 { 76 {
77 FILE *fp; 77 FILE *fp;
78 struct stat sb; 78 struct stat sb;
79 md5_state_t st; 79 md5_state_t st;
80 md5_byte_t di[16]; 80 md5_byte_t di[16];
81 const char *icon;
81 82
82 if (base64 != NULL) *base64 = NULL; 83 if (base64 != NULL) *base64 = NULL;
83 if (md5sum != NULL) *md5sum = NULL; 84 if (md5sum != NULL) *md5sum = NULL;
84 if (file_size != NULL) *file_size = 0; 85 if (file_size != NULL) *file_size = 0;
85 if (base64_size != NULL) *base64_size = 0; 86 if (base64_size != NULL) *base64_size = 0;
86 87
87 if (!stat(account->iconfile, &sb)) { 88 icon = gaim_account_get_buddy_icon(account);
89
90 if (!stat(icon, &sb)) {
88 if (file_size != NULL) 91 if (file_size != NULL)
89 *file_size = sb.st_size; 92 *file_size = sb.st_size;
90 93
91 if ((fp = fopen(account->iconfile, "rb")) != NULL) { 94 if ((fp = fopen(icon, "rb")) != NULL) {
92 char *buf = g_malloc(sb.st_size + 1); 95 char *buf = g_malloc(sb.st_size + 1);
93 char *temp; 96 char *temp;
94 97
95 fread(buf, 1, sb.st_size, fp); 98 fread(buf, 1, sb.st_size, fp);
96 99
138 } 141 }
139 142
140 static gboolean 143 static gboolean
141 __send_icon_data(MsnSwitchBoard *swboard, MsnBuddyIconXfer *buddyicon) 144 __send_icon_data(MsnSwitchBoard *swboard, MsnBuddyIconXfer *buddyicon)
142 { 145 {
143 struct gaim_connection *gc = swboard->servconn->session->account->gc; 146 GaimConnection *gc = swboard->servconn->session->account->gc;
144 char buf[MSN_BUF_LEN]; 147 char buf[MSN_BUF_LEN];
145 MsnMessage *msg; 148 MsnMessage *msg;
146 int len; 149 int len;
147 150
148 len = MIN(PACKET_LENGTH - 4, 151 len = MIN(PACKET_LENGTH - 4,
164 msn_message_destroy(msg); 167 msn_message_destroy(msg);
165 168
166 msn_buddy_icon_xfer_destroy(swboard->buddy_icon_xfer); 169 msn_buddy_icon_xfer_destroy(swboard->buddy_icon_xfer);
167 swboard->buddy_icon_xfer = NULL; 170 swboard->buddy_icon_xfer = NULL;
168 171
169 hide_login_progress(gc, _("Write error")); 172 gaim_connection_error(gc, _("Write error"));
170 signoff(gc);
171 173
172 return FALSE; 174 return FALSE;
173 } 175 }
174 176
175 msn_message_destroy(msg); 177 msn_message_destroy(msg);
196 198
197 static gboolean 199 static gboolean
198 __process_invite(MsnServConn *servconn, const MsnMessage *msg) 200 __process_invite(MsnServConn *servconn, const MsnMessage *msg)
199 { 201 {
200 MsnSession *session = servconn->session; 202 MsnSession *session = servconn->session;
201 struct gaim_connection *gc = session->account->gc; 203 GaimConnection *gc = session->account->gc;
202 MsnMessage *new_msg; 204 MsnMessage *new_msg;
203 MsnSwitchBoard *swboard; 205 MsnSwitchBoard *swboard;
204 MsnBuddyIconXfer *buddyicon; 206 MsnBuddyIconXfer *buddyicon;
205 struct buddy *b; 207 struct buddy *b;
206 GHashTable *table; 208 GHashTable *table;
275 msn_message_set_body(new_msg, "Command: REQUEST\r\n"); 277 msn_message_set_body(new_msg, "Command: REQUEST\r\n");
276 278
277 if ((swboard = msn_session_open_switchboard(session)) == NULL) { 279 if ((swboard = msn_session_open_switchboard(session)) == NULL) {
278 msn_message_destroy(new_msg); 280 msn_message_destroy(new_msg);
279 281
280 hide_login_progress(gc, _("Write error")); 282 gaim_connection_error(gc, _("Write error"));
281 signoff(gc);
282 283
283 return FALSE; 284 return FALSE;
284 } 285 }
285 286
286 swboard->hidden = TRUE; 287 swboard->hidden = TRUE;
324 msn_message_set_body(new_msg, "Command: CANCEL\r\n"); 325 msn_message_set_body(new_msg, "Command: CANCEL\r\n");
325 326
326 if ((swboard = msn_session_open_switchboard(session)) == NULL) { 327 if ((swboard = msn_session_open_switchboard(session)) == NULL) {
327 msn_message_destroy(new_msg); 328 msn_message_destroy(new_msg);
328 329
329 hide_login_progress(gc, _("Write error")); 330 gaim_connection_error(gc, _("Write error"));
330 signoff(gc);
331 331
332 return FALSE; 332 return FALSE;
333 } 333 }
334 334
335 swboard->hidden = TRUE; 335 swboard->hidden = TRUE;
396 } 396 }
397 397
398 static gboolean 398 static gboolean
399 __process_data(MsnServConn *servconn, const MsnMessage *msg) 399 __process_data(MsnServConn *servconn, const MsnMessage *msg)
400 { 400 {
401 struct gaim_connection *gc = servconn->session->account->gc; 401 GaimConnection *gc = servconn->session->account->gc;
402 MsnSwitchBoard *swboard; 402 MsnSwitchBoard *swboard;
403 MsnBuddyIconXfer *buddyicon; 403 MsnBuddyIconXfer *buddyicon;
404 MsnMessage *ack_msg; 404 MsnMessage *ack_msg;
405 const char *data; 405 const char *data;
406 int len; 406 int len;
430 msn_message_destroy(ack_msg); 430 msn_message_destroy(ack_msg);
431 431
432 msn_buddy_icon_xfer_destroy(swboard->buddy_icon_xfer); 432 msn_buddy_icon_xfer_destroy(swboard->buddy_icon_xfer);
433 swboard->buddy_icon_xfer = NULL; 433 swboard->buddy_icon_xfer = NULL;
434 434
435 hide_login_progress(gc, _("Write error")); 435 gaim_connection_error(gc, _("Write error"));
436 signoff(gc);
437 436
438 return FALSE; 437 return FALSE;
439 } 438 }
440 439
441 msn_message_destroy(ack_msg); 440 msn_message_destroy(ack_msg);
473 } 472 }
474 473
475 void 474 void
476 msn_buddy_icon_invite(MsnSwitchBoard *swboard) 475 msn_buddy_icon_invite(MsnSwitchBoard *swboard)
477 { 476 {
478 struct gaim_account *account = swboard->servconn->session->account; 477 GaimAccount *account = swboard->servconn->session->account;
479 struct gaim_connection *gc = account->gc; 478 GaimConnection *gc = account->gc;
480 MsnMessage *msg; 479 MsnMessage *msg;
481 char buf[MSN_BUF_LEN]; 480 char buf[MSN_BUF_LEN];
482 char *md5sum; 481 char *md5sum;
483 int file_size, base64_size; 482 int file_size, base64_size;
484 483
485 g_return_if_fail(swboard != NULL); 484 g_return_if_fail(swboard != NULL);
486 485
487 if (*account->iconfile == '\0') 486 if (gaim_account_get_buddy_icon(account) == NULL)
488 return; /* We don't have an icon to send. */ 487 return; /* We don't have an icon to send. */
489 488
490 if (!__get_buddy_icon_info(account, NULL, &md5sum, 489 if (!__get_buddy_icon_info(account, NULL, &md5sum,
491 &file_size, &base64_size)) { 490 &file_size, &base64_size)) {
492 return; 491 return;
517 msn_message_set_body(msg, buf); 516 msn_message_set_body(msg, buf);
518 517
519 if (!msn_switchboard_send_msg(swboard, msg)) { 518 if (!msn_switchboard_send_msg(swboard, msg)) {
520 msn_message_destroy(msg); 519 msn_message_destroy(msg);
521 520
522 hide_login_progress(gc, _("Write error")); 521 gaim_connection_error(gc, _("Write error"));
523 signoff(gc);
524 522
525 return; 523 return;
526 } 524 }
527 525
528 msn_message_destroy(msg); 526 msn_message_destroy(msg);