From e31b010e2fdcbace381d41abac9072cadc093880 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Mon, 7 Oct 2024 21:22:40 +0200 Subject: [PATCH] lib-sieve: sieve-storage - Add sieve_storage_cmp() --- src/lib-sieve/sieve-storage-private.h | 7 +++++++ src/lib-sieve/sieve-storage.c | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/lib-sieve/sieve-storage-private.h b/src/lib-sieve/sieve-storage-private.h index 7ed7f31dc..64bb8f138 100644 --- a/src/lib-sieve/sieve-storage-private.h +++ b/src/lib-sieve/sieve-storage-private.h @@ -126,6 +126,13 @@ int sieve_storage_alloc(struct sieve_instance *svinst, struct event *event, int sieve_storage_setup_bin_path(struct sieve_storage *storage, mode_t mode); +/* + * Comparison + */ + +int sieve_storage_cmp(const struct sieve_storage *storage1, + const struct sieve_storage *storage2); + /* * Active script */ diff --git a/src/lib-sieve/sieve-storage.c b/src/lib-sieve/sieve-storage.c index c6e4de21a..5a8155a69 100644 --- a/src/lib-sieve/sieve-storage.c +++ b/src/lib-sieve/sieve-storage.c @@ -836,6 +836,24 @@ void sieve_storage_set_modified(struct sieve_storage *storage, time_t mtime) storage->v.set_modified(storage, mtime); } +/* + * Comparison + */ + +int sieve_storage_cmp(const struct sieve_storage *storage1, + const struct sieve_storage *storage2) +{ + if (storage1 == storage2) + return 0; + if (storage1 == NULL || storage2 == NULL) + return (storage1 == NULL ? -1 : 1); + if (storage1->storage_class != storage2->storage_class) { + return (storage1->storage_class > storage2->storage_class ? + 1 : -1); + } + return null_strcmp(storage1->location, storage2->location); +} + /* * Script access */ -- GitLab