From: Timo Sirainen Date: Mon, 10 Oct 2016 22:04:39 +0000 (+0300) Subject: lib-fs: Added internal fs_metadata_find() helper function X-Git-Tag: 2.2.26~122 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e11fd3241e0df1576b47d29e5b0d9754e5c00483;p=thirdparty%2Fdovecot%2Fcore.git lib-fs: Added internal fs_metadata_find() helper function --- diff --git a/src/lib-fs/fs-api-private.h b/src/lib-fs/fs-api-private.h index 3b084e5155..9167b1113a 100644 --- a/src/lib-fs/fs-api-private.h +++ b/src/lib-fs/fs-api-private.h @@ -168,6 +168,8 @@ void fs_metadata_init(struct fs_file *file); void fs_metadata_init_or_clear(struct fs_file *file); void fs_default_set_metadata(struct fs_file *file, const char *key, const char *value); +const char *fs_metadata_find(const ARRAY_TYPE(fs_metadata) *metadata, + const char *key); int fs_default_copy(struct fs_file *src, struct fs_file *dest); void fs_file_timing_end(struct fs_file *file, enum fs_op op); diff --git a/src/lib-fs/fs-api.c b/src/lib-fs/fs-api.c index aa8591d698..dbf36db7a4 100644 --- a/src/lib-fs/fs-api.c +++ b/src/lib-fs/fs-api.c @@ -323,6 +323,21 @@ void fs_default_set_metadata(struct fs_file *file, metadata->value = p_strdup(file->metadata_pool, value); } +const char *fs_metadata_find(const ARRAY_TYPE(fs_metadata) *metadata, + const char *key) +{ + const struct fs_metadata *md; + + if (array_is_created(metadata)) + return NULL; + + array_foreach(metadata, md) { + if (strcmp(md->key, key) == 0) + return md->value; + } + return NULL; +} + void fs_set_metadata(struct fs_file *file, const char *key, const char *value) { i_assert(key != NULL); @@ -403,18 +418,11 @@ int fs_lookup_metadata(struct fs_file *file, const char *key, const char **value_r) { const ARRAY_TYPE(fs_metadata) *metadata; - const struct fs_metadata *md; if (fs_get_metadata(file, &metadata) < 0) return -1; - array_foreach(metadata, md) { - if (strcmp(md->key, key) == 0) { - *value_r = md->value; - return 1; - } - } - *value_r = NULL; - return 0; + *value_r = fs_metadata_find(metadata, key); + return *value_r != NULL ? 1 : 0; } const char *fs_file_path(struct fs_file *file)