From: Timo Sirainen Date: Wed, 13 Jan 2021 16:50:38 +0000 (+0200) Subject: lib-storage: Rename mailbox_list_settings.broken_char to vname_escape_char X-Git-Tag: 2.3.14.rc1~55 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7b794d3070d2d029c17128221965b84ee0096180;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Rename mailbox_list_settings.broken_char to vname_escape_char This clarifies that it's only used in vnames. --- diff --git a/src/doveadm/doveadm-dsync.c b/src/doveadm/doveadm-dsync.c index f0494bd6f3..dcdfe4d677 100644 --- a/src/doveadm/doveadm-dsync.c +++ b/src/doveadm/doveadm-dsync.c @@ -41,12 +41,13 @@ #define DSYNC_COMMON_GETOPT_ARGS "+1a:dDEfg:I:l:m:n:NO:Pr:Rs:t:e:T:Ux:" #define DSYNC_REMOTE_CMD_EXIT_WAIT_SECS 30 -/* The broken_char is mainly set to get a proper error message when trying to - convert a mailbox with a name that can't be used properly translated between - vname/storage_name and would otherwise be mixed up with a normal "mailbox - doesn't exist" error message. This could be any control character, since - none of them are allowed to be created in regular mailbox names. */ -#define DSYNC_LIST_BROKEN_CHAR '\003' +/* The vname_escape_char is mainly set to get a proper error message when + trying to convert a mailbox with a name that can't be used properly + translated between vname/storage_name and would otherwise be mixed up with a + normal "mailbox doesn't exist" error message. This could be any control + character, since none of them are allowed to be created in regular mailbox + names. */ +#define DSYNC_LIST_VNAME_ESCAPE_CHAR '\003' #define DSYNC_DEFAULT_IO_STREAM_TIMEOUT_SECS (60*10) @@ -327,8 +328,8 @@ static void doveadm_user_init_dsync(struct mail_user *user) user->dsyncing = TRUE; for (ns = user->namespaces; ns != NULL; ns = ns->next) { - if (ns->list->set.broken_char == '\0') - ns->list->set.broken_char = DSYNC_LIST_BROKEN_CHAR; + if (ns->list->set.vname_escape_char == '\0') + ns->list->set.vname_escape_char = DSYNC_LIST_VNAME_ESCAPE_CHAR; } } diff --git a/src/lib-storage/index/imapc/imapc-list.c b/src/lib-storage/index/imapc/imapc-list.c index d2409d46b3..c2f3c478ae 100644 --- a/src/lib-storage/index/imapc/imapc-list.c +++ b/src/lib-storage/index/imapc/imapc-list.c @@ -395,7 +395,7 @@ static struct mailbox_list *imapc_list_get_fs(struct imapc_mailbox_list *list) list_set.root_dir = dir; list_set.storage_name_escape_char = IMAPC_LIST_STORAGE_NAME_ESCAPE_CHAR; - list_set.broken_char = IMAPC_LIST_BROKEN_CHAR; + list_set.vname_escape_char = IMAPC_LIST_VNAME_ESCAPE_CHAR; if (mailbox_list_create(list_set.layout, list->list.ns, &list_set, MAILBOX_LIST_FLAG_SECONDARY, diff --git a/src/lib-storage/index/imapc/imapc-storage.h b/src/lib-storage/index/imapc/imapc-storage.h index c5cf8e2769..91f4c4b2b8 100644 --- a/src/lib-storage/index/imapc/imapc-storage.h +++ b/src/lib-storage/index/imapc/imapc-storage.h @@ -7,7 +7,7 @@ #define IMAPC_STORAGE_NAME "imapc" #define IMAPC_LIST_STORAGE_NAME_ESCAPE_CHAR '%' -#define IMAPC_LIST_BROKEN_CHAR '~' +#define IMAPC_LIST_VNAME_ESCAPE_CHAR '~' struct imap_arg; struct imapc_untagged_reply; diff --git a/src/lib-storage/mailbox-list.c b/src/lib-storage/mailbox-list.c index 5cbb27c635..72936bd412 100644 --- a/src/lib-storage/mailbox-list.c +++ b/src/lib-storage/mailbox-list.c @@ -200,7 +200,7 @@ int mailbox_list_create(const char *driver, struct mail_namespace *ns, p_strconcat(list->pool, set->mailbox_dir_name, "/", NULL); } list->set.storage_name_escape_char = set->storage_name_escape_char; - list->set.broken_char = set->broken_char; + list->set.vname_escape_char = set->vname_escape_char; list->set.utf8 = set->utf8; if (list->v.init != NULL) { @@ -365,7 +365,7 @@ mailbox_list_settings_parse_full(struct mail_user *user, const char *data, *error_r = "BROKENCHAR value must be a single character"; return -1; } - set_r->broken_char = value[0]; + set_r->vname_escape_char = value[0]; continue; } else if (strcmp(key, "ITERINDEX") == 0) { set_r->iter_from_index_dir = TRUE; @@ -531,12 +531,12 @@ mailbox_list_unescape_broken_chars(struct mailbox_list *list, char *name) char *src, *dest; unsigned char chr; - if ((src = strchr(name, list->set.broken_char)) == NULL) + if ((src = strchr(name, list->set.vname_escape_char)) == NULL) return 0; dest = src; while (*src != '\0') { - if (*src == list->set.broken_char) { + if (*src == list->set.vname_escape_char) { if (src[1] >= '0' && src[1] <= '9') chr = (src[1]-'0') * 0x10; else if (src[1] >= 'a' && src[1] <= 'f') @@ -631,15 +631,15 @@ const char *mailbox_list_default_get_storage_name(struct mailbox_list *list, } ret = mailbox_list_convert_sep(storage_name, ns_sep, list_sep); - } else if (list->set.broken_char == '\0' || - strchr(storage_name, list->set.broken_char) == NULL) { + } else if (list->set.vname_escape_char == '\0' || + strchr(storage_name, list->set.vname_escape_char) == NULL) { /* no need to convert broken chars */ return storage_name; } else { ret = p_strdup(unsafe_data_stack_pool, storage_name); } - if (list->set.broken_char != '\0') { + if (list->set.vname_escape_char != '\0') { if (mailbox_list_unescape_broken_chars(list, ret) < 0) { ret = mailbox_list_convert_sep(storage_name, ns_sep, list_sep); @@ -705,13 +705,13 @@ mailbox_list_escape_broken_chars(struct mailbox_list *list, string_t *str) unsigned int i; char buf[3]; - if (strchr(str_c(str), list->set.broken_char) == NULL) + if (strchr(str_c(str), list->set.vname_escape_char) == NULL) return; for (i = 0; i < str_len(str); i++) { - if (str_c(str)[i] == list->set.broken_char) { + if (str_c(str)[i] == list->set.vname_escape_char) { i_snprintf(buf, sizeof(buf), "%02x", - list->set.broken_char); + list->set.vname_escape_char); str_insert(str, i+1, buf); i += 2; } @@ -725,7 +725,7 @@ mailbox_list_escape_broken_name(struct mailbox_list *list, str_truncate(str, 0); for (; *vname != '\0'; vname++) { if (*vname == '&' || (unsigned char)*vname >= 0x80) { - str_printfa(str, "%c%02x", list->set.broken_char, + str_printfa(str, "%c%02x", list->set.vname_escape_char, (unsigned char)*vname); } else { str_append_c(str, *vname); @@ -768,10 +768,10 @@ const char *mailbox_list_default_get_vname(struct mailbox_list *list, /* mUTF-7 -> UTF-8 conversion */ string_t *str = t_str_new(strlen(vname)); if (imap_utf7_to_utf8(vname, str) == 0) { - if (list->set.broken_char != '\0') + if (list->set.vname_escape_char != '\0') mailbox_list_escape_broken_chars(list, str); vname = str_c(str); - } else if (list->set.broken_char != '\0') { + } else if (list->set.vname_escape_char != '\0') { mailbox_list_escape_broken_name(list, vname, str); vname = str_c(str); } diff --git a/src/lib-storage/mailbox-list.h b/src/lib-storage/mailbox-list.h index 7c6db5d536..8c5f9f9068 100644 --- a/src/lib-storage/mailbox-list.h +++ b/src/lib-storage/mailbox-list.h @@ -145,10 +145,10 @@ struct mailbox_list_settings { /* Encode "bad" characters in mailbox names as */ char storage_name_escape_char; /* If mailbox name can't be changed reversibly to UTF-8 and back, - encode the problematic parts using in the - user-visible UTF-8 name. The broken_char itself also has to be + encode the problematic parts using in the + user-visible UTF-8 name. The vname_escape_char itself also has to be encoded the same way. */ - char broken_char; + char vname_escape_char; /* Use UTF-8 mailbox names on filesystem instead of mUTF-7 */ bool utf8; /* Don't check/create the alt-dir symlink. */