Skip to content

Commit 38d7233

Browse files
committed
[Linux] Glibc's DIR doesn't get imported into Swift.
Swift ends up with OpaquePointer instead of a typed pointer. rdar://125087707
1 parent b45ea64 commit 38d7233

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

Sources/System/FilePath/FilePathTempPosix.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ internal func _recursiveRemove(
6060
fileprivate func impl_opendirat(
6161
_ dirfd: CInt,
6262
_ name: UnsafePointer<CInterop.PlatformChar>
63-
) -> UnsafeMutablePointer<system_DIR>? {
63+
) -> system_DIRPtr? {
6464
let fd = system_openat(dirfd, name,
6565
FileDescriptor.AccessMode.readOnly.rawValue
6666
| FileDescriptor.OpenOptions.directory.rawValue)

Sources/System/Internals/Syscalls.swift

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,11 @@ internal func system_confstr(
167167
internal let SYSTEM_AT_REMOVE_DIR = AT_REMOVEDIR
168168
internal let SYSTEM_DT_DIR = DT_DIR
169169
internal typealias system_dirent = dirent
170-
internal typealias system_DIR = DIR
170+
#if os(Linux)
171+
internal typealias system_DIRPtr = OpaquePointer
172+
#else
173+
internal typealias system_DIRPtr = UnsafeMutablePointer<DIR>
174+
#endif
171175

172176
internal func system_unlinkat(
173177
_ fd: CInt,
@@ -182,24 +186,24 @@ return unlinkat(fd, path, flag)
182186

183187
internal func system_fdopendir(
184188
_ fd: CInt
185-
) -> UnsafeMutablePointer<DIR>? {
189+
) -> system_DIRPtr? {
186190
return fdopendir(fd)
187191
}
188192

189193
internal func system_readdir(
190-
_ dir: UnsafeMutablePointer<DIR>
194+
_ dir: system_DIRPtr
191195
) -> UnsafeMutablePointer<dirent>? {
192196
return readdir(dir)
193197
}
194198

195199
internal func system_rewinddir(
196-
_ dir: UnsafeMutablePointer<DIR>
200+
_ dir: system_DIRPtr
197201
) {
198202
return rewinddir(dir)
199203
}
200204

201205
internal func system_closedir(
202-
_ dir: UnsafeMutablePointer<DIR>
206+
_ dir: system_DIRPtr
203207
) -> CInt {
204208
return closedir(dir)
205209
}

0 commit comments

Comments
 (0)