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>
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');
}
}
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;
return FALSE;
len = strlen(argv[1]);
- if (strncmp(cmdname, argv[1], len) != 0)
+ if (!str_begins(cmdname, argv[1]))
return FALSE;
argc--; argv++;
*argv += 1;
len = strlen((*argv)[0]);
- if (strncmp(cmdname, (*argv)[0], len) != 0)
+ if (!str_begins(cmdname, (*argv)[0]))
return FALSE;
if (cmdname[len] == ' ') {
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;
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;
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.");
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;
/* 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 */
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;
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;
}
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;
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'))
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.");
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;
}
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 */
}
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;
}
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;
}
}
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) {
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,