Mercurial > pidgin.yaz
diff libpurple/protocols/msn/slpmsg.c @ 16390:4fc51a87ce42
Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Wed, 25 Apr 2007 21:48:56 +0000 |
parents | 32c366eeeb99 |
children | 1c07ce257fd7 |
line wrap: on
line diff
--- a/libpurple/protocols/msn/slpmsg.c Wed Apr 25 01:19:24 2007 +0000 +++ b/libpurple/protocols/msn/slpmsg.c Wed Apr 25 21:48:56 2007 +0000 @@ -65,7 +65,11 @@ if (slpmsg->fp != NULL) fclose(slpmsg->fp); - if (slpmsg->buffer != NULL) + purple_imgstore_unref(slpmsg->img); + + /* We don't want to free the data of the PurpleStoredImage, + * but to avoid code duplication, it's sharing buffer. */ + if (slpmsg->img == NULL) g_free(slpmsg->buffer); #ifdef MSN_DEBUG_SLP @@ -101,6 +105,11 @@ msn_slpmsg_set_body(MsnSlpMessage *slpmsg, const char *body, long long size) { + /* We can only have one data source at a time. */ + g_return_if_fail(slpmsg->buffer); + g_return_if_fail(slpmsg->img); + g_return_if_fail(slpmsg->fp); + if (body != NULL) slpmsg->buffer = g_memdup(body, size); else @@ -110,10 +119,28 @@ } void +msn_slpmsg_set_image(MsnSlpMessage *slpmsg, PurpleStoredImage *img) +{ + /* We can only have one data source at a time. */ + g_return_if_fail(slpmsg->buffer); + g_return_if_fail(slpmsg->img); + g_return_if_fail(slpmsg->fp); + + slpmsg->img = purple_imgstore_ref(img); + slpmsg->buffer = (guchar *)purple_imgstore_get_data(img); + slpmsg->size = purple_imgstore_get_size(img); +} + +void msn_slpmsg_open_file(MsnSlpMessage *slpmsg, const char *file_name) { struct stat st; + /* We can only have one data source at a time. */ + g_return_if_fail(slpmsg->buffer); + g_return_if_fail(slpmsg->img); + g_return_if_fail(slpmsg->fp); + slpmsg->fp = g_fopen(file_name, "rb"); if (g_stat(file_name, &st) == 0)