]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
global - migrate more complicated strncmp expressions to str_begins
authorPhil Carmody <phil@dovecot.fi>
Thu, 11 Jan 2018 13:35:42 +0000 (15:35 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 8 Jun 2018 08:40:51 +0000 (11:40 +0300)
Simplify a bunch of verbose var=strlen(); strncmp(,,var) calls.
Fortunately, all of these examples use the length variable, so no
"unused value" warnings occur.

--- 8< --- strncmp2.cocci ---
@@
expression e1, e2;
identifier i2;
@@

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

@@
expression e1, e2;
identifier i2;
@@

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

@@
expression e1, e2;
identifier i1;
@@

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

@@
expression e1, e2;
identifier i1;
@@

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

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

Signed-off-by: Phil Carmody <phil@dovecot.fi>
16 files changed:
src/auth/auth-cache.c
src/config/old-set-parser.c
src/doveadm/doveadm-cmd.c
src/doveadm/doveadm-mail.c
src/doveadm/dsync/dsync-brain-mailbox-tree.c
src/imap/cmd-notify.c
src/imap/cmd-rename.c
src/imap/imap-notify.c
src/lib-storage/index/imapc/imapc-list.c
src/lib-storage/index/imapc/imapc-storage.c
src/lib-storage/index/index-search-mime.c
src/lib-storage/index/shared/shared-list.c
src/lib-storage/list/mailbox-list-fs-iter.c
src/lib-storage/list/mailbox-list-index-backend.c
src/lib-storage/list/mailbox-list-iter.c
src/lib-storage/mailbox-list.c

index 1d949c515c6a96d8998ce1ed46dc50c68ba3051c..70ca4a87935c1d49195b53db6f220c2ad474693a 100644 (file)
@@ -295,7 +295,7 @@ static bool auth_cache_node_is_user(struct auth_cache_node *node,
        data++;
 
        username_len = strlen(username);
-       return strncmp(data, username, username_len) == 0 &&
+       return str_begins(data, username) &&
                (data[username_len] == '\t' || data[username_len] == '\0');
 }
 
index 93d78c8d3bfc2f3e75a552f89d5d304352d5cf6e..2ad16db85ade7fd6a3cab4542d1b88e1e6f4f867 100644 (file)
@@ -673,7 +673,7 @@ static void socket_apply(struct config_parser_context *ctx)
        }
        path = set->path;
        len = strlen(ctx->old->base_dir);
-       if (strncmp(path, ctx->old->base_dir, len) == 0 &&
+       if (str_begins(path, ctx->old->base_dir) &&
            path[len] == '/')
                path += len + 1;
 
index 11d8b47115a59497ab701a5cd8d0d09b633c42ff..5bc4abbad2f4fb91ec1d53f17791722a7941e4ae 100644 (file)
@@ -152,7 +152,7 @@ doveadm_cmd_find_multi_word(const char *cmdname, int *_argc,
                return FALSE;
 
        len = strlen(argv[1]);
-       if (strncmp(cmdname, argv[1], len) != 0)
+       if (!str_begins(cmdname, argv[1]))
                return FALSE;
 
        argc--; argv++;
index c9828b1741e3ed227a53eaa093390cac2bd4cecd..14b6e11a6adfb95f438dfb3a362651d01f38db3b 100644 (file)
@@ -732,7 +732,7 @@ doveadm_mail_cmd_try_find_multi_word(const struct doveadm_mail_cmd *cmd,
        *argv += 1;
 
        len = strlen((*argv)[0]);
-       if (strncmp(cmdname, (*argv)[0], len) != 0)
+       if (!str_begins(cmdname, (*argv)[0]))
                return FALSE;
 
        if (cmdname[len] == ' ') {
index bb7ae4170c02519cc09d9e97ff7ebce009d9e5cf..14fb2c1791939826b9f3b56c0198d25eeadf75ce 100644 (file)
@@ -135,7 +135,7 @@ dsync_namespace_match_parts(struct mail_namespace *ns,
                part = *name_parts;
                part_len = strlen(part);
 
-               if (strncmp(prefix, part, part_len) != 0)
+               if (!str_begins(prefix, part))
                        return FALSE;
                if (prefix[part_len] != ns_sep)
                        return FALSE;
index bc74122c969b3ebb8b2cd2c1ea94c0f271d5782c..fa4b46ad793ea9dcba0fc19efc7bd513af47e155 100644 (file)
@@ -179,7 +179,7 @@ cmd_notify_add_mailbox(struct imap_notify_context *ctx,
                else {
                        /* see if one is a subtree of the other */
                        cur_len = strlen(names[i]);
-                       if (strncmp(names[i], name, cur_len) == 0 &&
+                       if (str_begins(name, names[i]) &&
                            names[i][cur_len] == ns_sep) {
                                /* already matched in this subtree */
                                return;
index 7db35b6f701adcffd032be835a825b2632d21560..4faa8179c6729e54edc6cb084c8f21f8cc9e275a 100644 (file)
@@ -27,7 +27,7 @@ bool cmd_rename(struct client_command_context *cmd)
                   there's really no point in doing it anyway. */
                old_ns = mailbox_list_get_namespace(old_ns->list);
                oldlen = strlen(oldname);
-               if (strncmp(oldname, newname, oldlen) == 0 &&
+               if (str_begins(newname, oldname) &&
                    newname[oldlen] == mail_namespace_get_sep(old_ns)) {
                        client_send_tagline(cmd,
                                "NO Can't rename mailbox under its own child.");
index cb190b3d2a430489d7f4d30e102bbbe7f6989e01..cf8199e19ccb85ff93424d3b9b4b3dbfbf68140f 100644 (file)
@@ -210,7 +210,7 @@ bool imap_notify_match_mailbox(struct imap_notify_namespace *notify_ns,
                                   implementing "personal" */
                                return TRUE;
                        }
-                       if (strncmp(*namep, vname, name_len) == 0 &&
+                       if (str_begins(vname, *namep) &&
                            (vname[name_len] == '\0' ||
                             vname[name_len] == ns_sep))
                                return TRUE;
index 05fc8747a72933bc426bc461340b0a1c0c29582e..5c555a0ca91d4276a1f80c356d7fbb83184ac808 100644 (file)
@@ -365,7 +365,7 @@ imapc_list_get_vname(struct mailbox_list *_list, const char *storage_name)
                /* ACL plugin does these lookups */
        } else if (*prefix != '\0' && strcasecmp(storage_name, "INBOX") != 0) {
                prefix_len = strlen(prefix);
-               i_assert(strncmp(prefix, storage_name, prefix_len) == 0);
+               i_assert(str_begins(storage_name, prefix));
                storage_name += prefix_len;
                if (storage_name[0] == '\0') {
                        /* we're looking up the prefix itself */
index bb49fc9bf9802e5212c9af00dab438ae88084929..42687620636a5502893011df3a24f84031815671 100644 (file)
@@ -1072,7 +1072,7 @@ imapc_namespace_find_mailbox(struct imapc_storage *storage, const char *name)
 
        array_foreach(&storage->remote_namespaces, ns) {
                len = strlen(ns->prefix);
-               if (strncmp(ns->prefix, name, len) == 0) {
+               if (str_begins(name, ns->prefix)) {
                        if (best_len > len) {
                                best_ns = ns;
                                best_len = len;
index d30b47749d0d6de7df93211fef3459fed64dd5da..40b2ca0de2addec26a9c6eea7e7a987ec2923652 100644 (file)
@@ -286,7 +286,7 @@ seach_arg_mime_filename_match(struct search_mimepart_context *mpctx,
        case SEARCH_MIME_FILENAME_ENDS:
                vlen = strlen(value);
                alen = strlen(key);
-               return (strncmp(value + (vlen - alen), key, alen) == 0 ? 1 : 0);
+               return (str_begins(value + (vlen - alen), key) ? 1 : 0);
        default:
                break;
        }
index bb8ca2f3bdea2b17bac53046ac8c6568daf16c62..c69c4dbb5f57753ffd737d2dc753b424a9e4bfab 100644 (file)
@@ -92,7 +92,7 @@ shared_list_join_refpattern(struct mailbox_list *list,
        const char *ns_ref, *prefix = list->ns->prefix;
        size_t prefix_len = strlen(prefix);
 
-       if (*ref != '\0' && strncmp(ref, prefix, prefix_len) == 0)
+       if (*ref != '\0' && str_begins(ref, prefix))
                ns_ref = ref + prefix_len;
        else
                ns_ref = NULL;
index 63afbc83f2e10a637b2e83bb1da9d2eb546da457..d6040b83bd7609703ef885f64ca8de13685e023d 100644 (file)
@@ -482,7 +482,7 @@ static void fs_list_get_roots(struct fs_list_iterate_context *ctx)
                parentp = array_idx(&ctx->roots, i-1);
                childp = array_idx(&ctx->roots, i);
                parentlen = strlen(*parentp);
-               if (strncmp(*parentp, *childp, parentlen) == 0 &&
+               if (str_begins(*childp, *parentp) &&
                    (parentlen == 0 ||
                     (*childp)[parentlen] == ctx->sep ||
                     (*childp)[parentlen] == '\0'))
index be6a199c8a47d32d14f5b62c9420917d286fa3aa..ec06c497ba960b65c42d42c195c0392512166def 100644 (file)
@@ -756,7 +756,7 @@ index_list_rename_mailbox(struct mailbox_list *_oldlist, const char *oldname,
                return -1;
        }
 
-       if (strncmp(oldname, newname, oldname_len) == 0 &&
+       if (str_begins(newname, oldname) &&
           newname[oldname_len] == mailbox_list_get_hierarchy_sep(_newlist)) {
                mailbox_list_set_error(_oldlist, MAIL_ERROR_NOTPOSSIBLE,
                        "Can't rename mailbox under itself.");
index 3649964e132fe801f1798f746b46abaa49256d38..2743dd77338b00181618b62d2f90c64da48a625d 100644 (file)
@@ -904,7 +904,7 @@ mailbox_list_iter_autocreate_filter(struct mailbox_list_iterate_context *ctx,
 
                array_foreach_modifiable(&actx->boxes, autobox) {
                        name_len = strlen(autobox->name);
-                       if (strncmp(info->vname, autobox->name, name_len) != 0 ||
+                       if (!str_begins(info->vname, autobox->name) ||
                            info->vname[name_len] != sep)
                                continue;
 
index 39cb8852f19f730bef40fb160db1c50d2accdb9b..582ebbfc5b186ee43ade15c7b234842d13824c27 100644 (file)
@@ -466,7 +466,7 @@ static bool need_escape_dirstart(const char *vname, const char *maildir_name)
        }
        if (*maildir_name != '\0') {
                len = strlen(maildir_name);
-               if (strncmp(maildir_name, vname, len) == 0 &&
+               if (str_begins(vname, maildir_name) &&
                    (vname[len] == '\0' || vname[len] == '/'))
                        return TRUE; /* e.g. dbox-Mails */
        }
@@ -483,7 +483,7 @@ mailbox_list_escape_name_params(const char *vname, const char *ns_prefix,
        bool dirstart = TRUE;
 
        /* no escaping of namespace prefix */
-       if (strncmp(ns_prefix, vname, ns_prefix_len) == 0) {
+       if (str_begins(vname, ns_prefix)) {
                str_append_n(escaped_name, vname, ns_prefix_len);
                vname += ns_prefix_len;
        }
@@ -658,7 +658,7 @@ mailbox_list_unescape_name_params(const char *src, const char *ns_prefix,
        string_t *dest = t_str_new(strlen(src));
        unsigned int num;
 
-       if (strncmp(src, ns_prefix, ns_prefix_len) == 0) {
+       if (str_begins(src, ns_prefix)) {
                str_append_n(dest, src, ns_prefix_len);
                src += ns_prefix_len;
        }
@@ -1610,7 +1610,7 @@ int mailbox_list_mailbox(struct mailbox_list *list, const char *name,
        }
 
        len = strlen(rootdir);
-       if (strncmp(path, rootdir, len) == 0 && path[len] == '/') {
+       if (str_begins(path, rootdir) && path[len] == '/') {
                /* looking up a regular mailbox under mail root dir */
        } else if ((list->ns->flags & NAMESPACE_FLAG_INBOX_USER) != 0 &&
                   strcasecmp(name, "INBOX") == 0) {
@@ -1884,7 +1884,7 @@ bool mailbox_list_try_get_absolute_path(struct mailbox_list *list,
           same directory as one of our regular mailboxes. */
        root_dir = mailbox_list_get_root_forced(list, MAILBOX_LIST_PATH_TYPE_MAILBOX);
        len = strlen(root_dir);
-       if (strncmp(root_dir, *name, len) == 0 && (*name)[len] == '/') {
+       if (str_begins(*name, root_dir) && (*name)[len] == '/') {
                mailbox_name = *name + len + 1;
                if (mailbox_list_get_path(list, mailbox_name,
                                          MAILBOX_LIST_PATH_TYPE_MAILBOX,