{ "smtp_ratelimit_hosts", opt_stringptr, &smtp_ratelimit_hosts },
{ "smtp_ratelimit_mail", opt_stringptr, &smtp_ratelimit_mail },
{ "smtp_ratelimit_rcpt", opt_stringptr, &smtp_ratelimit_rcpt },
- { "smtp_receive_timeout", opt_func, (void *) &fn_smtp_receive_timeout },
+ { "smtp_receive_timeout", opt_func, {.fn = &fn_smtp_receive_timeout} },
{ "smtp_reserve_hosts", opt_stringptr, &smtp_reserve_hosts },
{ "smtp_return_error_details",opt_bool, &smtp_return_error_details },
#ifdef SUPPORT_I18N
for (int i = 0; i < *ri->options_count; i++)
{
if ((ri->options[i].type & opt_mask) != opt_stringptr) continue;
- if (p == CS (r->options_block) + (long int)(ri->options[i].v.value))
+ if (p == CS (r->options_block) + ri->options[i].v.offset)
return US ri->options[i].name;
}
}
? CS t
: CS t->options_block
)
- + (long int)op->v.value)
+ + op->v.offset)
return US op->name;
}
}
log_write(0, LOG_MAIN|LOG_PANIC_DIE,
"Exim internal error: missing set flag for %s", name);
return data_block
- ? (BOOL *)(US data_block + (long int)ol->v.value) : (BOOL *)ol->v.value;
+ ? (BOOL *)(US data_block + ol->v.offset) : (BOOL *)ol->v.value;
}
control block and flags word. */
case opt_stringptr:
- str_target = data_block ? USS (US data_block + (long int)ol->v.value)
+ str_target = data_block ? USS (US data_block + ol->v.offset)
: USS ol->v.value;
if (ol->type & opt_rep_con)
{
case opt_rewrite:
if (data_block)
- *USS (US data_block + (long int)ol->v.value) = sptr;
+ *USS (US data_block + ol->v.offset) = sptr;
else
*USS ol->v.value = sptr;
freesptr = FALSE;
if (data_block)
{
- chain = (rewrite_rule **)(US data_block + (long int)ol2->v.value);
- flagptr = (int *)(US data_block + (long int)ol3->v.value);
+ chain = (rewrite_rule **)(US data_block + ol2->v.offset);
+ flagptr = (int *)(US data_block + ol3->v.offset);
}
else
{
uschar *ss = (Ustrchr(sptr, '$') != NULL) ? sptr : NULL;
if (data_block)
- *(USS(US data_block + (long int)ol2->v.value)) = ss;
+ *(USS(US data_block + ol2->v.offset)) = ss;
else
*(USS ol2->v.value) = ss;
if (!route_finduser(sptr, &pw, &uid))
log_write(0, LOG_PANIC_DIE|LOG_CONFIG_IN, "user %s was not found", sptr);
if (data_block)
- *(uid_t *)(US data_block + (long int)(ol->v.value)) = uid;
+ *(uid_t *)(US data_block + ol->v.offset) = uid;
else
*(uid_t *)ol->v.value = uid;
if (!*set_flag)
{
if (data_block)
- *((gid_t *)(US data_block + (long int)ol2->v.value)) = pw->pw_gid;
+ *((gid_t *)(US data_block + ol2->v.offset)) = pw->pw_gid;
else
*((gid_t *)ol2->v.value) = pw->pw_gid;
*set_flag = TRUE;
uschar *ss = (Ustrchr(sptr, '$') != NULL) ? sptr : NULL;
if (data_block)
- *(USS(US data_block + (long int)ol2->v.value)) = ss;
+ *(USS(US data_block + ol2->v.offset)) = ss;
else
*(USS ol2->v.value) = ss;
if (!route_findgroup(sptr, &gid))
log_write(0, LOG_PANIC_DIE|LOG_CONFIG_IN, "group %s was not found", sptr);
if (data_block)
- *((gid_t *)(US data_block + (long int)ol->v.value)) = gid;
+ *((gid_t *)(US data_block + ol->v.offset)) = gid;
else
*((gid_t *)ol->v.value) = gid;
*(get_set_flag(name, oltop, last, data_block)) = TRUE;
list[ptr++] = (uid_t)(count - 1);
if (data_block)
- *((uid_t **)(US data_block + (long int)ol->v.value)) = list;
+ *((uid_t **)(US data_block + ol->v.offset)) = list;
else
*((uid_t **)ol->v.value) = list;
list[ptr++] = (gid_t)(count - 1);
if (data_block)
- *((gid_t **)(US data_block + (long int)ol->v.value)) = list;
+ *((gid_t **)(US data_block + ol->v.offset)) = list;
else
*((gid_t **)ol->v.value) = list;
reset_point = store_mark();
sptr = read_string(s, name);
if (data_block)
- *(USS(US data_block + (long int)ol2->v.value)) = sptr;
+ *(USS(US data_block + ol2->v.offset)) = sptr;
else
*(USS ol2->v.value) = sptr;
freesptr = FALSE;
{
int bit = 1 << ((ol->type >> 16) & 31);
int * ptr = data_block
- ? (int *)(US data_block + (long int)ol->v.value)
+ ? (int *)(US data_block + ol->v.offset)
: (int *)ol->v.value;
if (boolvalue) *ptr |= bit; else *ptr &= ~bit;
break;
/* Handle full BOOL types */
if (data_block)
- *((BOOL *)(US data_block + (long int)ol->v.value)) = boolvalue;
+ *((BOOL *)(US data_block + ol->v.offset)) = boolvalue;
else
*((BOOL *)ol->v.value) = boolvalue;
sprintf(CS name2, "%.50s_recipient", name + offset);
if ((ol2 = find_option(name2, oltop, last)))
if (data_block)
- *((BOOL *)(US data_block + (long int)ol2->v.value)) = boolvalue;
+ *((BOOL *)(US data_block + ol2->v.offset)) = boolvalue;
else
*((BOOL *)ol2->v.value) = boolvalue;
}
sprintf(CS name2, "*set_%.50s", name + offset);
if ((ol2 = find_option(name2, oltop, last)))
if (data_block)
- *((BOOL *)(US data_block + (long int)ol2->v.value)) = TRUE;
+ *((BOOL *)(US data_block + ol2->v.offset)) = TRUE;
else
*((BOOL *)ol2->v.value) = TRUE;
}
}
if (data_block)
- *(int *)(US data_block + (long int)ol->v.value) = value;
+ *(int *)(US data_block + ol->v.offset) = value;
else
*(int *)ol->v.value = value;
break;
extra_chars_error(endptr, inttype, US"integer value for ", name);
if (data_block)
- *(int_eximarith_t *)(US data_block + (long int)ol->v.value) = lvalue;
+ *(int_eximarith_t *)(US data_block + ol->v.offset) = lvalue;
else
*(int_eximarith_t *)ol->v.value = lvalue;
break;
extra_chars_error(s+count, US"fixed-point value for ", name, US"");
if (data_block)
- *((int *)(US data_block + (long int)ol->v.value)) = value;
+ *((int *)(US data_block + ol->v.offset)) = value;
else
*((int *)ol->v.value) = value;
break;
log_write(0, LOG_PANIC_DIE|LOG_CONFIG_IN, "invalid time value for %s",
name);
if (data_block)
- *((int *)(US data_block + (long int)ol->v.value)) = value;
+ *((int *)(US data_block + ol->v.offset)) = value;
else
*((int *)ol->v.value) = value;
break;
{
int count = 0;
int * list = data_block
- ? (int *)(US data_block + (long int)ol->v.value)
+ ? (int *)(US data_block + ol->v.offset)
: (int *)ol->v.value;
if (*s != 0) for (count = 1; count <= list[0] - 2; count++)
sprintf(CS name2, "*expand_%.50s", name);
if ((ol2 = find_option(name2, oltop, last)))
{
- void * value2 = ol2->v.value;
if (options_block)
- value2 = (void *)(US options_block + (long int)value2);
- s = *(USS value2);
+ s = *USS (US options_block + ol2->v.offset);
+ else
+ s = *USS ol2->v.value;
if (!no_labels) printf("%s = ", name);
printf("%s\n", s ? string_printing(s) : US"");
break;
if ( (ol2 = find_option(name2, oltop, last))
&& (ol2->type & opt_mask) == opt_stringptr)
{
- void * value2 = ol2->v.value;
if (options_block)
- value2 = (void *)(US options_block + (long int)value2);
- s = *(USS value2);
+ s = *USS (US options_block + ol2->v.offset);
+ else
+ s = *USS ol2->v.value;
if (!no_labels) printf("%s = ", name);
printf("%s\n", s ? string_printing(s) : US"");
break;
sprintf(CS name2, "*expand_%.50s", name);
if ((ol2 = find_option(name2, oltop, last)) && ol2->v.value)
{
- void * value2 = ol2->v.value;
if (options_block)
- value2 = (void *)(US options_block + (long int)value2);
- if ((s = *(USS value2)))
+ s = *USS (US options_block + ol2->v.offset);
+ else
+ s = *USS ol2->v.value;
+ if (s)
{
if (!no_labels) printf("%s = ", name);
printf("%s\n", string_printing(s));
break;
case opt_func:
- {
- void (*fn)() = ol->v.fn;
- fn(name, NULL, no_labels ? opt_fn_print : opt_fn_print|opt_fn_print_label);
+ ol->v.fn(name, NULL, no_labels ? opt_fn_print : opt_fn_print|opt_fn_print_label);
break;
- }
}
return TRUE;
}
if ((ol->type & opt_mask) == opt_stringptr)
{
void * options_block = ol->type & opt_public ? (void *)d : d->options_block;
- uschar * value = *USS(US options_block + (long int)ol->v.value);
+ uschar * value = *USS(US options_block + ol->v.offset);
if (value && (ss = Ustrstr(value, s)) != NULL)
{