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
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:
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;
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);
}
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;
}
}
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) {
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;
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)
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;
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;