// --------------------------------------------------------------------------- // XMLPlatformUtils: File system methods // --------------------------------------------------------------------------- XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath, MemoryManager* const manager) { // // NOTE: The path provided has always already been opened successfully, // so we know that its not some pathological freaky path. It comes in // in native format, and goes out as Unicode always // char* newSrc = XMLString::transcode(srcPath, manager); ArrayJanitor<char> janText(newSrc, manager); // Use a local buffer that is big enough for the largest legal path // Without the *3 we get exceptions with gcc on OpenServer 5.0.5/6 when // relative paths are passed in char *absPath = (char*) manager->allocate ( (pathconf(newSrc, _PC_PATH_MAX)*3) * sizeof(char) );//new char[pathconf(newSrc, _PC_PATH_MAX)*3]; ArrayJanitor<char> janText2(absPath, manager); // Get the absolute path char* retPath = realpath(newSrc, absPath); if (!retPath) { ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetBasePathName, manager); } return XMLString::transcode(absPath, manager); }
FileHandle XMLPlatformUtils::openFileToWrite(const XMLCh* const fileName , MemoryManager* const manager) { const char* tmpFileName = XMLString::transcode(fileName, manager); ArrayJanitor<char> janText((char*)tmpFileName, manager); return fopen( tmpFileName , "wb" ); }
FileHandle XMLPlatformUtils::openFileToWrite(const XMLCh* const fileName , MemoryManager* const manager) { if (fileName == NULL) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::CPtr_PointerIsZero, manager); const char* tmpFileName = XMLString::transcode(fileName, manager); ArrayJanitor<char> janText((char*)tmpFileName, manager); return fopen( tmpFileName , "w" ); }
static void WriteUStrStdOut( const XMLCh* const toWrite) { char* tmpVal = XMLString::transcode(toWrite, XMLPlatformUtils::fgMemoryManager); ArrayJanitor<char> janText(tmpVal, XMLPlatformUtils::fgMemoryManager); if (fputs(tmpVal, stdout) == EOF) { ThrowXML(XMLPlatformUtilsException, XMLExcepts::Strm_StdOutWriteFailure); } }
FileHandle XMLPlatformUtils::openFile(const XMLCh* const fileName , MemoryManager* const manager) { const char* tmpFileName = XMLString::transcode(fileName, manager); ArrayJanitor<char> janText((char*)tmpFileName, manager); FileHandle retVal = (FILE*)fopen( tmpFileName , "rb" ); if (retVal == NULL) return 0; return retVal; }
FileHandle XMLPlatformUtils::openFileToWrite(const XMLCh* const fileName , MemoryManager* const manager) { const char* tmpFileName = XMLString::transcode(fileName, manager); ArrayJanitor<char> janText((char*)tmpFileName, manager); char posix_name[PATH_MAX + 1]; cygwin_conv_to_posix_path(tmpFileName, posix_name); return fopen( posix_name , "wb" ); }
FileHandle XMLPlatformUtils::openFile(const XMLCh* const fileName , MemoryManager* const manager) { const char* tmpFileName = XMLString::transcode(fileName, manager); ArrayJanitor<char> janText((char*)tmpFileName, manager); char posix_name[PATH_MAX + 1]; cygwin_conv_to_posix_path(tmpFileName, posix_name); FileHandle retVal = (FILE*)fopen( posix_name , "rb" ); if (retVal == NULL) return 0; return retVal; }
// --------------------------------------------------------------------------- // XMLPlatformUtils: File system methods // --------------------------------------------------------------------------- XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath, MemoryManager* const manager) { // // NOTE: The path provided has always already been opened successfully, // so we know that its not some pathological freaky path. It comes in // in native format, and goes out as Unicode always // char* newSrc = XMLString::transcode(srcPath, manager); ArrayJanitor<char> janText(newSrc, manager); // Use a local buffer that is big enough for the largest legal path char posix_name[PATH_MAX + 1]; // get the absolute path if (0 != cygwin_conv_to_full_posix_path(newSrc, posix_name)) { ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetBasePathName, manager); } return XMLString::transcode(posix_name, manager); }
// --------------------------------------------------------------------------- // XMLPlatformUtils: File system methods // --------------------------------------------------------------------------- XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath, MemoryManager* const manager) { // // NOTE: THe path provided has always already been opened successfully, // so we know that its not some pathological freaky path. It comes in // in native format, and goes out as Unicode always // char* newSrc = XMLString::transcode(srcPath, manager); ArrayJanitor<char> janText(newSrc, manager); char absPath[PATH_MAX + 1]; char* retPath = realpath(newSrc, &absPath[0]); if (!retPath) { ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetBasePathName, manager); } return XMLString::transcode(absPath, manager); }