Looking at this function:

APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, 
                                            const char **filepath, 
                                            apr_pool_t *p);

This function takes the given filepath and returns the pointer to a new (p 
alloc'ed)
rootpath, and adjusts filepath to the first relative element (eg /foo becomes a 
new
"/" rootpath string and filepath is offset, not copied, to the "foo" string.)

I originally copied the '/' root for unix into the pool.  I think that's 
overkill,
I should be able to return a const, shared "/" string, no?  For Win32 there is 
no
avoiding a new string allocated from p.

I also had several extra lines to code for Win32 since we return NULL for the
rootpath of a true relative path.  Any objections if this too was a const, 
shared
string of ""?

Notice that APR_EINCOMPLETE does return a rootpath (an incomplete one, at that) 
so
it seems to make more sense that APR_ERELATIVE would also return a string 
(empty).

Comments?

Bill

p.s. if you dug into the unix code already, I'm about to replace all root* 
variables
with base* variable names, so we have basepath and addpath.  This cleans up a 
huge
ambiguity when you cross into win32, with a baseroot, addroot, basepath and 
addpath.
rootroot got me laughing when I realized how convoluted it became :-)

Reply via email to