httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stas Bekman <s...@stason.org>
Subject ap_os_escape_path with partial=0?
Date Sat, 14 Aug 2004 00:11:19 GMT
Can someone please explain what this function does when partial=0? why 
does it prepend "./" only if the path includes ":/" in it? what's 
happening here? the API doesn't document this nuance. What kind of input 
does it take care of? I can see it used by mod_autoindex, but may be it 
never hits this condition?

Shouldn't it go the other way around? i.e. not append ./ if it finds ':/' 
in the string?

         if (!(colon && (!slash || colon < slash))) {
             *d++ = '.';
             *d++ = '/';
         }

Thanks.

Here is the whole function for your convenience:

AP_DECLARE(char *) ap_os_escape_path(apr_pool_t *p, const char *path, int 
partial)
{
     char *copy = apr_palloc(p, 3 * strlen(path) + 3);
     const unsigned char *s = (const unsigned char *)path;
     unsigned char *d = (unsigned char *)copy;
     unsigned c;

     if (!partial) {
         const char *colon = ap_strchr_c(path, ':');
         const char *slash = ap_strchr_c(path, '/');

         if (colon && (!slash || colon < slash)) {
             *d++ = '.';
             *d++ = '/';
         }
     }
     while ((c = *s)) {
         if (TEST_CHAR(c, T_OS_ESCAPE_PATH)) {
             d = c2x(c, d);
         }
         else {
             *d++ = c;
         }
         ++s;
     }
     *d = '\0';
     return copy;
}

-- 
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

Mime
View raw message