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;
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;
}
struct otp_state *state)
{
const char *p, *s;
+ char *end;
unsigned int i = 0;
int algo;
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++;
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) {
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:
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: {
#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);
}
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))];
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) {