Commit 13b10086 authored by William A. Rowe Jr's avatar William A. Rowe Jr
Browse files

  Provide the same optimization to the dir_config structure to track
  d_is_absolute, along with d_is_fnmatch.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89791 13f79535-47bb-0310-9956-ffa450edef68
parent 30e9b861
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -364,7 +364,7 @@ typedef enum {
} server_signature_e;

typedef struct {
    /* path of the directory/regex/etc.  see also d_is_fnmatch below */
    /* path of the directory/regex/etc. see also d_is_fnmatch/absolute below */
    char *d;
    /* the number of slashes in d */
    unsigned d_components;
@@ -426,6 +426,12 @@ typedef struct {
     */
    unsigned d_is_fnmatch : 1;

    /* since is_absolute(conf->d) was being called so frequently in
     * directory_walk() and its relatives, this field was created and
     * is set to the result of that call.
     */
    unsigned d_is_absolute : 1;

    /* should we force a charset on any outgoing parameterless content-type?
     * if so, which charset?
     */
+4 −0
Original line number Diff line number Diff line
@@ -132,6 +132,7 @@ static void *create_core_dir_config(apr_pool_t *a, char *dir)
        conf->d = apr_pstrcat(a, dir, "/", NULL);
    }
    conf->d_is_fnmatch = conf->d ? (apr_is_fnmatch(conf->d) != 0) : 0;
    conf->d_is_absolute = conf->d ? (ap_os_is_path_absolute(conf->d) != 0) : 0;
    conf->d_components = conf->d ? ap_count_dirs(conf->d) : 0;

    conf->opts = dir ? OPT_UNSET : OPT_UNSET|OPT_ALL;
@@ -192,6 +193,7 @@ static void *merge_core_dir_configs(apr_pool_t *a, void *basev, void *newv)
    
    conf->d = new->d;
    conf->d_is_fnmatch = new->d_is_fnmatch;
    conf->d_is_absolute = new->d_is_absolute;
    conf->d_components = new->d_components;
    conf->r = new->r;
    
@@ -1663,6 +1665,7 @@ static const char *urlsection(cmd_parms *cmd, void *mconfig, const char *arg)

    conf->d = apr_pstrdup(cmd->pool, cmd->path);	/* No mangling, please */
    conf->d_is_fnmatch = apr_is_fnmatch(conf->d) != 0;
    conf->d_is_absolute = ap_os_is_path_absolute(conf->d) != 0;
    conf->r = r;

    ap_add_per_url_conf(cmd->server, new_url_conf);
@@ -1729,6 +1732,7 @@ static const char *filesection(cmd_parms *cmd, void *mconfig, const char *arg)

    conf->d = cmd->path;
    conf->d_is_fnmatch = apr_is_fnmatch(conf->d) != 0;
    conf->d_is_absolute = ap_os_is_path_absolute(conf->d) != 0;
    conf->r = r;

    ap_add_file_conf(c, new_file_conf);