From 08088d90d5ed502ab1ae67b3e6d76cc57e5abe14 Mon Sep 17 00:00:00 2001 From: Stephan Bosch <stephan.bosch@open-xchange.com> Date: Tue, 1 Oct 2024 20:08:38 +0200 Subject: [PATCH] lib-sieve: sieve-script - Move generic script comparison to the common function --- src/lib-sieve/sieve-script.c | 8 ++++++- .../storage/dict/sieve-dict-script.c | 22 ------------------- .../storage/file/sieve-file-script.c | 3 +-- .../storage/ldap/sieve-ldap-script.c | 16 -------------- 4 files changed, 8 insertions(+), 41 deletions(-) diff --git a/src/lib-sieve/sieve-script.c b/src/lib-sieve/sieve-script.c index 11e7b6635..11f934d9a 100644 --- a/src/lib-sieve/sieve-script.c +++ b/src/lib-sieve/sieve-script.c @@ -400,6 +400,8 @@ int sieve_script_get_stream(struct sieve_script *script, int sieve_script_cmp(const struct sieve_script *script1, const struct sieve_script *script2) { + int ret; + if (script1 == script2) return 0; if (script1 == NULL || script2 == NULL) @@ -410,7 +412,11 @@ int sieve_script_cmp(const struct sieve_script *script1, if (script1->v.cmp == NULL) { i_assert (script1->location != NULL && script2->location != NULL); - return strcmp(script1->location, script2->location); + ret = strcmp(script1->location, script2->location); + if (ret != 0) + return (ret < 0 ? -1 : 1); + + return null_strcmp(script1->name, script2->name); } return script1->v.cmp(script1, script2); diff --git a/src/lib-sieve/storage/dict/sieve-dict-script.c b/src/lib-sieve/storage/dict/sieve-dict-script.c index 4448c003f..6ccac8ebb 100644 --- a/src/lib-sieve/storage/dict/sieve-dict-script.c +++ b/src/lib-sieve/storage/dict/sieve-dict-script.c @@ -238,26 +238,6 @@ sieve_dict_script_binary_save(struct sieve_script *script, update, 0600); } -static int -sieve_dict_script_cmp(const struct sieve_script *script, - const struct sieve_script *other) -{ - struct sieve_storage *storage = script->storage; - struct sieve_storage *sother = other->storage; - int ret; - - ret = strcmp(storage->location, sother->location); - if (ret != 0) - return (ret < 0 ? -1 : 1); - - i_assert(script->name != NULL && other->name != NULL); - - ret = strcmp(script->name, other->name); - if (ret != 0) - return (ret < 0 ? -1 : 1); - return 0; -} - const struct sieve_script sieve_dict_script = { .driver_name = SIEVE_DICT_STORAGE_DRIVER_NAME, .v = { @@ -272,8 +252,6 @@ const struct sieve_script sieve_dict_script = { .binary_dump_metadata = sieve_dict_script_binary_dump_metadata, .binary_load = sieve_dict_script_binary_load, .binary_save = sieve_dict_script_binary_save, - - .cmp = sieve_dict_script_cmp, }, }; diff --git a/src/lib-sieve/storage/file/sieve-file-script.c b/src/lib-sieve/storage/file/sieve-file-script.c index ac2b0eb46..cb53e3bf0 100644 --- a/src/lib-sieve/storage/file/sieve-file-script.c +++ b/src/lib-sieve/storage/file/sieve-file-script.c @@ -824,8 +824,7 @@ sieve_file_script_cmp(const struct sieve_script *script1, if (ret != 0) return ret; - i_assert(script1->name != NULL && script2->name != NULL); - return strcmp(script1->name, script2->name); + return null_strcmp(script1->name, script2->name); } if (major(fscript1->st.st_dev) != major(fscript2->st.st_dev)) { diff --git a/src/lib-sieve/storage/ldap/sieve-ldap-script.c b/src/lib-sieve/storage/ldap/sieve-ldap-script.c index 1ee543a5d..f1d7b177a 100644 --- a/src/lib-sieve/storage/ldap/sieve-ldap-script.c +++ b/src/lib-sieve/storage/ldap/sieve-ldap-script.c @@ -262,20 +262,6 @@ sieve_ldap_script_binary_save(struct sieve_script *script, update, 0600); } -static int -sieve_ldap_script_cmp(const struct sieve_script *script1, - const struct sieve_script *script2) -{ - int ret; - - i_assert(script1->name != NULL && script2->name != NULL); - - ret = strcmp(script1->name, script2->name); - if (ret != 0) - return (ret > 0 ? 1 : -1); - return 0; -} - const struct sieve_script sieve_ldap_script = { .driver_name = SIEVE_LDAP_STORAGE_DRIVER_NAME, .v = { @@ -289,8 +275,6 @@ const struct sieve_script sieve_ldap_script = { .binary_dump_metadata = sieve_ldap_script_binary_dump_metadata, .binary_load = sieve_ldap_script_binary_load, .binary_save = sieve_ldap_script_binary_save, - - .cmp = sieve_ldap_script_cmp, }, }; -- GitLab