btw does anyone think this is insufficient documentation for the original function I spoke of:
/* '\0' is temporarily used to overwrite directory seperators during the search,
 * seperators are restored after the segment is done with, to get the length of
 * any section follow this example:
 * leng = (size_t)(path->base - path->root);
 * As for order of sections here is how they would look in the path based on
 * known schemes:
 * root://base:port/dir/ent.ext#hash?qry
 * base:\\dir\\ent.ext
 * rootbase:\\dir\\ent.ext
 * /root/base/dir/ent.ext
 * Some pointers will be NULL if no such section exists
PAW_PUBLIC int paw_split_path( struct paw_path *dst, char *src );