summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map-file1
-rw-r--r--src/pulse/proplist.c26
-rw-r--r--src/pulse/proplist.h3
3 files changed, 30 insertions, 0 deletions
diff --git a/src/map-file b/src/map-file
index a1d0a061..3db3a2d7 100644
--- a/src/map-file
+++ b/src/map-file
@@ -180,6 +180,7 @@ pa_path_get_filename;
pa_proplist_clear;
pa_proplist_contains;
pa_proplist_copy;
+pa_proplist_equal;
pa_proplist_free;
pa_proplist_from_string;
pa_proplist_get;
diff --git a/src/pulse/proplist.c b/src/pulse/proplist.c
index c904f533..4f0d6a6d 100644
--- a/src/pulse/proplist.c
+++ b/src/pulse/proplist.c
@@ -680,3 +680,29 @@ int pa_proplist_isempty(pa_proplist *p) {
return pa_hashmap_isempty(MAKE_HASHMAP(p));
}
+
+int pa_proplist_equal(pa_proplist *a, pa_proplist *b) {
+ const void *key = NULL;
+ struct property *a_prop = NULL;
+ struct property *b_prop = NULL;
+ void *state = NULL;
+
+ pa_assert(a);
+ pa_assert(b);
+
+ if (pa_proplist_size(a) != pa_proplist_size(b))
+ return 0;
+
+ while ((a_prop = pa_hashmap_iterate(MAKE_HASHMAP(a), &state, &key))) {
+ if (!(b_prop = pa_hashmap_get(MAKE_HASHMAP(b), key)))
+ return 0;
+
+ if (a_prop->nbytes != b_prop->nbytes)
+ return 0;
+
+ if (memcmp(a_prop->value, b_prop->value, a_prop->nbytes) != 0)
+ return 0;
+ }
+
+ return 1;
+}
diff --git a/src/pulse/proplist.h b/src/pulse/proplist.h
index bc4dbd8a..a585944a 100644
--- a/src/pulse/proplist.h
+++ b/src/pulse/proplist.h
@@ -354,6 +354,9 @@ unsigned pa_proplist_size(pa_proplist *t);
/** Returns 0 when the proplist is empty, positive otherwise \since 0.9.15 */
int pa_proplist_isempty(pa_proplist *t);
+/** Return non-zero when a and b have the same keys and values. */
+int pa_proplist_equal(pa_proplist *a, pa_proplist *b);
+
PA_C_DECL_END
#endif