diff options
| author | Tanu Kaskinen <tanuk@iki.fi> | 2009-08-09 07:59:06 +0300 | 
|---|---|---|
| committer | Tanu Kaskinen <tanuk@iki.fi> | 2009-08-09 07:59:06 +0300 | 
| commit | 1457df40eee692834d1c5faf95ca0057d74f86d1 (patch) | |
| tree | 6884f45b91c192b49d5550bfeed011fe099d15b5 | |
| parent | 44770c59e92f49288341afe8646d8bc39eb9f589 (diff) | |
proplist: New function: pa_proplist_equal()
| -rw-r--r-- | src/map-file | 1 | ||||
| -rw-r--r-- | src/pulse/proplist.c | 26 | ||||
| -rw-r--r-- | src/pulse/proplist.h | 3 | 
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  | 
