(*fwdPtr != ';') &&
CoaleseDirs(char* io_Path){    /* Stolen from the old netlib's mkparse.c.     *     * modifies a url of the form   /foo/../foo1  ->  /foo1     *                       and    /foo/./foo1   ->  /foo/foo1     *                       and    /foo/foo1/..  ->  /foo/     */    char *fwdPtr = io_Path;    char *urlPtr = io_Path;        for(; (*fwdPtr != '\0') &&             (*fwdPtr != ';') &&             (*fwdPtr != '?') &&             (*fwdPtr != '#'); ++fwdPtr)    {#if defined(XP_WIN)        // At first, If this is DBCS character, it skips next character.        if (::IsDBCSLeadByte(*fwdPtr) && *(fwdPtr+1) != '\0') {            *urlPtr++ = *fwdPtr++;            *urlPtr++ = *fwdPtr;            continue;        }#endif#if defined(XP_WIN) || defined(XP_OS2)        if (*fwdPtr == '\\')            *fwdPtr = '/';#endif        if (*fwdPtr == '/' && *(fwdPtr+1) == '.' &&             (*(fwdPtr+2) == '/' || *(fwdPtr+2) == '\\'))        {            // remove . followed by slash or a backslash            fwdPtr += 1;        }        else if(*fwdPtr == '/' && *(fwdPtr+1) == '.' && *(fwdPtr+2) == '.' &&                 (*(fwdPtr+3) == '/' ||                     *(fwdPtr+3) == '\0' ||                    *(fwdPtr+3) == ';' ||   // This will take care of likes of                    *(fwdPtr+3) == '?' ||   //    foo/bar/..#sometag                    *(fwdPtr+3) == '#' ||                    *(fwdPtr+3) == '\\'))        {            // remove foo/..             // reverse the urlPtr to the previous slash             if(urlPtr != io_Path)                 urlPtr--; // we must be going back at least by one             for(;*urlPtr != '/' && urlPtr != io_Path; urlPtr--)                ;  // null body             // forward the fwd_prt past the ../            fwdPtr += 2;            // special case if we have reached the end to preserve the last /            if (*fwdPtr == '.' && *(fwdPtr+1) == '\0')                urlPtr +=1;        }        else        {            // copy the url incrementaly             *urlPtr++ = *fwdPtr;        }    }    // Copy remaining stuff past the #?;    for (; *fwdPtr != '\0'; ++fwdPtr)    {        *urlPtr++ = *fwdPtr;    }    *urlPtr = '\0';  // terminate the url     /*      *  Now lets remove trailing . case     *     /foo/foo1/.   ->  /foo/foo1/     */    if ((urlPtr > (io_Path+1)) && (*(urlPtr-1) == '.') && (*(urlPtr-2) == '/'))        *(urlPtr-1) = '\0';}