Mercurial > pidgin
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); |