From: "Kevin Pilch-Bisson" <[EMAIL PROTECTED]>
Sent: Wednesday, March 14, 2001 11:39 AM


> Sorry, I think it has to do with the way mutt handles pgp signing
> messages.  I'm not going to sign this one, so hopefully it won't do so.
> 
> Offhand, which pathetic win32 client.

Message is fine, I'm using MeSsed Outlook Express (which actually, usually 
handles
pgp signed messages, as opposed to the MS Office Outlook).  

> > apr_status_t apr_filepath_root(char** pathroot, char** name, apr_pool_t *p)
> >     Which returns the canonical form of the pathroot and returns the first 
> > non-root
> >     part of name (e.g. '/foo' is '/' 'foo' on unix, 'c:\foo' is 'c:\' 'foo' 
> > and
> >     '//machine/share/foo' is '//machine/share/' 'foo' on win32)
> >     Handles incomplete roots ('c:foo' on win32 is 'c:', 'foo', but returns 
> > a status
> >     of APR_EINCOMPLETE).
> 
> Would there be a way to convert an incomplete path to a complete path?
> (change drive to c:, getpwd, append foo, in the above example)

That is what apr_filepath_merge does for you.  You can pass a partial root [/ 
or d:]
apr_filepath_root over to apr_filepath_merge as the addpath (with a null root). 
 That
will return a true root.  apr_filepath_root is as much to help 
apr_filepath_merge
(and any other app) break apart the root from a name, since the root is very 
platform
specific (moreso than any other part of this debate.)  Look at netware 
machine/sys:/
versus win32/os2, toss in unc names and unix remote volumes and ugh, what a 
mess.

> > apr_status_t apr_filepath_common(char** result, char* a, char* b, 
> > apr_pool_t *p)
> >     returns the segments that match, comparing from the beginning.
> >     The user must canonicalize the paths first with apr_filepath_merge.
> >     /foo/bar compared to /foo/barstool  returns  /foo/
> >     compare does not distinguish between '/' and '\' on win32/os2 - they 
> > compare equal.
> >     If a and b were char**, we could point at the first uncommon element, 
> > but a strlen
> >     of result provides the same answer, no?  [This isn't true of the above 
> > example that
> >     is changing the case, eliminating trailing '.'s and ' 's from win32 
> > names, and 
> >     converting short aliases to true names).
> > 
> > Canonicalizing first to the truename is required before apr_filepath_common 
> > can be
> > trusted on Win32 or OS2, since c:/thislongname/ is also c:/THISLO~1/
> 
> Canonicalizing is done by apr_filepath_merge, with NULL rootpath, right?

Yes, or by merging the untrusted path onto a known canonical path (say a 
ServerRoot or
DocumentRoot already canonicalized within Apache's server structure.)


Reply via email to