diff options
Diffstat (limited to 'libglusterfs/src')
| -rw-r--r-- | libglusterfs/src/dict.c | 28 | ||||
| -rw-r--r-- | libglusterfs/src/dict.h | 2 | 
2 files changed, 30 insertions, 0 deletions
diff --git a/libglusterfs/src/dict.c b/libglusterfs/src/dict.c index 04d627dde39..aa06dcb2a8d 100644 --- a/libglusterfs/src/dict.c +++ b/libglusterfs/src/dict.c @@ -3077,3 +3077,31 @@ dict_for_key_value (const char *name, const char *value, size_t size)  	return xattr;  } + +/* + * "strings" should be NULL terminated strings array. + */ +int +dict_has_key_from_array (dict_t *dict, char **strings, gf_boolean_t *result) +{ +        int      i    = 0; +        uint32_t hash = 0; + +        if (!dict || !strings || !result) +                return -EINVAL; + +        LOCK (&dict->lock); +        { +                for (i = 0; strings[i]; i++) { +                        hash = SuperFastHash (strings[i], strlen (strings[i])); +                        if (dict_lookup_common (dict, strings[i], hash)) { +                                *result = _gf_true; +                                goto unlock; +                        } +                } +                *result = _gf_false; +        } +unlock: +        UNLOCK (&dict->lock); +        return 0; +} diff --git a/libglusterfs/src/dict.h b/libglusterfs/src/dict.h index bdc003ea373..b1ba3c20234 100644 --- a/libglusterfs/src/dict.h +++ b/libglusterfs/src/dict.h @@ -263,4 +263,6 @@ are_dicts_equal (dict_t *one, dict_t *two,                   gf_boolean_t (*match) (dict_t *d, char *k, data_t *v,                                          void *data),                   gf_boolean_t (*value_ignore) (char *k)); +int +dict_has_key_from_array (dict_t *dict, char **strings, gf_boolean_t *result);  #endif  | 
