// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
-
#include <FSD_CmpFile.hxx>
+
#include <OSD.hxx>
+#include <OSD_OpenFile.hxx>
#include <Standard_PCharacter.hxx>
#include <Storage_BaseDriver.hxx>
#include <Storage_StreamExtCharParityError.hxx>
SetName(aName);
if (OpenMode() == Storage_VSNone) {
-
-#if defined(_WNT32)
- TCollection_ExtendedString aWName(aName);
- if (aMode == Storage_VSRead) {
- myStream.open((const wchar_t*)aWName.ToExtString(),ios::in|ios::binary); // ios::nocreate is not portable
- }
- else if (aMode == Storage_VSWrite) {
- myStream.open((const wchar_t*)aWName.ToExtString(),ios::out|ios::binary);
- }
- else if (aMode == Storage_VSReadWrite) {
- myStream.open((const wchar_t*)aWName.ToExtString(),ios::in|ios::out|ios::binary);
- }
-#elif !defined(IRIX) && !defined(DECOSF1)
- if (aMode == Storage_VSRead) {
- myStream.open(aName.ToCString(),ios::in|ios::binary); // ios::nocreate is not portable
+ std::ios_base::openmode anOpenMode = std::ios_base::openmode(0);
+ switch (aMode)
+ {
+ case Storage_VSNone:
+ {
+ break;
+ }
+ case Storage_VSRead:
+ {
+ // ios::nocreate is not portable
+ #if !defined(IRIX) && !defined(DECOSF1)
+ anOpenMode = ios::in | ios::binary;
+ #else
+ anOpenMode = ios::in;
+ #endif
+ break;
+ }
+ case Storage_VSWrite:
+ {
+ #if !defined(IRIX) && !defined(DECOSF1)
+ anOpenMode = ios::out | ios::binary;
+ #else
+ anOpenMode = ios::out;
+ #endif
+ break;
+ }
+ case Storage_VSReadWrite:
+ {
+ #if !defined(IRIX) && !defined(DECOSF1)
+ anOpenMode = ios::in | ios::out | ios::binary;
+ #else
+ anOpenMode = ios::in | ios::out;
+ #endif
+ break;
+ }
}
- else if (aMode == Storage_VSWrite) {
- myStream.open(aName.ToCString(),ios::out|ios::binary);
+ if (anOpenMode != 0)
+ {
+ OSD_OpenStream (myStream, aName, anOpenMode);
}
- else if (aMode == Storage_VSReadWrite) {
- myStream.open(aName.ToCString(),ios::in|ios::out|ios::binary);
- }
-#else
- if (aMode == Storage_VSRead) {
- myStream.open(aName.ToCString(),ios::in); // ios::nocreate is not portable
- }
- else if (aMode == Storage_VSWrite) {
- myStream.open(aName.ToCString(),ios::out);
- }
- else if (aMode == Storage_VSReadWrite) {
- myStream.open(aName.ToCString(),ios::in|ios::out);
- }
-#endif
-
if (myStream.fail()) {
result = Storage_VSOpenError;
}