Skip to content

Commit d840648

Browse files
authored
Merge pull request #2113 from colemancda/posixErrorFix
Fixed `POSIXError.Code` for Linux
2 parents 7c273e1 + 767f9c5 commit d840648

File tree

1 file changed

+41
-118
lines changed

1 file changed

+41
-118
lines changed

Foundation/NSError.swift

Lines changed: 41 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,13 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13+
#if canImport(Darwin)
14+
import Darwin
15+
#elseif canImport(Glibc)
16+
import Glibc
17+
#elseif canImport(MSVCRT)
18+
import MSVCRT
19+
#endif
1320

1421
import CoreFoundation
1522

@@ -899,6 +906,7 @@ extension URLError {
899906

900907
/// Describes an error in the POSIX error domain.
901908
public struct POSIXError : _BridgedStoredNSError {
909+
902910
public let _nsError: NSError
903911

904912
public init(_nsError error: NSError) {
@@ -907,117 +915,12 @@ public struct POSIXError : _BridgedStoredNSError {
907915
}
908916

909917
public static var _nsErrorDomain: String { return NSPOSIXErrorDomain }
918+
919+
public typealias Code = POSIXErrorCode
920+
}
910921

911-
public enum Code : Int, _ErrorCodeProtocol {
912-
public typealias _ErrorType = POSIXError
913-
914-
case EPERM
915-
case ENOENT
916-
case ESRCH
917-
case EINTR
918-
case EIO
919-
case ENXIO
920-
case E2BIG
921-
case ENOEXEC
922-
case EBADF
923-
case ECHILD
924-
case EDEADLK
925-
case ENOMEM
926-
case EACCES
927-
case EFAULT
928-
case ENOTBLK
929-
case EBUSY
930-
case EEXIST
931-
case EXDEV
932-
case ENODEV
933-
case ENOTDIR
934-
case EISDIR
935-
case EINVAL
936-
case ENFILE
937-
case EMFILE
938-
case ENOTTY
939-
case ETXTBSY
940-
case EFBIG
941-
case ENOSPC
942-
case ESPIPE
943-
case EROFS
944-
case EMLINK
945-
case EPIPE
946-
case EDOM
947-
case ERANGE
948-
case EAGAIN
949-
case EWOULDBLOCK
950-
case EINPROGRESS
951-
case EALREADY
952-
case ENOTSOCK
953-
case EDESTADDRREQ
954-
case EMSGSIZE
955-
case EPROTOTYPE
956-
case ENOPROTOOPT
957-
case EPROTONOSUPPORT
958-
case ESOCKTNOSUPPORT
959-
case ENOTSUP
960-
case EPFNOSUPPORT
961-
case EAFNOSUPPORT
962-
case EADDRINUSE
963-
case EADDRNOTAVAIL
964-
case ENETDOWN
965-
case ENETUNREACH
966-
case ENETRESET
967-
case ECONNABORTED
968-
case ECONNRESET
969-
case ENOBUFS
970-
case EISCONN
971-
case ENOTCONN
972-
case ESHUTDOWN
973-
case ETOOMANYREFS
974-
case ETIMEDOUT
975-
case ECONNREFUSED
976-
case ELOOP
977-
case ENAMETOOLONG
978-
case EHOSTDOWN
979-
case EHOSTUNREACH
980-
case ENOTEMPTY
981-
case EPROCLIM
982-
case EUSERS
983-
case EDQUOT
984-
case ESTALE
985-
case EREMOTE
986-
case EBADRPC
987-
case ERPCMISMATCH
988-
case EPROGUNAVAIL
989-
case EPROGMISMATCH
990-
case EPROCUNAVAIL
991-
case ENOLCK
992-
case ENOSYS
993-
case EFTYPE
994-
case EAUTH
995-
case ENEEDAUTH
996-
case EPWROFF
997-
case EDEVERR
998-
case EOVERFLOW
999-
case EBADEXEC
1000-
case EBADARCH
1001-
case ESHLIBVERS
1002-
case EBADMACHO
1003-
case ECANCELED
1004-
case EIDRM
1005-
case ENOMSG
1006-
case EILSEQ
1007-
case ENOATTR
1008-
case EBADMSG
1009-
case EMULTIHOP
1010-
case ENODATA
1011-
case ENOLINK
1012-
case ENOSR
1013-
case ENOSTR
1014-
case EPROTO
1015-
case ETIME
1016-
case ENOPOLICY
1017-
case ENOTRECOVERABLE
1018-
case EOWNERDEAD
1019-
case EQFULL
1020-
}
922+
extension POSIXErrorCode: _ErrorCodeProtocol {
923+
public typealias _ErrorType = POSIXError
1021924
}
1022925

1023926
extension POSIXError {
@@ -1162,8 +1065,10 @@ extension POSIXError {
11621065
/// Socket type not supported.
11631066
public static var ESOCKTNOSUPPORT: POSIXError.Code { return .ESOCKTNOSUPPORT }
11641067

1068+
#if canImport(Darwin)
11651069
/// Operation not supported.
11661070
public static var ENOTSUP: POSIXError.Code { return .ENOTSUP }
1071+
#endif
11671072

11681073
/// Protocol family not supported.
11691074
public static var EPFNOSUPPORT: POSIXError.Code { return .EPFNOSUPPORT }
@@ -1232,9 +1137,11 @@ extension POSIXError {
12321137

12331138
/// Quotas
12341139

1140+
#if canImport(Darwin)
12351141
/// Too many processes.
12361142
public static var EPROCLIM: POSIXError.Code { return .EPROCLIM }
1237-
1143+
#endif
1144+
12381145
/// Too many users.
12391146
public static var EUSERS: POSIXError.Code { return .EUSERS }
12401147

@@ -1249,6 +1156,7 @@ extension POSIXError {
12491156
/// Too many levels of remote in path.
12501157
public static var EREMOTE: POSIXError.Code { return .EREMOTE }
12511158

1159+
#if canImport(Darwin)
12521160
/// RPC struct is bad.
12531161
public static var EBADRPC: POSIXError.Code { return .EBADRPC }
12541162

@@ -1263,13 +1171,15 @@ extension POSIXError {
12631171

12641172
/// Bad procedure for program.
12651173
public static var EPROCUNAVAIL: POSIXError.Code { return .EPROCUNAVAIL }
1266-
1174+
#endif
1175+
12671176
/// No locks available.
12681177
public static var ENOLCK: POSIXError.Code { return .ENOLCK }
12691178

12701179
/// Function not implemented.
12711180
public static var ENOSYS: POSIXError.Code { return .ENOSYS }
1272-
1181+
1182+
#if canImport(Darwin)
12731183
/// Inappropriate file type or format.
12741184
public static var EFTYPE: POSIXError.Code { return .EFTYPE }
12751185

@@ -1278,32 +1188,39 @@ extension POSIXError {
12781188

12791189
/// Need authenticator.
12801190
public static var ENEEDAUTH: POSIXError.Code { return .ENEEDAUTH }
1281-
1191+
#endif
1192+
12821193
/// Intelligent device errors.
12831194

1195+
#if canImport(Darwin)
12841196
/// Device power is off.
12851197
public static var EPWROFF: POSIXError.Code { return .EPWROFF }
12861198

12871199
/// Device error, e.g. paper out.
12881200
public static var EDEVERR: POSIXError.Code { return .EDEVERR }
1289-
1201+
#endif
1202+
12901203
/// Value too large to be stored in data type.
12911204
public static var EOVERFLOW: POSIXError.Code { return .EOVERFLOW }
12921205

12931206
/// Program loading errors.
12941207

1208+
#if canImport(Darwin)
12951209
/// Bad executable.
12961210
public static var EBADEXEC: POSIXError.Code { return .EBADEXEC }
1297-
1211+
#endif
1212+
1213+
#if canImport(Darwin)
12981214
/// Bad CPU type in executable.
12991215
public static var EBADARCH: POSIXError.Code { return .EBADARCH }
1300-
1216+
13011217
/// Shared library version mismatch.
13021218
public static var ESHLIBVERS: POSIXError.Code { return .ESHLIBVERS }
13031219

13041220
/// Malformed Macho file.
13051221
public static var EBADMACHO: POSIXError.Code { return .EBADMACHO }
1306-
1222+
#endif
1223+
13071224
/// Operation canceled.
13081225
public static var ECANCELED: POSIXError.Code { return .ECANCELED }
13091226

@@ -1316,8 +1233,10 @@ extension POSIXError {
13161233
/// Illegal byte sequence.
13171234
public static var EILSEQ: POSIXError.Code { return .EILSEQ }
13181235

1236+
#if canImport(Darwin)
13191237
/// Attribute not found.
13201238
public static var ENOATTR: POSIXError.Code { return .ENOATTR }
1239+
#endif
13211240

13221241
/// Bad message.
13231242
public static var EBADMSG: POSIXError.Code { return .EBADMSG }
@@ -1343,17 +1262,21 @@ extension POSIXError {
13431262
/// STREAM ioctl timeout.
13441263
public static var ETIME: POSIXError.Code { return .ETIME }
13451264

1265+
#if canImport(Darwin)
13461266
/// No such policy registered.
13471267
public static var ENOPOLICY: POSIXError.Code { return .ENOPOLICY }
1268+
#endif
13481269

13491270
/// State not recoverable.
13501271
public static var ENOTRECOVERABLE: POSIXError.Code { return .ENOTRECOVERABLE }
13511272

13521273
/// Previous owner died.
13531274
public static var EOWNERDEAD: POSIXError.Code { return .EOWNERDEAD }
13541275

1276+
#if canImport(Darwin)
13551277
/// Interface output queue is full.
13561278
public static var EQFULL: POSIXError.Code { return .EQFULL }
1279+
#endif
13571280
}
13581281

13591282
enum UnknownNSError: Error {

0 commit comments

Comments
 (0)