Commit fceac3ab authored by Jim Jagielski's avatar Jim Jagielski
Browse files

Merge r1713043, r1802305, r1802309 from trunk:

Save a few bytes in conf pool when processing 'Define'.

+ some minor style issues
+ split long lines

Be explicit and safe (const) with the strings stored in ap_server_config_defines.

Follow up to r1713043.


ap_server_config_defines and ap_server_{pre,post}_read_config are arrays of
*const* strings (must not change after being inserted), make it explicit.


Submitted by: jailletc36, ylavic, ylavic
Reviewed by: ylavic, jorton, jim


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1805223 13f79535-47bb-0310-9956-ffa450edef68
parent 1aef4dd8
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -116,14 +116,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
  [ start all new proposals below, under PATCHES PROPOSED. ]

  *) core: ap_server_config_defines and ap_server_{pre,post}_read_config
           constantness and bytes saving, no functional change.
     trunk patch: http://svn.apache.org/r1713043
                  http://svn.apache.org/r1802305
                  http://svn.apache.org/r1802309
     2.4.x patch: http://home.apache.org/~ylavic/patches/httpd-2.4.x-globals_constantness_and_bytes_saving.patch
     +1: ylavic, jorton, jim



PATCHES PROPOSED TO BACKPORT FROM TRUNK:
+2 −2
Original line number Diff line number Diff line
@@ -1715,14 +1715,14 @@ typedef struct {
static apr_status_t arr_elts_getstr(void *buf, apr_size_t bufsiz, void *param)
{
    arr_elts_param_t *arr_param = (arr_elts_param_t *)param;
    char *elt;
    const char *elt;

    /* End of array reached? */
    if (++arr_param->curr_idx > arr_param->array->nelts)
        return APR_EOF;

    /* return the line */
    elt = ((char **)arr_param->array->elts)[arr_param->curr_idx - 1];
    elt = ((const char **)arr_param->array->elts)[arr_param->curr_idx - 1];
    if (apr_cpystrn(buf, elt, bufsiz) - (char *)buf >= bufsiz - 1)
        return APR_ENOSPC;
    return APR_SUCCESS;
+14 −10
Original line number Diff line number Diff line
@@ -1435,18 +1435,20 @@ static const char *set_define(cmd_parms *cmd, void *dummy,
    const char *err = ap_check_cmd_context(cmd, NOT_IN_HTACCESS);
    if (err)
        return err;
    if (ap_strchr_c(name, ':') != NULL)
    if (ap_strchr_c(name, ':') != NULL) {
        return "Variable name must not contain ':'";
    }

    if (!saved_server_config_defines)
    if (!saved_server_config_defines) {
        init_config_defines(cmd->pool);
    }
    if (!ap_exists_config_define(name)) {
        char **newv = (char **)apr_array_push(ap_server_config_defines);
        *newv = apr_pstrdup(cmd->pool, name);
        *(const char **)apr_array_push(ap_server_config_defines) = name;
    }
    if (value) {
        if (!server_config_defined_vars)
        if (!server_config_defined_vars) {
            server_config_defined_vars = apr_table_make(cmd->pool, 5);
        }
        apr_table_setn(server_config_defined_vars, name, value);
    }

@@ -1457,20 +1459,22 @@ static const char *unset_define(cmd_parms *cmd, void *dummy,
                                const char *name)
{
    int i;
    char **defines;
    const char **defines;
    const char *err = ap_check_cmd_context(cmd, NOT_IN_HTACCESS);
    if (err)
        return err;
    if (ap_strchr_c(name, ':') != NULL)
    if (ap_strchr_c(name, ':') != NULL) {
        return "Variable name must not contain ':'";
    }

    if (!saved_server_config_defines)
    if (!saved_server_config_defines) {
        init_config_defines(cmd->pool);
    }

    defines = (char **)ap_server_config_defines->elts;
    defines = (const char **)ap_server_config_defines->elts;
    for (i = 0; i < ap_server_config_defines->nelts; i++) {
        if (strcmp(defines[i], name) == 0) {
            defines[i] = *(char **)apr_array_pop(ap_server_config_defines);
            defines[i] = *(const char **)apr_array_pop(ap_server_config_defines);
            break;
        }
    }
+14 −11
Original line number Diff line number Diff line
@@ -477,9 +477,12 @@ int main(int argc, const char * const argv[])

    apr_pool_create(&pcommands, ap_pglobal);
    apr_pool_tag(pcommands, "pcommands");
    ap_server_pre_read_config  = apr_array_make(pcommands, 1, sizeof(char *));
    ap_server_post_read_config = apr_array_make(pcommands, 1, sizeof(char *));
    ap_server_config_defines   = apr_array_make(pcommands, 1, sizeof(char *));
    ap_server_pre_read_config  = apr_array_make(pcommands, 1,
                                                sizeof(const char *));
    ap_server_post_read_config = apr_array_make(pcommands, 1,
                                                sizeof(const char *));
    ap_server_config_defines   = apr_array_make(pcommands, 1,
                                                sizeof(const char *));

    error = ap_setup_prelinked_modules(process);
    if (error) {
@@ -497,16 +500,16 @@ int main(int argc, const char * const argv[])

    while ((rv = apr_getopt(opt, AP_SERVER_BASEARGS, &c, &opt_arg))
            == APR_SUCCESS) {
        char **new;
        const char **new;

        switch (c) {
        case 'c':
            new = (char **)apr_array_push(ap_server_post_read_config);
            new = (const char **)apr_array_push(ap_server_post_read_config);
            *new = apr_pstrdup(pcommands, opt_arg);
            break;

        case 'C':
            new = (char **)apr_array_push(ap_server_pre_read_config);
            new = (const char **)apr_array_push(ap_server_pre_read_config);
            *new = apr_pstrdup(pcommands, opt_arg);
            break;

@@ -515,7 +518,7 @@ int main(int argc, const char * const argv[])
            break;

        case 'D':
            new = (char **)apr_array_push(ap_server_config_defines);
            new = (const char **)apr_array_push(ap_server_config_defines);
            *new = apr_pstrdup(pcommands, opt_arg);
            /* Setting -D DUMP_VHOSTS should work like setting -S */
            if (strcmp(opt_arg, "DUMP_VHOSTS") == 0)
@@ -541,7 +544,7 @@ int main(int argc, const char * const argv[])
            break;

        case 'X':
            new = (char **)apr_array_push(ap_server_config_defines);
            new = (const char **)apr_array_push(ap_server_config_defines);
            *new = "DEBUG";
            break;

@@ -574,15 +577,15 @@ int main(int argc, const char * const argv[])

        case 'S':
            ap_run_mode = AP_SQ_RM_CONFIG_DUMP;
            new = (char **)apr_array_push(ap_server_config_defines);
            new = (const char **)apr_array_push(ap_server_config_defines);
            *new = "DUMP_VHOSTS";
            new = (char **)apr_array_push(ap_server_config_defines);
            new = (const char **)apr_array_push(ap_server_config_defines);
            *new = "DUMP_RUN_CFG";
            break;

        case 'M':
            ap_run_mode = AP_SQ_RM_CONFIG_DUMP;
            new = (char **)apr_array_push(ap_server_config_defines);
            new = (const char **)apr_array_push(ap_server_config_defines);
            *new = "DUMP_MODULES";
            break;