Skip to content

Commit d956aff

Browse files
authored
Merge pull request #3159 from compnerd/32-bits
Foundation: adjust types for bit-width differences
2 parents e04c5fc + d4687ca commit d956aff

File tree

6 files changed

+51
-47
lines changed

6 files changed

+51
-47
lines changed

Sources/Foundation/FileHandle.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ open class FileHandle : NSObject {
240240
let szFileSize: UInt64 = (UInt64(fiFileInfo.nFileSizeHigh) << 32) | UInt64(fiFileInfo.nFileSizeLow << 0)
241241
let szMapSize: UInt64 = Swift.min(UInt64(length), szFileSize)
242242
let pData: UnsafeMutableRawPointer =
243-
MapViewOfFile(hMapping, DWORD(FILE_MAP_READ), 0, 0, szMapSize)
243+
MapViewOfFile(hMapping, DWORD(FILE_MAP_READ), 0, 0, SIZE_T(szMapSize))
244244

245245
return NSData.NSDataReadResult(bytes: pData, length: Int(szMapSize)) { buffer, length in
246246
if !UnmapViewOfFile(buffer) {
@@ -883,7 +883,7 @@ extension FileHandle {
883883
var fileInfo = BY_HANDLE_FILE_INFORMATION()
884884
GetFileInformationByHandle(self._handle, &fileInfo)
885885
if fileInfo.dwFileAttributes & DWORD(FILE_ATTRIBUTE_DIRECTORY) == DWORD(FILE_ATTRIBUTE_DIRECTORY) {
886-
translatedError = ERROR_DIRECTORY_NOT_SUPPORTED
886+
translatedError = Int32(ERROR_DIRECTORY_NOT_SUPPORTED)
887887
}
888888
}
889889
userInfo["NSFileHandleError"] = Int(translatedError)

Sources/Foundation/FileManager+Win32.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,7 @@ extension FileManager {
584584

585585
if faAttributes.dwFileAttributes & DWORD(FILE_ATTRIBUTE_READONLY) == FILE_ATTRIBUTE_READONLY {
586586
if try !FileManager.default._fileSystemRepresentation(withPath: path, {
587-
SetFileAttributesW($0, faAttributes.dwFileAttributes & DWORD(bitPattern: ~FILE_ATTRIBUTE_READONLY))
587+
SetFileAttributesW($0, faAttributes.dwFileAttributes & ~DWORD(FILE_ATTRIBUTE_READONLY))
588588
}) {
589589
throw _NSErrorWithWindowsError(GetLastError(), reading: false, paths: [path])
590590
}
@@ -634,7 +634,7 @@ extension FileManager {
634634
itemPath = "\(currentDir)\\\(file)"
635635
if ffd.dwFileAttributes & DWORD(FILE_ATTRIBUTE_READONLY) == FILE_ATTRIBUTE_READONLY {
636636
if try !FileManager.default._fileSystemRepresentation(withPath: itemPath, {
637-
SetFileAttributesW($0, ffd.dwFileAttributes & DWORD(bitPattern: ~FILE_ATTRIBUTE_READONLY))
637+
SetFileAttributesW($0, ffd.dwFileAttributes & ~DWORD(FILE_ATTRIBUTE_READONLY))
638638
}) {
639639
throw _NSErrorWithWindowsError(GetLastError(), reading: false, paths: [file])
640640
}
@@ -776,11 +776,11 @@ extension FileManager {
776776
statInfo.st_gid = 0
777777
statInfo.st_atime = info.ftLastAccessTime.time_t
778778
statInfo.st_ctime = info.ftCreationTime.time_t
779-
statInfo.st_dev = info.dwVolumeSerialNumber
779+
statInfo.st_dev = _dev_t(info.dwVolumeSerialNumber)
780780
// The inode, and therefore st_ino, has no meaning in the FAT, HPFS, or
781781
// NTFS file systems. -- docs.microsoft.com
782782
statInfo.st_ino = 0
783-
statInfo.st_rdev = info.dwVolumeSerialNumber
783+
statInfo.st_rdev = _dev_t(info.dwVolumeSerialNumber)
784784

785785
let isReparsePoint = info.dwFileAttributes & DWORD(FILE_ATTRIBUTE_REPARSE_POINT) != 0
786786
let isDir = info.dwFileAttributes & DWORD(FILE_ATTRIBUTE_DIRECTORY) != 0
@@ -799,7 +799,7 @@ extension FileManager {
799799
guard info.nFileSizeHigh == 0 else {
800800
throw _NSErrorWithErrno(EOVERFLOW, reading: true, path: path)
801801
}
802-
statInfo.st_size = Int32(info.nFileSizeLow)
802+
statInfo.st_size = _off_t(info.nFileSizeLow)
803803
// Uid is always 0 on Windows systems
804804
statInfo.st_uid = 0
805805

Sources/Foundation/FileManager.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,7 +431,7 @@ open class FileManager : NSObject {
431431

432432
let hiddenAttrs = isHidden
433433
? attrs | DWORD(FILE_ATTRIBUTE_HIDDEN)
434-
: attrs & DWORD(bitPattern: ~FILE_ATTRIBUTE_HIDDEN)
434+
: attrs & ~DWORD(FILE_ATTRIBUTE_HIDDEN)
435435
guard SetFileAttributesW(fsRep, hiddenAttrs) else {
436436
throw _NSErrorWithWindowsError(GetLastError(), reading: false, paths: [path])
437437
}

Sources/Foundation/FoundationErrors.swift

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -213,58 +213,58 @@ internal let _NSWindowsErrorDomain = "org.swift.Foundation.WindowsError"
213213

214214
internal func _NSErrorWithWindowsError(_ windowsError: DWORD, reading: Bool, paths: [String]? = nil) -> NSError {
215215
var cocoaError : CocoaError.Code
216-
switch Int32(bitPattern: windowsError) {
217-
case ERROR_LOCK_VIOLATION: cocoaError = .fileLocking
218-
case ERROR_NOT_LOCKED: cocoaError = .fileLocking
219-
case ERROR_LOCK_FAILED: cocoaError = .fileLocking
220-
case ERROR_INVALID_EXE_SIGNATURE: cocoaError = .executableNotLoadable
221-
case ERROR_EXE_MARKED_INVALID: cocoaError = .executableNotLoadable
222-
case ERROR_BAD_EXE_FORMAT: cocoaError = .executableNotLoadable
223-
case ERROR_BAD_EXE_FORMAT: cocoaError = .executableNotLoadable
224-
case ERROR_LOCKED: cocoaError = .fileLocking
216+
switch windowsError {
217+
case DWORD(ERROR_LOCK_VIOLATION): cocoaError = .fileLocking
218+
case DWORD(ERROR_NOT_LOCKED): cocoaError = .fileLocking
219+
case DWORD(ERROR_LOCK_FAILED): cocoaError = .fileLocking
220+
case DWORD(ERROR_INVALID_EXE_SIGNATURE): cocoaError = .executableNotLoadable
221+
case DWORD(ERROR_EXE_MARKED_INVALID): cocoaError = .executableNotLoadable
222+
case DWORD(ERROR_BAD_EXE_FORMAT): cocoaError = .executableNotLoadable
223+
case DWORD(ERROR_BAD_EXE_FORMAT): cocoaError = .executableNotLoadable
224+
case DWORD(ERROR_LOCKED): cocoaError = .fileLocking
225225
default:
226226
if reading {
227-
switch Int32(bitPattern: windowsError) {
228-
case ERROR_FILE_NOT_FOUND, ERROR_PATH_NOT_FOUND:
227+
switch windowsError {
228+
case DWORD(ERROR_FILE_NOT_FOUND), DWORD(ERROR_PATH_NOT_FOUND):
229229
// On an empty path, Windows will return FILE/PATH_NOT_FOUND
230230
// rather than invalid path as posix does
231231
cocoaError = paths?.contains("") ?? false
232232
? .fileReadInvalidFileName
233233
: .fileReadNoSuchFile
234-
case ERROR_ACCESS_DENIED: cocoaError = .fileReadNoPermission
235-
case ERROR_INVALID_ACCESS: cocoaError = .fileReadNoPermission
236-
case ERROR_INVALID_DRIVE: cocoaError = .fileReadNoSuchFile
237-
case ERROR_SHARING_VIOLATION: cocoaError = .fileReadNoPermission
238-
case ERROR_INVALID_NAME: cocoaError = .fileReadInvalidFileName
239-
case ERROR_LABEL_TOO_LONG: cocoaError = .fileReadInvalidFileName
240-
case ERROR_BAD_PATHNAME: cocoaError = .fileReadInvalidFileName
241-
case ERROR_FILENAME_EXCED_RANGE: cocoaError = .fileReadInvalidFileName
242-
case ERROR_DIRECTORY: cocoaError = .fileReadInvalidFileName
234+
case DWORD(ERROR_ACCESS_DENIED): cocoaError = .fileReadNoPermission
235+
case DWORD(ERROR_INVALID_ACCESS): cocoaError = .fileReadNoPermission
236+
case DWORD(ERROR_INVALID_DRIVE): cocoaError = .fileReadNoSuchFile
237+
case DWORD(ERROR_SHARING_VIOLATION): cocoaError = .fileReadNoPermission
238+
case DWORD(ERROR_INVALID_NAME): cocoaError = .fileReadInvalidFileName
239+
case DWORD(ERROR_LABEL_TOO_LONG): cocoaError = .fileReadInvalidFileName
240+
case DWORD(ERROR_BAD_PATHNAME): cocoaError = .fileReadInvalidFileName
241+
case DWORD(ERROR_FILENAME_EXCED_RANGE): cocoaError = .fileReadInvalidFileName
242+
case DWORD(ERROR_DIRECTORY): cocoaError = .fileReadInvalidFileName
243243
default: cocoaError = .fileReadUnknown
244244
}
245245
} else {
246-
switch Int32(bitPattern: windowsError) {
247-
case ERROR_FILE_NOT_FOUND, ERROR_PATH_NOT_FOUND:
246+
switch windowsError {
247+
case DWORD(ERROR_FILE_NOT_FOUND), DWORD(ERROR_PATH_NOT_FOUND):
248248
// On an empty path, Windows will return FILE/PATH_NOT_FOUND
249249
// rather than invalid path as posix does
250250
cocoaError = paths?.contains("") ?? false
251251
? .fileWriteInvalidFileName
252252
: .fileNoSuchFile
253-
case ERROR_ACCESS_DENIED: cocoaError = .fileWriteNoPermission
254-
case ERROR_INVALID_ACCESS: cocoaError = .fileWriteNoPermission
255-
case ERROR_INVALID_DRIVE: cocoaError = .fileNoSuchFile
256-
case ERROR_WRITE_PROTECT: cocoaError = .fileWriteVolumeReadOnly
257-
case ERROR_WRITE_FAULT: cocoaError = .fileWriteNoPermission
258-
case ERROR_SHARING_VIOLATION: cocoaError = .fileWriteNoPermission
259-
case ERROR_FILE_EXISTS: cocoaError = .fileWriteFileExists
260-
case ERROR_DISK_FULL: cocoaError = .fileWriteOutOfSpace
261-
case ERROR_INVALID_NAME: cocoaError = .fileWriteInvalidFileName
262-
case ERROR_LABEL_TOO_LONG: cocoaError = .fileWriteInvalidFileName
263-
case ERROR_BAD_PATHNAME: cocoaError = .fileWriteInvalidFileName
264-
case ERROR_ALREADY_EXISTS: cocoaError = .fileWriteFileExists
265-
case ERROR_FILENAME_EXCED_RANGE: cocoaError = .fileWriteInvalidFileName
266-
case ERROR_DIRECTORY: cocoaError = .fileWriteInvalidFileName
267-
case ERROR_DISK_RESOURCES_EXHAUSTED: cocoaError = .fileWriteOutOfSpace
253+
case DWORD(ERROR_ACCESS_DENIED): cocoaError = .fileWriteNoPermission
254+
case DWORD(ERROR_INVALID_ACCESS): cocoaError = .fileWriteNoPermission
255+
case DWORD(ERROR_INVALID_DRIVE): cocoaError = .fileNoSuchFile
256+
case DWORD(ERROR_WRITE_PROTECT): cocoaError = .fileWriteVolumeReadOnly
257+
case DWORD(ERROR_WRITE_FAULT): cocoaError = .fileWriteNoPermission
258+
case DWORD(ERROR_SHARING_VIOLATION): cocoaError = .fileWriteNoPermission
259+
case DWORD(ERROR_FILE_EXISTS): cocoaError = .fileWriteFileExists
260+
case DWORD(ERROR_DISK_FULL): cocoaError = .fileWriteOutOfSpace
261+
case DWORD(ERROR_INVALID_NAME): cocoaError = .fileWriteInvalidFileName
262+
case DWORD(ERROR_LABEL_TOO_LONG): cocoaError = .fileWriteInvalidFileName
263+
case DWORD(ERROR_BAD_PATHNAME): cocoaError = .fileWriteInvalidFileName
264+
case DWORD(ERROR_ALREADY_EXISTS): cocoaError = .fileWriteFileExists
265+
case DWORD(ERROR_FILENAME_EXCED_RANGE): cocoaError = .fileWriteInvalidFileName
266+
case DWORD(ERROR_DIRECTORY): cocoaError = .fileWriteInvalidFileName
267+
case DWORD(ERROR_DISK_RESOURCES_EXHAUSTED): cocoaError = .fileWriteOutOfSpace
268268
default: cocoaError = .fileWriteUnknown
269269
}
270270
}

Sources/Foundation/Port.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,11 @@ fileprivate extension sockaddr_in6 {
239239
self.init(settingLength: ())
240240
self.sin6_family = sa_family_t(AF_INET6)
241241
self.sin6_port = in_port_t(port)
242+
#if os(Windows)
243+
self.sin6_flowinfo = ULONG(flowInfo)
244+
#else
242245
self.sin6_flowinfo = flowInfo
246+
#endif
243247
withUnsafeMutableBytes(of: &self.sin6_addr) { (buffer) in
244248
withUnsafeBytes(of: in6Addr) { buffer.copyMemory(from: $0) }
245249
}

Sources/Foundation/Process.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ open class Process: NSObject {
447447
}
448448

449449
var value: u_long = 1
450-
if ioctlsocket(first, FIONBIO, &value) == SOCKET_ERROR {
450+
if ioctlsocket(first, CLong(FIONBIO), &value) == SOCKET_ERROR {
451451
closesocket(first)
452452
return (first: INVALID_SOCKET, second: INVALID_SOCKET)
453453
}
@@ -638,7 +638,7 @@ open class Process: NSObject {
638638
process._terminationStatus = Int32(dwExitCode & 0x3FFFFFFF)
639639
process._terminationReason = .uncaughtSignal
640640
} else {
641-
process._terminationStatus = Int32(bitPattern: dwExitCode)
641+
process._terminationStatus = Int32(bitPattern: UInt32(dwExitCode))
642642
process._terminationReason = .exit
643643
}
644644

0 commit comments

Comments
 (0)