From: Timo Sirainen Date: Fri, 26 Mar 2010 23:54:31 +0000 (+0200) Subject: Avoid casting away const qualifiers wherever possible. X-Git-Tag: 2.0.beta5~276 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a185a2e25da270264b22c2a0a758c5ea513ef960;p=thirdparty%2Fdovecot%2Fcore.git Avoid casting away const qualifiers wherever possible. --HG-- branch : HEAD --- diff --git a/src/lib-index/mail-index-modseq.c b/src/lib-index/mail-index-modseq.c index e9e9f7df52..608299fac8 100644 --- a/src/lib-index/mail-index-modseq.c +++ b/src/lib-index/mail-index-modseq.c @@ -285,7 +285,7 @@ mail_index_modseq_update(struct mail_index_modseq_sync *ctx, uint32_t seq1, uint32_t seq2) { const struct mail_index_ext *ext; - const struct mail_index_record *rec; + struct mail_index_record *rec; uint32_t ext_map_idx; uint64_t *modseqp; diff --git a/src/lib-index/mail-index-sync.c b/src/lib-index/mail-index-sync.c index 710f946fba..aa857c2df5 100644 --- a/src/lib-index/mail-index-sync.c +++ b/src/lib-index/mail-index-sync.c @@ -251,13 +251,14 @@ mail_index_sync_read_and_sort(struct mail_index_sync_ctx *ctx) for (i = 0; i < keyword_count; i++) { if (array_is_created(&keyword_updates[i].add_seq)) { synclist = array_append_space(&ctx->sync_list); - synclist->array = (void *)&keyword_updates[i].add_seq; + synclist->array = + (const void *)&keyword_updates[i].add_seq; synclist->keyword_idx = i; } if (array_is_created(&keyword_updates[i].remove_seq)) { synclist = array_append_space(&ctx->sync_list); synclist->array = - (void *)&keyword_updates[i].remove_seq; + (const void *)&keyword_updates[i].remove_seq; synclist->keyword_idx = i; synclist->keyword_remove = TRUE; } diff --git a/src/lib-otp/otp-parse.c b/src/lib-otp/otp-parse.c index 1074b2eaac..b7bcd22fe0 100644 --- a/src/lib-otp/otp-parse.c +++ b/src/lib-otp/otp-parse.c @@ -150,6 +150,7 @@ int otp_read_new_params(const char *data, const char **endptr, struct otp_state *state) { const char *p, *s; + char *end; unsigned int i = 0; int algo; @@ -165,7 +166,7 @@ int otp_read_new_params(const char *data, const char **endptr, state->algo = algo; s = p; - state->seq = strtol(s, (char **) &p, 10); + state->seq = strtol(s, &end, 10); p = end; if ((p == s) || !IS_LWS(*p)) return -3; p++; diff --git a/src/lib-settings/settings-parser.c b/src/lib-settings/settings-parser.c index 3ffd0c51a0..7b24ca3c7f 100644 --- a/src/lib-settings/settings-parser.c +++ b/src/lib-settings/settings-parser.c @@ -537,7 +537,8 @@ settings_parse(struct setting_parser_context *ctx, struct setting_link *link, const struct setting_define *def, const char *key, const char *value) { - void *ptr, *ptr2, *change_ptr; + void *ptr, *change_ptr; + const void *ptr2; const char *error; while (def->type == SET_ALIAS) { @@ -589,9 +590,9 @@ settings_parse(struct setting_parser_context *ctx, struct setting_link *link, case SET_ENUM: /* get the available values from default string */ i_assert(link->info->defaults != NULL); - ptr2 = STRUCT_MEMBER_P(link->info->defaults, def->offset); + ptr2 = CONST_STRUCT_MEMBER_P(link->info->defaults, def->offset); if (get_enum(ctx, value, (char **)ptr, - *(const char **)ptr2) < 0) + *(const char *const *)ptr2) < 0) return -1; break; case SET_DEFLIST: @@ -1346,7 +1347,7 @@ settings_changes_dup(const struct setting_parser_info *info, case SET_STR: case SET_ENUM: case SET_STRLIST: - *((char *)dest) = *((char *)src); + *((char *)dest) = *((const char *)src); break; case SET_DEFLIST: case SET_DEFLIST_UNIQUE: { diff --git a/src/lib/execv-const.c b/src/lib/execv-const.c index c89dcb6415..b8618e095f 100644 --- a/src/lib/execv-const.c +++ b/src/lib/execv-const.c @@ -5,16 +5,29 @@ #include +static char **argv_drop_const(const char *const argv[]) +{ + char **ret; + unsigned int i, count; + + for (count = 0; argv[count] != NULL; count++) ; + + ret = t_new(char *, count + 1); + for (i = 0; i < count; i++) + ret[i] = t_strdup_noconst(argv[i]); + return ret; +} + void execv_const(const char *path, const char *const argv[]) { - (void)execv(path, (void *)argv); + (void)execv(path, argv_drop_const(argv)); i_fatal_status(errno == ENOMEM ? FATAL_OUTOFMEM : FATAL_EXEC, "execv(%s) failed: %m", path); } void execvp_const(const char *file, const char *const argv[]) { - (void)execvp(file, (void *)argv); + (void)execvp(file, argv_drop_const(argv)); i_fatal_status(errno == ENOMEM ? FATAL_OUTOFMEM : FATAL_EXEC, "execvp(%s) failed: %m", file); } diff --git a/src/lib/fdpass.c b/src/lib/fdpass.c index 322b128b69..c376fca55d 100644 --- a/src/lib/fdpass.c +++ b/src/lib/fdpass.c @@ -97,7 +97,7 @@ ssize_t fd_send(int handle, int send_fd, const void *data, size_t size) { struct msghdr msg; - struct iovec iov; + struct const_iovec iov; struct cmsghdr *cmsg; char buf[CMSG_SPACE(sizeof(int))]; @@ -106,10 +106,10 @@ ssize_t fd_send(int handle, int send_fd, const void *data, size_t size) memset(&msg, 0, sizeof(struct msghdr)); - iov.iov_base = (void *) data; + iov.iov_base = data; iov.iov_len = size; - msg.msg_iov = &iov; + msg.msg_iov = (void *)&iov; msg.msg_iovlen = 1; if (send_fd != -1) {