@@ -99,7 +99,9 @@ extension DirEntry: WASIDir, FdWASIEntry {
9999 }
100100
101101 func removeFile( atPath path: String ) throws {
102- let ( dir, basename) = try SandboxPrimitives . openParent ( start: fd, path: path)
102+ let result = try SandboxPrimitives . openParent ( start: fd, path: path)
103+ let dir = result. parentFd
104+ let basename = result. basename
103105 try WASIAbi . Errno. translatingPlatformErrno {
104106 try dir. remove ( at: FilePath ( basename) , options: [ ] )
105107 }
@@ -109,17 +111,21 @@ extension DirEntry: WASIDir, FdWASIEntry {
109111 #if os(Windows)
110112 throw WASIAbi . Errno. ENOSYS
111113 #else
112- let ( dir, basename) = try SandboxPrimitives . openParent ( start: fd, path: path)
114+ let result = try SandboxPrimitives . openParent ( start: fd, path: path)
115+ let dir = result. parentFd
116+ let basename = result. basename
113117 try WASIAbi . Errno. translatingPlatformErrno {
114118 try dir. remove ( at: FilePath ( basename) , options: . removeDirectory)
115119 }
116120 #endif
117121 }
118122
119123 func symlink( from sourcePath: String , to destPath: String ) throws {
120- let ( destDir , destBasename ) = try SandboxPrimitives . openParent (
124+ let result = try SandboxPrimitives . openParent (
121125 start: fd, path: destPath
122126 )
127+ let destDir = result. parentFd
128+ let destBasename = result. basename
123129 try WASIAbi . Errno. translatingPlatformErrno {
124130 try destDir. createSymlink ( original: FilePath ( sourcePath) , link: FilePath ( destBasename) )
125131 }
@@ -142,12 +148,16 @@ extension DirEntry: WASIDir, FdWASIEntry {
142148 let oldPath = SandboxPrimitives . stripDirSuffix ( sourcePath)
143149 let newPath = SandboxPrimitives . stripDirSuffix ( destPath)
144150
145- let ( sourceDir , sourceBasename ) = try SandboxPrimitives . openParent (
151+ let sourceResult = try SandboxPrimitives . openParent (
146152 start: fd, path: oldPath
147153 )
148- let ( destDir, destBasename) = try SandboxPrimitives . openParent (
154+ let sourceDir = sourceResult. parentFd
155+ let sourceBasename = sourceResult. basename
156+ let destResult = try SandboxPrimitives . openParent (
149157 start: newDir. fd, path: newPath
150158 )
159+ let destDir = destResult. parentFd
160+ let destBasename = destResult. basename
151161
152162 // Re-append a slash if the original path had one
153163 let finalSourceBasename = oldHasTrailingSlash ? sourceBasename + " / " : sourceBasename
@@ -204,7 +214,9 @@ extension DirEntry: WASIDir, FdWASIEntry {
204214 }
205215
206216 func createDirectory( atPath path: String ) throws {
207- let ( dir, basename) = try SandboxPrimitives . openParent ( start: fd, path: path)
217+ let result = try SandboxPrimitives . openParent ( start: fd, path: path)
218+ let dir = result. parentFd
219+ let basename = result. basename
208220 try WASIAbi . Errno. translatingPlatformErrno {
209221 try dir. createDirectory ( at: FilePath ( basename) , permissions: . ownerReadWriteExecute)
210222 }
@@ -218,7 +230,9 @@ extension DirEntry: WASIDir, FdWASIEntry {
218230 if !symlinkFollow {
219231 options. insert ( . noFollow)
220232 }
221- let ( dir, basename) = try SandboxPrimitives . openParent ( start: fd, path: path)
233+ let result = try SandboxPrimitives . openParent ( start: fd, path: path)
234+ let dir = result. parentFd
235+ let basename = result. basename
222236 let attributes = try basename. withCString { cBasename in
223237 try WASIAbi . Errno. translatingPlatformErrno {
224238 try dir. attributes ( at: cBasename, options: options)
0 commit comments