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