[ https://issues.apache.org/jira/browse/XERCESC-1205?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Boris Kolpackov closed XERCESC-1205. ------------------------------------ Resolution: Fixed Fix Version/s: 3.0.1 Win98 is no longer supported. > primary document entity could not be opened - on Win98 > ------------------------------------------------------ > > Key: XERCESC-1205 > URL: https://issues.apache.org/jira/browse/XERCESC-1205 > Project: Xerces-C++ > Issue Type: Bug > Components: Utilities > Affects Versions: 2.1.0, 2.4.0, 2.5.0 > Environment: Together with Xalan. I have had the bug on Win98 (1st > and 2nd edition). Reading the code I think Win95 and WinME may have the same > problem. > Reporter: Florian Nowotny > Fix For: 3.0.1 > > > When I use an unc path as the input parameter of the constructor of Xalan's > XSLTInputSource( const char* ) > on Win98 systems Xerces raises the error: > The primary document entitiy could not be opened. > Id=\\server\shared\..path-to-xml-file > I traced through Xerces' code an found that > - the constructor of Xerces' InputSource( const XMLCh* const SystemId, > MemoryManager*) is called internally and the systemId is > file://///server/shared/... > - later in Win32PlatformUtils.cpp the Windows API method CreateFileA is > called and tmpName is //server/shared/... > BUT: CreateFileA can't open an UNC-Path with forward slashes on both > Win98-PCs that I have tested (Win98 1st and 2nd Edition). > It's unfriendly that the error message reports the file-to-open-path with > back slashes? > I fixed the problem by patching > xerces/src/xercesc/util/Platforms/Win32/Win32PlatformUtils.cpp (Xerces > version 2.5.0) in method > openFile(const XMLCh* const fileName, MemoryManager* const manager). > Here is my code beginning with line 326: > else > { > // > // We are Win 95 / 98. Take the Unicode file name back to (char *) > // so that we can open it. > // > char* tmpName = XMLString::transcode(nameToOpen, manager); > > // > // Bugfix: > // I'm replacing all forward slashes with backward slashes > // > int len = strlen(tmpName); > for ( int i = 0; i < len; ++i ) > { > if ( tmpName[i] == '/' ) > tmpName[i] = '\\'; > } > > retVal = ::CreateFileA > ( > tmpName > , GENERIC_READ > , FILE_SHARE_READ > , 0 > , OPEN_EXISTING > , FILE_FLAG_SEQUENTIAL_SCAN > , 0 > ); > manager->deallocate(tmpName);//delete [] tmpName; > } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: c-dev-unsubscr...@xerces.apache.org For additional commands, e-mail: c-dev-h...@xerces.apache.org