Mercurial > pidgin.yaz
comparison 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 |
comparison
equal
deleted
inserted
replaced
16389:493ca924c199 | 16390:4fc51a87ce42 |
---|---|
63 slplink = slpmsg->slplink; | 63 slplink = slpmsg->slplink; |
64 | 64 |
65 if (slpmsg->fp != NULL) | 65 if (slpmsg->fp != NULL) |
66 fclose(slpmsg->fp); | 66 fclose(slpmsg->fp); |
67 | 67 |
68 if (slpmsg->buffer != NULL) | 68 purple_imgstore_unref(slpmsg->img); |
69 | |
70 /* We don't want to free the data of the PurpleStoredImage, | |
71 * but to avoid code duplication, it's sharing buffer. */ | |
72 if (slpmsg->img == NULL) | |
69 g_free(slpmsg->buffer); | 73 g_free(slpmsg->buffer); |
70 | 74 |
71 #ifdef MSN_DEBUG_SLP | 75 #ifdef MSN_DEBUG_SLP |
72 /* | 76 /* |
73 if (slpmsg->info != NULL) | 77 if (slpmsg->info != NULL) |
99 | 103 |
100 void | 104 void |
101 msn_slpmsg_set_body(MsnSlpMessage *slpmsg, const char *body, | 105 msn_slpmsg_set_body(MsnSlpMessage *slpmsg, const char *body, |
102 long long size) | 106 long long size) |
103 { | 107 { |
108 /* We can only have one data source at a time. */ | |
109 g_return_if_fail(slpmsg->buffer); | |
110 g_return_if_fail(slpmsg->img); | |
111 g_return_if_fail(slpmsg->fp); | |
112 | |
104 if (body != NULL) | 113 if (body != NULL) |
105 slpmsg->buffer = g_memdup(body, size); | 114 slpmsg->buffer = g_memdup(body, size); |
106 else | 115 else |
107 slpmsg->buffer = g_new0(guchar, size); | 116 slpmsg->buffer = g_new0(guchar, size); |
108 | 117 |
109 slpmsg->size = size; | 118 slpmsg->size = size; |
110 } | 119 } |
111 | 120 |
112 void | 121 void |
122 msn_slpmsg_set_image(MsnSlpMessage *slpmsg, PurpleStoredImage *img) | |
123 { | |
124 /* We can only have one data source at a time. */ | |
125 g_return_if_fail(slpmsg->buffer); | |
126 g_return_if_fail(slpmsg->img); | |
127 g_return_if_fail(slpmsg->fp); | |
128 | |
129 slpmsg->img = purple_imgstore_ref(img); | |
130 slpmsg->buffer = (guchar *)purple_imgstore_get_data(img); | |
131 slpmsg->size = purple_imgstore_get_size(img); | |
132 } | |
133 | |
134 void | |
113 msn_slpmsg_open_file(MsnSlpMessage *slpmsg, const char *file_name) | 135 msn_slpmsg_open_file(MsnSlpMessage *slpmsg, const char *file_name) |
114 { | 136 { |
115 struct stat st; | 137 struct stat st; |
138 | |
139 /* We can only have one data source at a time. */ | |
140 g_return_if_fail(slpmsg->buffer); | |
141 g_return_if_fail(slpmsg->img); | |
142 g_return_if_fail(slpmsg->fp); | |
116 | 143 |
117 slpmsg->fp = g_fopen(file_name, "rb"); | 144 slpmsg->fp = g_fopen(file_name, "rb"); |
118 | 145 |
119 if (g_stat(file_name, &st) == 0) | 146 if (g_stat(file_name, &st) == 0) |
120 slpmsg->size = st.st_size; | 147 slpmsg->size = st.st_size; |