o->opts_seen |= opt;
const char *modperl_options_set(apr_pool_t *p, modperl_options_t *o,                                const char *str){    modperl_opts_t opt;    char action = '\0';    const char *error = NULL;    if (*str == '+' || *str == '-') {        action = *(str++);    }    if (!(opt = flags_lookup(o, str))) {        error = apr_pstrcat(p, "Invalid per-", type_lookup(o),                            " PerlOption: ", str, NULL);        if (MpOptionsTypeDir(o)) {            modperl_options_t dummy;            MpOptionsTypeSrv_set(&dummy);            if (flags_lookup(&dummy, str)) {                error = apr_pstrcat(p, error,                                    " (only allowed per-server)",                                    NULL);            }        }        return error;    }#ifndef USE_ITHREADS    else if (MpOptionsTypeSrv(o)) {        if (MpSrvOPT_ITHREAD_ONLY(opt)) {            return apr_pstrcat(p, "PerlOption `", str,                               "' requires an ithreads enabled Perl", NULL);        }    }#endif    if (action == '-') {        o->opts_remove |= opt;        o->opts_add &= ~opt;        o->opts &= ~opt;    }    else if (action == '+') {        o->opts_add |= opt;        o->opts_remove &= ~opt;        o->opts |= opt;    }    else {        o->opts |= opt;    }    return NULL;}