jberry 2003/02/25 09:31:08 Modified: c/src/xercesc/util/Platforms/MacOS MacOSPlatformUtils.cpp Log: Backout recent ill-advised change to Mac OS Classic path creation that left a / at end of a path to a directory Revision Changes Path 1.12 +15 -33 xml-xerces/c/src/xercesc/util/Platforms/MacOS/MacOSPlatformUtils.cpp Index: MacOSPlatformUtils.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/Platforms/MacOS/MacOSPlatformUtils.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- MacOSPlatformUtils.cpp 23 Feb 2003 04:41:26 -0000 1.11 +++ MacOSPlatformUtils.cpp 25 Feb 2003 17:31:08 -0000 1.12 @@ -1347,7 +1347,7 @@ { err = FSGetCatalogInfo( &ref, - kFSCatInfoNodeFlags | kFSCatInfoParentDirID, + kFSCatInfoParentDirID, &catalogInfo, &name, static_cast<FSSpec*>(NULL), @@ -1376,35 +1376,26 @@ bufCnt = 0; } - // Prepend a slash if this was a directory - if (catalogInfo.nodeFlags & kFSNodeIsDirectoryMask) - { - buf[--bufPos] = L'/'; - ++bufCnt; - } - - // Prepend our new name + // Prepend our new name and a '/' bufPos -= name.length; ConvertSlashToColon( CopyUniCharsToXMLChs(name.unicode, &buf[bufPos], name.length, name.length), name.length); - bufCnt += name.length; + buf[--bufPos] = L'/'; + bufCnt += (name.length + 1); } } while (err == noErr && catalogInfo.parentDirID != fsRtParID); - // Composite '/' + existing buffer + any previous result buffer - ArrayJanitor<XMLCh> final(new XMLCh[1 + bufCnt + resultLen]); - - // Full pathnames always start with a leading / - final.get()[0] = '/'; + // Composite existing buffer + any previous result buffer + ArrayJanitor<XMLCh> final(new XMLCh[bufCnt + resultLen]); // Copy in the static buffer - std::memcpy(final.get() + 1, &buf[bufPos], bufCnt * sizeof(XMLCh)); + std::memcpy(final.get(), &buf[bufPos], bufCnt * sizeof(XMLCh)); // Copy in the old buffer if (resultLen > 0) - std::memcpy(final.get() + 1 + bufCnt, result.get(), resultLen * sizeof(XMLCh)); + std::memcpy(final.get() + bufCnt, result.get(), resultLen * sizeof(XMLCh)); return final.release(); } @@ -1492,17 +1483,11 @@ bufCnt = 0; } - // Prepend a slash if this was a directory - if (catInfo.dirInfo.ioFlAttrib & kioFlAttribDirMask) - { - buf[--bufPos] = '/'; - ++bufCnt; - } - - // Prepend our new name + // Prepend our new name and a '/' bufPos -= nameLen; ConvertSlashToColon((char*)std::memcpy(&buf[bufPos], &spec.name[1], nameLen), nameLen); - bufCnt += nameLen; + buf[--bufPos] = '/'; + bufCnt += (nameLen + 1); // From here on out, ignore the input file name index = -1; @@ -1514,17 +1499,14 @@ while (err == noErr && spec.parID != fsRtParID); // Composite existing buffer with any previous result buffer - ArrayJanitor<char> final(new char[1 + bufCnt + resultLen]); - - // Full pathnames always start with a leading / - final.get()[0] = '/'; + ArrayJanitor<char> final(new char[bufCnt + resultLen]); // Copy in the static buffer - std::memcpy(final.get() + 1, &buf[bufPos], bufCnt); + std::memcpy(final.get(), &buf[bufPos], bufCnt); // Copy in the old buffer if (resultLen > 0) - std::memcpy(final.get() + 1 + bufCnt, result.get(), resultLen); + std::memcpy(final.get() + bufCnt, result.get(), resultLen); // Cleanup and transcode to unicode return XMLString::transcode(final.get());
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]