JabberData * jabber_data_create_from_data(gconstpointer rawdata, gsize size, const char *type, JabberStream *js) { JabberData *data = g_new0(JabberData, 1); gchar *checksum = purple_util_get_image_checksum(rawdata, size); gchar cid[256]; g_snprintf(cid, sizeof(cid), "*****@*****.**", checksum); g_free(checksum); data->cid = g_strdup(cid); data->type = g_strdup(type); data->size = size; data->data = g_memdup(rawdata, size); return data; }
static void purple_smiley_set_property(GObject *object, guint param_id, const GValue *value, GParamSpec *spec) { PurpleSmiley *smiley = PURPLE_SMILEY(object); switch (param_id) { case PROP_SHORTCUT: { const char *shortcut = g_value_get_string(value); purple_smiley_set_shortcut(smiley, shortcut); } break; case PROP_IMGSTORE: { PurpleStoredImage *img = g_value_get_pointer(value); purple_imgstore_unref(smiley->img); g_free(smiley->checksum); smiley->img = img; if (img) { smiley->checksum = purple_util_get_image_checksum( purple_imgstore_get_data(img), purple_imgstore_get_size(img)); purple_smiley_data_store(img); } else { smiley->checksum = NULL; } g_object_notify(object, PROP_IMGSTORE_S); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, param_id, spec); break; } }