diff --git a/Sources/ZIPFoundation/Archive+MemoryFile.swift b/Sources/ZIPFoundation/Archive+MemoryFile.swift index 2d7060ec..246c8d00 100644 --- a/Sources/ZIPFoundation/Archive+MemoryFile.swift +++ b/Sources/ZIPFoundation/Archive+MemoryFile.swift @@ -35,7 +35,7 @@ extension Archive { : funopen(cookie.toOpaque(), readStub, nil, seekStub, closeStub)! #else let stubs = cookie_io_functions_t(read: readStub, write: writeStub, seek: seekStub, close: closeStub) - let result = fopencookie(cookie.toOpaque(), mode, stubs)! + let result = fopencookie(cookie.toOpaque(), mode.posixMode, stubs)! #endif return result } diff --git a/Sources/ZIPFoundation/Archive.swift b/Sources/ZIPFoundation/Archive.swift index 89b71c11..e3839456 100644 --- a/Sources/ZIPFoundation/Archive.swift +++ b/Sources/ZIPFoundation/Archive.swift @@ -104,6 +104,14 @@ public final class Archive: Sequence { case update var isWritable: Bool { self != .read } + + var posixMode: String { + switch self { + case .read: return "rb" + case .create: return "wb+" + case .update: return "rb+" + } + } } /// The version of an `Archive`