libpurple/purplesavedpresence.c

changeset 42226
f44497b3f5d9
parent 42207
7c16e3b1cce8
child 42230
0c86a3fa4617
--- a/libpurple/purplesavedpresence.c	Thu Jun 22 20:59:24 2023 -0500
+++ b/libpurple/purplesavedpresence.c	Thu Jun 22 21:06:18 2023 -0500
@@ -374,3 +374,63 @@
 		g_object_notify_by_pspec(G_OBJECT(presence), properties[PROP_EMOJI]);
 	}
 }
+
+gboolean
+purple_saved_presence_equal(PurpleSavedPresence *a, PurpleSavedPresence *b) {
+	/* Check if both objects are null. */
+	if(a == NULL && b == NULL) {
+		return TRUE;
+	}
+
+	/* Check if either object is null. */
+	if(a == NULL || b == NULL) {
+		return FALSE;
+	}
+
+	/* Check that both objects are a saved presence. */
+	if(!PURPLE_IS_SAVED_PRESENCE(a) || !PURPLE_IS_SAVED_PRESENCE(b)) {
+		return FALSE;
+	}
+
+	/* If last used is non-null on both compare them. */
+	if(a->last_used != NULL && b->last_used != NULL) {
+		if(!g_date_time_equal(a->last_used, b->last_used)) {
+			return FALSE;
+		}
+	}
+
+	if(a->last_used == NULL && b->last_used != NULL) {
+		return FALSE;
+	}
+
+	if(a->last_used != NULL && b->last_used == NULL) {
+		return FALSE;
+	}
+
+	/* Check the use counts. */
+	if(a->use_count != b->use_count) {
+		return FALSE;
+	}
+
+	/* Check the name. */
+	if(!purple_strequal(a->name, b->name)) {
+		return FALSE;
+	}
+
+	/* Check the primitive. */
+	if(a->primitive != b->primitive) {
+		return FALSE;
+	}
+
+	/* Check the message. */
+	if(!purple_strequal(a->message, b->message)) {
+		return FALSE;
+	}
+
+	/* Check the emoji. */
+	if(!purple_strequal(a->emoji, b->emoji)) {
+		return FALSE;
+	}
+
+	return TRUE;
+}

mercurial