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;