Skip to content

Commit 38b42c1

Browse files
finagolfinuraimo
andauthored
Fix compiling for 32-bit ARM platforms (#204)
* Fix compiling for 32-bit ARM platforms * Fix FD_SET and FD_ISSET on arm32 Co-authored-by: Umberto Raimondi <[email protected]>
1 parent e626b7e commit 38b42c1

File tree

1 file changed

+51
-5
lines changed

1 file changed

+51
-5
lines changed

Sources/TSCUtility/FSWatch.swift

Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -428,11 +428,21 @@ public final class Inotify {
428428
// FIXME: <rdar://problem/45794219> Swift should provide shims for FD_ macros
429429

430430
private func FD_ZERO(_ set: inout fd_set) {
431-
#if os(Android)
432-
set.fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
433-
#else
434-
set.__fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
435-
#endif
431+
#if os(Android)
432+
#if arch(arm)
433+
set.fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
434+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
435+
#else
436+
set.fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
437+
#endif
438+
#else
439+
#if arch(arm)
440+
set.__fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
441+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
442+
#else
443+
set.__fds_bits = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
444+
#endif
445+
#endif
436446
}
437447

438448
private func FD_SET(_ fd: Int32, _ set: inout fd_set) {
@@ -462,6 +472,24 @@ private func FD_SET(_ fd: Int32, _ set: inout fd_set) {
462472
case 13: fd_bits.13 = fd_bits.13 | mask
463473
case 14: fd_bits.14 = fd_bits.14 | mask
464474
case 15: fd_bits.15 = fd_bits.15 | mask
475+
#if arch(arm)
476+
case 16: fd_bits.16 = fd_bits.16 | mask
477+
case 17: fd_bits.17 = fd_bits.17 | mask
478+
case 18: fd_bits.18 = fd_bits.18 | mask
479+
case 19: fd_bits.19 = fd_bits.19 | mask
480+
case 20: fd_bits.20 = fd_bits.20 | mask
481+
case 21: fd_bits.21 = fd_bits.21 | mask
482+
case 22: fd_bits.22 = fd_bits.22 | mask
483+
case 23: fd_bits.23 = fd_bits.23 | mask
484+
case 24: fd_bits.24 = fd_bits.24 | mask
485+
case 25: fd_bits.25 = fd_bits.25 | mask
486+
case 26: fd_bits.26 = fd_bits.26 | mask
487+
case 27: fd_bits.27 = fd_bits.27 | mask
488+
case 28: fd_bits.28 = fd_bits.28 | mask
489+
case 29: fd_bits.29 = fd_bits.29 | mask
490+
case 30: fd_bits.30 = fd_bits.30 | mask
491+
case 31: fd_bits.31 = fd_bits.31 | mask
492+
#endif
465493
default: break
466494
}
467495
#if os(Android)
@@ -498,6 +526,24 @@ private func FD_ISSET(_ fd: Int32, _ set: inout fd_set) -> Bool {
498526
case 13: return fd_bits.13 & mask != 0
499527
case 14: return fd_bits.14 & mask != 0
500528
case 15: return fd_bits.15 & mask != 0
529+
#if arch(arm)
530+
case 16: return fd_bits.16 & mask != 0
531+
case 17: return fd_bits.17 & mask != 0
532+
case 18: return fd_bits.18 & mask != 0
533+
case 19: return fd_bits.19 & mask != 0
534+
case 20: return fd_bits.20 & mask != 0
535+
case 21: return fd_bits.21 & mask != 0
536+
case 22: return fd_bits.22 & mask != 0
537+
case 23: return fd_bits.23 & mask != 0
538+
case 24: return fd_bits.24 & mask != 0
539+
case 25: return fd_bits.25 & mask != 0
540+
case 26: return fd_bits.26 & mask != 0
541+
case 27: return fd_bits.27 & mask != 0
542+
case 28: return fd_bits.28 & mask != 0
543+
case 29: return fd_bits.29 & mask != 0
544+
case 30: return fd_bits.30 & mask != 0
545+
case 31: return fd_bits.31 & mask != 0
546+
#endif
501547
default: return false
502548
}
503549
}

0 commit comments

Comments
 (0)