dovecot-2.0: Avoid casting away const qualifiers wherever possible.
dovecot at dovecot.org
dovecot at dovecot.org
Sat Mar 27 01:54:39 EET 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/be5b93c18203
changeset: 10998:be5b93c18203
user: Timo Sirainen <tss at iki.fi>
date: Sat Mar 27 01:54:31 2010 +0200
description:
Avoid casting away const qualifiers wherever possible.
diffstat:
src/lib-index/mail-index-modseq.c | 2 +-
src/lib-index/mail-index-sync.c | 5 +++--
src/lib-otp/otp-parse.c | 3 ++-
src/lib-settings/settings-parser.c | 9 +++++----
src/lib/execv-const.c | 17 +++++++++++++++--
src/lib/fdpass.c | 6 +++---
6 files changed, 29 insertions(+), 13 deletions(-)
diffs (146 lines):
diff -r 961ded33ca0a -r be5b93c18203 src/lib-index/mail-index-modseq.c
--- a/src/lib-index/mail-index-modseq.c Sat Mar 27 01:40:04 2010 +0200
+++ b/src/lib-index/mail-index-modseq.c Sat Mar 27 01:54:31 2010 +0200
@@ -285,7 +285,7 @@
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 -r 961ded33ca0a -r be5b93c18203 src/lib-index/mail-index-sync.c
--- a/src/lib-index/mail-index-sync.c Sat Mar 27 01:40:04 2010 +0200
+++ b/src/lib-index/mail-index-sync.c Sat Mar 27 01:54:31 2010 +0200
@@ -251,13 +251,14 @@
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 -r 961ded33ca0a -r be5b93c18203 src/lib-otp/otp-parse.c
--- a/src/lib-otp/otp-parse.c Sat Mar 27 01:40:04 2010 +0200
+++ b/src/lib-otp/otp-parse.c Sat Mar 27 01:54:31 2010 +0200
@@ -150,6 +150,7 @@
struct otp_state *state)
{
const char *p, *s;
+ char *end;
unsigned int i = 0;
int algo;
@@ -165,7 +166,7 @@
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 -r 961ded33ca0a -r be5b93c18203 src/lib-settings/settings-parser.c
--- a/src/lib-settings/settings-parser.c Sat Mar 27 01:40:04 2010 +0200
+++ b/src/lib-settings/settings-parser.c Sat Mar 27 01:54:31 2010 +0200
@@ -537,7 +537,8 @@
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 @@
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 @@
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 -r 961ded33ca0a -r be5b93c18203 src/lib/execv-const.c
--- a/src/lib/execv-const.c Sat Mar 27 01:40:04 2010 +0200
+++ b/src/lib/execv-const.c Sat Mar 27 01:54:31 2010 +0200
@@ -5,16 +5,29 @@
#include <unistd.h>
+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 -r 961ded33ca0a -r be5b93c18203 src/lib/fdpass.c
--- a/src/lib/fdpass.c Sat Mar 27 01:40:04 2010 +0200
+++ b/src/lib/fdpass.c Sat Mar 27 01:54:31 2010 +0200
@@ -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 @@
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) {
More information about the dovecot-cvs
mailing list