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 :-)