]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
global - migrate from strncmp to str_begins
authorPhil Carmody <phil@dovecot.fi>
Thu, 11 Jan 2018 13:20:09 +0000 (15:20 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 8 Jun 2018 08:38:55 +0000 (11:38 +0300)
Simplify a bunch of verbose strncmp(,,strlen()) calls.

--- 8< --- strncmp.cocci ---
@@
expression e1, e2;
@@

- strncmp(e1, e2, strlen(e2)) == 0
+ str_begins(e1, e2)

@@
expression e1, e2;
@@

- strncmp(e1, e2, strlen(e2)) != 0
+ !str_begins(e1, e2)

@@
expression e1, e2;
@@

- strncmp(e1, e2, strlen(e1)) == 0
+ str_begins(e2, e1)

@@
expression e1, e2;
@@

- strncmp(e1, e2, strlen(e1)) != 0
+ !str_begins(e2, e1)

--- 8< ---------------------

Signed-off-by: Phil Carmody <phil@dovecot.fi>
29 files changed:
src/doveadm/doveadm-dict.c
src/imap-hibernate/imap-client.c
src/imap-login/imap-proxy.c
src/lib-dict-backend/dict-cdb.c
src/lib-dict-extra/dict-fs.c
src/lib-dict/dict-memcached-ascii.c
src/lib-dict/dict-memcached.c
src/lib-dict/dict-redis.c
src/lib-dict/dict.c
src/lib-fs/fs-metawrap.c
src/lib-fs/fs-posix.c
src/lib-imap-storage/imap-metadata.c
src/lib-storage/index/dbox-multi/mdbox-purge.c
src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c
src/lib-storage/index/index-search-mime.c
src/lib-storage/index/index-storage.c
src/lib-storage/index/mbox/mbox-storage.c
src/lib-storage/list/mailbox-list-delete.c
src/lib-storage/list/mailbox-list-fs.c
src/lib-storage/mail-storage-service.c
src/lib-storage/mailbox-attribute.c
src/lib-storage/mailbox-attribute.h
src/lib-storage/mailbox-list.c
src/lib/mempool-alloconly.c
src/lib/test-strfuncs.c
src/master/main.c
src/plugins/acl/acl-api.c
src/plugins/acl/acl-attributes.c
src/plugins/imap-acl/imap-acl-plugin.c

index 9a1af6e44ec2049661e9a8cb2ed3f72857f184d2..5f781fc36e330db3e2ee6f75922bea5b3009a398 100644 (file)
@@ -38,15 +38,15 @@ cmd_dict_init_full(struct doveadm_cmd_context *cctx,
 
        i_debug("key = %s", key);
 
-       if (strncmp(key, DICT_PATH_PRIVATE, strlen(DICT_PATH_PRIVATE)) != 0 &&
-           strncmp(key, DICT_PATH_SHARED, strlen(DICT_PATH_SHARED)) != 0) {
+       if (!str_begins(key, DICT_PATH_PRIVATE) &&
+           !str_begins(key, DICT_PATH_SHARED)) {
                i_error("Key must begin with '"DICT_PATH_PRIVATE
                        "' or '"DICT_PATH_SHARED"': %s", key);
                doveadm_exit_code = EX_USAGE;
                return -1;
        }
        if (username[0] == '\0' &&
-           strncmp(key, DICT_PATH_PRIVATE, strlen(DICT_PATH_PRIVATE)) == 0) {
+           str_begins(key, DICT_PATH_PRIVATE)) {
                i_error("-u must be specified for "DICT_PATH_PRIVATE" keys");
                doveadm_exit_code = EX_USAGE;
                return -1;
index f336bdb4768f80a50b9950dffd95f52f07ae5f2b..aba09fd813ddc26d04e23d8224f750c8c4ea1a0d 100644 (file)
@@ -490,7 +490,7 @@ imap_client_var_expand_func_userdb(const char *data, void *context,
        const char *value = NULL;
 
        for(;*fields != NULL; fields++) {
-               if (strncmp(*fields, field_name, strlen(field_name)) == 0) {
+               if (str_begins(*fields, field_name)) {
                        value = *fields+strlen(field_name);
                        break;
                }
index 768426644df45ca72cdab7a08eabfc9b69901126..879ee68103023ecbadf9b2cba44ca6336ee3e8f8 100644 (file)
@@ -359,8 +359,7 @@ int imap_proxy_parse_line(struct client *client, const char *line)
                        client_proxy_log_failure(client, log_line);
                }
 #define STR_NO_IMAP_RESP_CODE_AUTHFAILED "NO ["IMAP_RESP_CODE_AUTHFAILED"]"
-               if (strncmp(line, STR_NO_IMAP_RESP_CODE_AUTHFAILED,
-                           strlen(STR_NO_IMAP_RESP_CODE_AUTHFAILED)) == 0) {
+               if (str_begins(line, STR_NO_IMAP_RESP_CODE_AUTHFAILED)) {
                        /* the remote sent a generic "authentication failed"
                           error. replace it with our one, so that in case
                           the remote is sending a different error message
index def2617200d6a92831c763aaf1b3541cc3a7dd04..a7f4123daf8d50bd8528e2d09507626b864d0b6a 100644 (file)
@@ -197,9 +197,9 @@ static bool cdb_dict_iterate(struct dict_iterate_context *_ctx,
                        if (((ctx->flags & DICT_ITERATE_FLAG_EXACT_KEY) != 0 &&
                             strcmp(key, *ptr) == 0) ||
                            ((ctx->flags & DICT_ITERATE_FLAG_RECURSE) != 0 &&
-                            strncmp(key, *ptr, strlen(*ptr)) == 0) ||
+                            str_begins(key, *ptr)) ||
                            ((ctx->flags & DICT_ITERATE_FLAG_RECURSE) == 0 &&
-                            strncmp(key, *ptr, strlen(*ptr)) == 0 &&
+                            str_begins(key, *ptr) &&
                             strchr(key + strlen(*ptr), '/') == NULL)) {
                                match = TRUE;
                                break;
index 0f00b2e19aa511bac7141eb783a9a353096944e9..7987ffd540c86428016ab4849372d3412912917e 100644 (file)
@@ -69,9 +69,9 @@ static void fs_dict_deinit(struct dict *_dict)
 
 static const char *fs_dict_get_full_key(struct fs_dict *dict, const char *key)
 {
-       if (strncmp(key, DICT_PATH_SHARED, strlen(DICT_PATH_SHARED)) == 0)
+       if (str_begins(key, DICT_PATH_SHARED))
                return key + strlen(DICT_PATH_SHARED);
-       else if (strncmp(key, DICT_PATH_PRIVATE, strlen(DICT_PATH_PRIVATE)) == 0) {
+       else if (str_begins(key, DICT_PATH_PRIVATE)) {
                return t_strdup_printf("%s/%s", dict->username,
                                       key + strlen(DICT_PATH_PRIVATE));
        } else {
index 30e4f531da22977ce3bf97dd71def34b471f67ac..4936fa868f41418b7c33c4673bb7444714986286 100644 (file)
@@ -501,9 +501,9 @@ static const char *
 memcached_ascii_dict_get_full_key(struct memcached_ascii_dict *dict,
                                  const char *key)
 {
-       if (strncmp(key, DICT_PATH_SHARED, strlen(DICT_PATH_SHARED)) == 0)
+       if (str_begins(key, DICT_PATH_SHARED))
                key += strlen(DICT_PATH_SHARED);
-       else if (strncmp(key, DICT_PATH_PRIVATE, strlen(DICT_PATH_PRIVATE)) == 0) {
+       else if (str_begins(key, DICT_PATH_PRIVATE)) {
                key = t_strdup_printf("%s%c%s", dict->username,
                                      DICT_USERNAME_SEPARATOR,
                                      key + strlen(DICT_PATH_PRIVATE));
index cea4a33b6916e16da1490701f9f24291944cca4b..1d4cc65a266f485b65dcaefb4b0fdbdc6289b152 100644 (file)
@@ -280,7 +280,7 @@ memcached_dict_lookup(struct dict *_dict, pool_t pool, const char *key,
        struct timeout *to;
        size_t key_len;
 
-       if (strncmp(key, DICT_PATH_SHARED, strlen(DICT_PATH_SHARED)) == 0)
+       if (str_begins(key, DICT_PATH_SHARED))
                key += strlen(DICT_PATH_SHARED);
        else {
                *error_r = t_strdup_printf("memcached: Only shared keys supported currently");
index 97dc40e65a049d4c718d52f7deff35f920e58069..f554ee5e1e8eea6cb62998800f80ced952f0cf66 100644 (file)
@@ -487,9 +487,9 @@ static void redis_dict_lookup_timeout(struct redis_dict *dict)
 static const char *
 redis_dict_get_full_key(struct redis_dict *dict, const char *key)
 {
-       if (strncmp(key, DICT_PATH_SHARED, strlen(DICT_PATH_SHARED)) == 0)
+       if (str_begins(key, DICT_PATH_SHARED))
                key += strlen(DICT_PATH_SHARED);
-       else if (strncmp(key, DICT_PATH_PRIVATE, strlen(DICT_PATH_PRIVATE)) == 0) {
+       else if (str_begins(key, DICT_PATH_PRIVATE)) {
                key = t_strdup_printf("%s%c%s", dict->username,
                                      DICT_USERNAME_SEPARATOR,
                                      key + strlen(DICT_PATH_PRIVATE));
index ed2ee1dcd5c1bb97583410f770142f8f3cadd6b4..40f55aaa554a7eb536d5458f576f8013f60478ed 100644 (file)
@@ -117,8 +117,8 @@ bool dict_switch_ioloop(struct dict *dict)
 
 static bool dict_key_prefix_is_valid(const char *key)
 {
-       return strncmp(key, DICT_PATH_SHARED, strlen(DICT_PATH_SHARED)) == 0 ||
-               strncmp(key, DICT_PATH_PRIVATE, strlen(DICT_PATH_PRIVATE)) == 0;
+       return str_begins(key, DICT_PATH_SHARED) ||
+               str_begins(key, DICT_PATH_PRIVATE);
 }
 
 int dict_lookup(struct dict *dict, pool_t pool, const char *key,
index 8a667a20a19ad7f04cffb3acd58319d8855b3631..73b69dadd08764cf4ccccd540322459d4a99bc53 100644 (file)
@@ -277,8 +277,7 @@ fs_metawrap_append_metadata(struct metawrap_fs_file *file, string_t *str)
        const struct fs_metadata *metadata;
 
        array_foreach(&file->file.metadata, metadata) {
-               if (strncmp(metadata->key, FS_METADATA_INTERNAL_PREFIX,
-                           strlen(FS_METADATA_INTERNAL_PREFIX)) == 0)
+               if (str_begins(metadata->key, FS_METADATA_INTERNAL_PREFIX))
                        continue;
 
                str_append_tabescaped(str, metadata->key);
index 34488f9afa53efce3746325d980328d3e25e7ed7..81b4a875aeca5789244e76c147a71616273ad899 100644 (file)
@@ -222,7 +222,7 @@ static int fs_posix_rmdir_parents(struct posix_fs *fs, const char *path)
        while ((p = strrchr(path, '/')) != NULL) {
                path = t_strdup_until(path, p);
                if ((fs->root_path != NULL && strcmp(path, fs->root_path) == 0) ||
-                   (fs->path_prefix != NULL && strncmp(path, fs->path_prefix, strlen(path)) == 0))
+                   (fs->path_prefix != NULL && str_begins(fs->path_prefix, path)))
                        break;
                if (rmdir(path) == 0) {
                        /* success, continue to parent */
index e74045cc130a754f65b8d5dd73fb24b6478fd97a..34025aa4913c4f80937ce74a32abd4b69c9c10aa 100644 (file)
@@ -84,13 +84,11 @@ imap_metadata_entry2key(struct imap_metadata_transaction *imtrans,
        /* names are case-insensitive so we'll always lowercase them */
        entry = t_str_lcase(entry);
 
-       if (strncmp(entry, IMAP_METADATA_PRIVATE_PREFIX,
-                   strlen(IMAP_METADATA_PRIVATE_PREFIX)) == 0) {
+       if (str_begins(entry, IMAP_METADATA_PRIVATE_PREFIX)) {
                *key_r = entry + strlen(IMAP_METADATA_PRIVATE_PREFIX);
                *type_r = MAIL_ATTRIBUTE_TYPE_PRIVATE;
        } else {
-               i_assert(strncmp(entry, IMAP_METADATA_SHARED_PREFIX,
-                                strlen(IMAP_METADATA_SHARED_PREFIX)) == 0);
+               i_assert(str_begins(entry, IMAP_METADATA_SHARED_PREFIX));
                *key_r = entry + strlen(IMAP_METADATA_SHARED_PREFIX);
                *type_r = MAIL_ATTRIBUTE_TYPE_SHARED;
        }
@@ -100,8 +98,7 @@ imap_metadata_entry2key(struct imap_metadata_transaction *imtrans,
                i_assert((*key_r)[0] == '/');
                *key_r += 1;
        }
-       if (strncmp(*key_r, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT,
-                   strlen(MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT)) == 0) {
+       if (str_begins(*key_r, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT)) {
                /* Dovecot's internal attribute (mailbox or server).
                   don't allow accessing this. */
                return FALSE;
index 56e69e100b25153021bccb36c5951d667257e0e1..696c63e5f010686bc20de8617114d6f9fc161545 100644 (file)
@@ -526,8 +526,7 @@ static int mdbox_purge_get_primary_files(struct mdbox_purge_context *ctx)
        dir_len = str_len(path);
 
        for (errno = 0; (d = readdir(dir)) != NULL; errno = 0) {
-               if (strncmp(d->d_name, MDBOX_MAIL_FILE_PREFIX,
-                           strlen(MDBOX_MAIL_FILE_PREFIX)) != 0)
+               if (!str_begins(d->d_name, MDBOX_MAIL_FILE_PREFIX))
                        continue;
                if (str_to_uint32(d->d_name + strlen(MDBOX_MAIL_FILE_PREFIX),
                                  &file_id) < 0)
index 22944901fee8bed66f7d12a13bd09458a9972be2..aa4832f15f45f36654eafe9b63b386466f461fbf 100644 (file)
@@ -73,8 +73,7 @@ sdbox_sync_add_file(struct index_rebuild_context *ctx,
        uint32_t uid;
        int ret;
 
-       if (strncmp(fname, SDBOX_MAIL_FILE_PREFIX,
-                   strlen(SDBOX_MAIL_FILE_PREFIX)) != 0)
+       if (!str_begins(fname, SDBOX_MAIL_FILE_PREFIX))
                return 0;
        fname += strlen(SDBOX_MAIL_FILE_PREFIX);
 
index 847a4ab7a787e9ad5f9920ad9555e9510ba9783d..d30b47749d0d6de7df93211fef3459fed64dd5da 100644 (file)
@@ -282,7 +282,7 @@ seach_arg_mime_filename_match(struct search_mimepart_context *mpctx,
        case SEARCH_MIME_FILENAME_CONTAINS:
                return (strstr(value, key) != NULL ? 1 : 0);
        case SEARCH_MIME_FILENAME_BEGINS:
-               return (strncmp(value, key, strlen(key)) == 0 ? 1 : 0);
+               return (str_begins(value, key) ? 1 : 0);
        case SEARCH_MIME_FILENAME_ENDS:
                vlen = strlen(value);
                alen = strlen(key);
index 71103cb40e6797da10ea9364804230168792fc05..9889edfafa4b8a1a9239e70bc66d34e37697fdbd 100644 (file)
@@ -715,8 +715,7 @@ mailbox_delete_all_attributes(struct mailbox_transaction_context *t,
        iter = mailbox_attribute_iter_init(t->box, type, "");
        while ((key = mailbox_attribute_iter_next(iter)) != NULL) {
                if (inbox &&
-                   strncmp(key, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER,
-                           strlen(MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER)) == 0)
+                   str_begins(key, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER))
                        continue;
 
                if (mailbox_attribute_unset(t, type, key) < 0) {
@@ -1079,7 +1078,7 @@ int index_storage_set_subscribed(struct mailbox *box, bool set)
                   subscription name */
                subs_name = t_strconcat(list->ns->prefix, box->name, NULL);
                /* drop the common prefix (typically there isn't one) */
-               i_assert(strncmp(ns->prefix, subs_name, strlen(ns->prefix)) == 0);
+               i_assert(str_begins(subs_name, ns->prefix));
                subs_name += strlen(ns->prefix);
 
                list = ns->list;
index 7f60907fa2d7f959bfbcdf6692fa07ad9cad1ccb..8cd805841635e5ddc0d51d25c673ff333f03c2a7 100644 (file)
@@ -437,7 +437,7 @@ static int mbox_mailbox_open_existing(struct mbox_mailbox *mbox)
                   /var/mail and we want to allow privileged dotlocking */
                rootdir = mailbox_list_get_root_forced(box->list,
                                                       MAILBOX_LIST_PATH_TYPE_DIR);
-               if (strncmp(box_path, rootdir, strlen(rootdir)) != 0)
+               if (!str_begins(box_path, rootdir))
                        mbox->mbox_privileged_locking = TRUE;
        }
        if ((box->flags & MAILBOX_FLAG_KEEP_LOCKED) != 0) {
index 05e973559bc3c7a3220ae013037a8204079eca73..6cfbd8b4ed59ebefafaa81dba8b9145515978e9f 100644 (file)
@@ -287,7 +287,7 @@ void mailbox_list_delete_until_root(struct mailbox_list *list, const char *path,
        }
 
        root_dir = mailbox_list_get_root_forced(list, type);
-       if (strncmp(path, root_dir, strlen(root_dir)) != 0) {
+       if (!str_begins(path, root_dir)) {
                /* mbox workaround: name=child/box, root_dir=mail/.imap/,
                   path=mail/child/.imap/box. we'll want to try to delete
                   the .imap/ part, but no further. */
index 0d342615215a3eb8ef8165c2f44285c9318c87ba..c1aabb9ce1931a784a548e4c670389e30673ad22 100644 (file)
@@ -335,7 +335,7 @@ static int fs_list_delete_dir(struct mailbox_list *list, const char *name)
                if (mailbox_list_get_path(list, child_name,
                                          MAILBOX_LIST_PATH_TYPE_INDEX,
                                          &child_path) > 0 &&
-                   strncmp(path, child_path, strlen(path)) == 0) {
+                   str_begins(child_path, path)) {
                        /* drop the "/child" part out. */
                        p = strrchr(child_path, '/');
                        if (rmdir(t_strdup_until(child_path, p)) == 0) {
index 38eab63b60bfe64c7e2c7b190696a0a8010f8d4c..ea00ede77e88df1aa2a41abd222967f1eb355f08 100644 (file)
@@ -218,7 +218,7 @@ static bool validate_chroot(const struct mail_user_settings *user_set,
        chroot_dirs = t_strsplit(user_set->valid_chroot_dirs, ":");
        while (*chroot_dirs != NULL) {
                if (**chroot_dirs != '\0' &&
-                   strncmp(dir, *chroot_dirs, strlen(*chroot_dirs)) == 0)
+                   str_begins(dir, *chroot_dirs))
                        return TRUE;
                chroot_dirs++;
        }
index e0250569e899fb962105a77104994e29dbe99ff0..43467b981638ba3183de2dd4d0df8bd6f0780854 100644 (file)
@@ -110,7 +110,7 @@ mailbox_internal_attribute_get(enum mail_attribute_type type,
                return NULL;
        }
        iattr = array_idx(&mailbox_internal_attributes, insert_idx-1);
-       if (strncmp(iattr->key, key, strlen(iattr->key)) != 0) {
+       if (!str_begins(key, iattr->key)) {
                /* iattr isn't a prefix of key */
                return NULL;
        } else if ((iattr->flags & MAIL_ATTRIBUTE_INTERNAL_FLAG_CHILDREN) != 0) {
@@ -187,8 +187,7 @@ mailbox_attribute_set_common(struct mailbox_transaction_context *t,
 
        /* allow internal server attribute only for inbox */
        if (iattr != NULL && !t->box->inbox_any &&
-           strncmp(key, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER,
-           strlen(MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER)) == 0)
+           str_begins(key, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER))
                iattr = NULL;
 
        /* handle internal attribute */
@@ -280,8 +279,7 @@ mailbox_attribute_get_common(struct mailbox *box,
 
        /* allow internal server attributes only for the inbox */
        if (iattr != NULL && !box->inbox_user &&
-           strncmp(key, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER,
-           strlen(MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER)) == 0)
+           str_begins(key, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER))
                iattr = NULL;
 
        /* internal attribute */
index 2e042e0b6376c78da3dae51f75055734a0a6f2b5..8c7bc96c06f87f65986b34183429f04f5131a9ef 100644 (file)
@@ -173,10 +173,8 @@ struct mailbox_transaction_context;
 /* User can get/set all non-pvt/ attributes and also pvt/server/
    (but not pvt/server/pvt/) attributes. */
 #define MAILBOX_ATTRIBUTE_KEY_IS_USER_ACCESSIBLE(key) \
-       (strncmp(key, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT, \
-                strlen(MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT)) != 0 || \
-        (strncmp(key, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER, \
-                strlen(MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER)) == 0 && \
+       (!str_begins(key, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT) || \
+        (str_begins(key, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER) && \
          strncmp(key, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT, \
                 strlen(MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT)) != 0))
 
index e395f9077828add17b76289ad19797bd5b27a77b..39cb8852f19f730bef40fb160db1c50d2accdb9b 100644 (file)
@@ -1240,7 +1240,7 @@ int mailbox_list_try_mkdir_root(struct mailbox_list *list, const char *path,
 
        if (!mailbox_list_get_root_path(list, type, &root_dir))
                i_unreached();
-       i_assert(strncmp(root_dir, path, strlen(root_dir)) == 0);
+       i_assert(str_begins(path, root_dir));
        if (strcmp(root_dir, path) != 0 && stat(root_dir, &st) == 0) {
                /* creating a subdirectory under an already existing root dir.
                   use the root's permissions */
index 2b938d2d437d2135aabfc9321269af08f394bfdb..6d144ce7f31ddc3de09b8720a66cb9aaa2d4370b 100644 (file)
@@ -141,7 +141,7 @@ pool_t pool_alloconly_create(const char *name ATTR_UNUSED, size_t size)
        new_apool = p_new(&apool.pool, struct alloconly_pool, 1);
        *new_apool = apool;
 #ifdef DEBUG
-       if (strncmp(name, MEMPOOL_GROWING, strlen(MEMPOOL_GROWING)) == 0 ||
+       if (str_begins(name, MEMPOOL_GROWING) ||
            getenv("DEBUG_SILENT") != NULL) {
                name += strlen(MEMPOOL_GROWING);
                new_apool->disable_warning = TRUE;
index c8f2b2c68ea9a9e95e46ef5166259c463f579706..bd3309e520359428f377afe0a2ddefa2035acc4c 100644 (file)
@@ -400,7 +400,7 @@ test_str_match(void)
                /* This is just 2 ways of wording the same test, but that also
                   sanity tests the match values above. */
                test_assert_idx(str_begins(tests[i].s1, tests[i].s2) ==
-                               (strncmp(tests[i].s1, tests[i].s2, strlen(tests[i].s2)) == 0), i);
+                               (str_begins(tests[i].s1, tests[i].s2)), i);
                test_assert_idx(str_begins(tests[i].s1, tests[i].s2) ==
                                (strlen(tests[i].s2) == tests[i].match), i);
        }
index 4c04c7efacf4da54413eb6faa9f2e291f615aa27..19f06e1c33bbaa394bba6293ca6f9d221f7fd88a 100644 (file)
@@ -81,7 +81,7 @@ void process_exec(const char *cmd)
        /* prefix with dovecot/ */
        argv[0] = t_strdup_printf("%s/%s", services->set->instance_name,
                                  argv[0]);
-       if (strncmp(argv[0], PACKAGE, strlen(PACKAGE)) != 0)
+       if (!str_begins(argv[0], PACKAGE))
                argv[0] = t_strconcat(PACKAGE"-", argv[0], NULL);
        execv_const(executable, argv);
 }
index bee359606a9bc03260840da8a4958fa25154f0d8..1e62adf7e5e71f01250aa53ee8115ebad6aa9f27 100644 (file)
@@ -518,18 +518,15 @@ bool acl_rights_has_nonowner_lookup_changes(const struct acl_rights *rights)
 
 int acl_identifier_parse(const char *line, struct acl_rights *rights)
 {
-       if (strncmp(line, ACL_ID_NAME_USER_PREFIX,
-                   strlen(ACL_ID_NAME_USER_PREFIX)) == 0) {
+       if (str_begins(line, ACL_ID_NAME_USER_PREFIX)) {
                rights->id_type = ACL_ID_USER;
                rights->identifier = line + 5;
        } else if (strcmp(line, ACL_ID_NAME_OWNER) == 0) {
                rights->id_type = ACL_ID_OWNER;
-       } else if (strncmp(line, ACL_ID_NAME_GROUP_PREFIX,
-                          strlen(ACL_ID_NAME_GROUP_PREFIX)) == 0) {
+       } else if (str_begins(line, ACL_ID_NAME_GROUP_PREFIX)) {
                rights->id_type = ACL_ID_GROUP;
                rights->identifier = line + 6;
-       } else if (strncmp(line, ACL_ID_NAME_GROUP_OVERRIDE_PREFIX,
-                          strlen(ACL_ID_NAME_GROUP_OVERRIDE_PREFIX)) == 0) {
+       } else if (str_begins(line, ACL_ID_NAME_GROUP_OVERRIDE_PREFIX)) {
                rights->id_type = ACL_ID_GROUP_OVERRIDE;
                rights->identifier = line + 15;
        } else if (strcmp(line, ACL_ID_NAME_AUTHENTICATED) == 0) {
index 8d2458e72a0aa31184cdf9389d295c861731d1f7..2499a30f9c1131f631d5ac7a89680105d782e25b 100644 (file)
@@ -142,8 +142,7 @@ int acl_attribute_set(struct mailbox_transaction_context *t,
 
        if (acl_have_attribute_rights(t->box) < 0)
                return -1;
-       if (strncmp(key, MAILBOX_ATTRIBUTE_PREFIX_ACL,
-                   strlen(MAILBOX_ATTRIBUTE_PREFIX_ACL)) == 0)
+       if (str_begins(key, MAILBOX_ATTRIBUTE_PREFIX_ACL))
                return acl_attribute_update_acl(t, key, value);
        return abox->module_ctx.super.attribute_set(t, type, key, value);
 }
@@ -156,8 +155,7 @@ int acl_attribute_get(struct mailbox *box,
 
        if (acl_have_attribute_rights(box) < 0)
                return -1;
-       if (strncmp(key, MAILBOX_ATTRIBUTE_PREFIX_ACL,
-                   strlen(MAILBOX_ATTRIBUTE_PREFIX_ACL)) == 0)
+       if (str_begins(key, MAILBOX_ATTRIBUTE_PREFIX_ACL))
                return acl_attribute_get_acl(box, key, value_r);
        return abox->module_ctx.super.attribute_get(box, type, key, value_r);
 }
@@ -178,8 +176,7 @@ acl_attribute_iter_init(struct mailbox *box, enum mail_attribute_type type,
                        attribute_iter_init(box, type, prefix);
                if (box->storage->user->dsyncing &&
                    type == MAIL_ATTRIBUTE_TYPE_SHARED &&
-                   strncmp(prefix, MAILBOX_ATTRIBUTE_PREFIX_ACL,
-                           strlen(prefix)) == 0) {
+                   str_begins(MAILBOX_ATTRIBUTE_PREFIX_ACL, prefix)) {
                        aiter->acl_iter = acl_object_list_init(abox->aclobj);
                        aiter->acl_name = str_new(default_pool, 128);
                        str_append(aiter->acl_name, MAILBOX_ATTRIBUTE_PREFIX_ACL);
index b0a8e0d99e4f1a84a3eb5704b2835227a505e081..c4c3c0070a28e1cb3c2d16e10bb35f7ccd693e3d 100644 (file)
@@ -443,8 +443,7 @@ imap_acl_identifier_parse(struct client_command_context *cmd,
 {
        struct mail_user *user = cmd->client->user;
 
-       if (strncmp(id, IMAP_ACL_GLOBAL_PREFIX,
-                   strlen(IMAP_ACL_GLOBAL_PREFIX)) == 0) {
+       if (str_begins(id, IMAP_ACL_GLOBAL_PREFIX)) {
                *error_r = t_strdup_printf("Global ACLs can't be modified: %s",
                                           id);
                return -1;
@@ -464,12 +463,10 @@ imap_acl_identifier_parse(struct client_command_context *cmd,
                rights->id_type = ACL_ID_AUTHENTICATED;
        } else if (strcmp(id, IMAP_ACL_OWNER) == 0)
                rights->id_type = ACL_ID_OWNER;
-       else if (strncmp(id, IMAP_ACL_GROUP_PREFIX,
-                        strlen(IMAP_ACL_GROUP_PREFIX)) == 0) {
+       else if (str_begins(id, IMAP_ACL_GROUP_PREFIX)) {
                rights->id_type = ACL_ID_GROUP;
                rights->identifier = id + strlen(IMAP_ACL_GROUP_PREFIX);
-       } else if (strncmp(id, IMAP_ACL_GROUP_OVERRIDE_PREFIX,
-                          strlen(IMAP_ACL_GROUP_OVERRIDE_PREFIX)) == 0) {
+       } else if (str_begins(id, IMAP_ACL_GROUP_OVERRIDE_PREFIX)) {
                rights->id_type = ACL_ID_GROUP_OVERRIDE;
                rights->identifier = id +
                        strlen(IMAP_ACL_GROUP_OVERRIDE_PREFIX);