فهرست منبع

Fix File OpenOrCreate

disarray2077 4 سال پیش
والد
کامیت
a71962a5a8

+ 2 - 2
BeefLibs/corlib/src/IO/FileStream.bf

@@ -178,7 +178,7 @@ namespace System.IO
 			case .Open:
 				createKind = .OpenExisting;
 			case .OpenOrCreate:
-				createKind = .CreateAlways;
+				createKind = .OpenAlways;
 			case .Truncate:
 				createKind = .CreateAlways;
 				createFlags |= .Truncate;
@@ -337,7 +337,7 @@ namespace System.IO
 			case .Open:
 				createKind = .OpenExisting;
 			case .OpenOrCreate:
-				createKind = .CreateAlways;
+				createKind = .OpenAlways;
 			case .Truncate:
 				createKind = .CreateAlways;
 				createFlags |= .Truncate;

+ 1 - 0
BeefLibs/corlib/src/Platform.bf

@@ -271,6 +271,7 @@ namespace System
 			CreateAlways,
 			CreateIfNotExists,
 			OpenExisting,
+			OpenAlways,
 		};
 
 		public enum BfpFileCreateFlags : int32

+ 1 - 0
BeefySysLib/platform/PlatformInterface.h

@@ -344,6 +344,7 @@ enum BfpFileCreateKind
 	BfpFileCreateKind_CreateAlways,
 	BfpFileCreateKind_CreateIfNotExists,
 	BfpFileCreateKind_OpenExisting,
+	BfpFileCreateKind_OpenAlways
 };
 
 enum BfpFileCreateFlags

+ 4 - 0
BeefySysLib/platform/posix/PosixCommon.cpp

@@ -1858,6 +1858,10 @@ BFP_EXPORT BfpFile* BFP_CALLTYPE BfpFile_Create(const char* inName, BfpFileCreat
 		}
         return result;
 	};
+    
+    // POSIX doesn't need the OpenAlways kind.
+    if (createKind == BfpFileCreateKind_OpenAlways)
+        createKind = BfpFileCreateKind_CreateAlways;
 
 	BfpFile* bfpFile = NULL;
 

+ 5 - 1
BeefySysLib/platform/win/Platform.cpp

@@ -2741,9 +2741,13 @@ BFP_EXPORT BfpFile* BFP_CALLTYPE BfpFile_Create(const char* path, BfpFileCreateK
 			creationDisposition = CREATE_ALWAYS;
 	}
 	else if (createKind == BfpFileCreateKind_CreateIfNotExists)
-	{		
+	{
 		creationDisposition = CREATE_NEW;
 	}
+	else if (createKind == BfpFileCreateKind_OpenAlways)
+	{
+		creationDisposition = OPEN_ALWAYS;
+	}
 	else
 	{
 		creationDisposition = OPEN_EXISTING;

+ 1 - 0
IDE/mintest/minlib/src/System/Platform.bf

@@ -234,6 +234,7 @@ namespace System
 			CreateAlways,
 			CreateIfNotExists,
 			OpenExisting,
+			OpenAlways,
 		};
 
 		public enum BfpFileCreateFlags : int32