static const
char *cmd_spread_logs(cmd_parms *cmd, void *dummy, int flag)
{
	log_spread2_options *opt = ap_get_module_config(cmd->server->module_config, &log_spread2_module);
	const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);

	if (err) {
		return err;
	}

	APR_OPTIONAL_FN_TYPE(ap_log_set_writer_init) *set_writer_init;
	APR_OPTIONAL_FN_TYPE(ap_log_set_writer)      *set_writer;

	set_writer_init = APR_RETRIEVE_OPTIONAL_FN(ap_log_set_writer_init);
	set_writer      = APR_RETRIEVE_OPTIONAL_FN(ap_log_set_writer);

	if (set_writer_init == NULL || set_writer == NULL) {
		return MNAME ": can't install log writer - ap_log_set_writer not available";
	}

	SP_disconnect(opt->mbox);
	opt->enabled = 0;

	if (flag) {
		apr_status_t rv = SP_connect(opt->name, 0, 0, 0, &opt->mbox, opt->priv);

		if (rv != ACCEPT_SESSION) {
			ap_log_error(APLOG_MARK, APLOG_ERR, rv, cmd->server,
					MNAME ": could not open connection to daemon.");
			return NULL;
		}

		opt->old_writer_init = set_writer_init(ap_spread_log_writer_init);
		opt->old_writer      = set_writer(ap_spread_log_writer);
		opt->enabled         = 1;
	} else {
		if (opt->old_writer_init) {
			set_writer_init(opt->old_writer_init);
			opt->old_writer_init = NULL;
		}

		if (opt->old_writer) {
			set_writer(opt->old_writer);
			opt->old_writer = NULL;
		}
	}

	return NULL;
}
static const char *set_rotated_logs(cmd_parms *cmd, void *dummy, int flag) {
    log_options *ls = ap_get_module_config(cmd->server->module_config, &log_rotate_module);
    if (flag) {
        /* Always hook the writer functions when we're enabled even if we've
         * done it already. We can't unhook which means that once we've been
         * enabled we become responsible for all transfer log output. Note that
         * a subsequent BufferedLogs On in conf will clobber these hooks and
         * disable us.
         */
        APR_OPTIONAL_FN_TYPE(ap_log_set_writer_init) *set_writer_init;
        APR_OPTIONAL_FN_TYPE(ap_log_set_writer)      *set_writer;

        set_writer_init = APR_RETRIEVE_OPTIONAL_FN(ap_log_set_writer_init);
        set_writer      = APR_RETRIEVE_OPTIONAL_FN(ap_log_set_writer);

        if (NULL != set_writer_init && NULL != set_writer) {
            set_writer_init(ap_rotated_log_writer_init);
            set_writer(ap_rotated_log_writer);
            ls->enabled = 1;
        } else {
            ap_log_error(APLOG_MARK, APLOG_ERR, APR_SUCCESS, cmd->server,
                    "can't install log rotator - ap_log_set_writer not available");
            ls->enabled = 0;
        }
    }
    else
    {
        ls->enabled = 0;
    }

    return NULL;
}