@@ -11,13 +11,13 @@ * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ -#define __NO_EXT_QNX - #include "config.h" + +#define __NO_EXT_QNX #include "platform.h" #ifdef OF_WINDOWS /* Win32 has a ridiculous default of 64, even though it supports much more. */ @@ -29,20 +29,24 @@ #include #import "OFSelectKernelEventObserver.h" #import "OFArray.h" +#import "OFSocket+Private.h" #import "OFInitializationFailedException.h" #import "OFObserveFailedException.h" #import "OFOutOfRangeException.h" -#import "socket_helpers.h" - #ifdef OF_AMIGAOS # include #endif + +#ifdef OF_HPUX +/* FD_SET causes warnings on HP-UX/IA64. */ +# pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif @implementation OFSelectKernelEventObserver - (instancetype)init { self = [super init]; @@ -92,11 +96,11 @@ #endif if (fd > _maxFD) _maxFD = fd; - FD_SET((of_socket_t)fd, &_readFDs); + FD_SET((OFSocketHandle)fd, &_readFDs); [super addObjectForReading: object]; } - (void)addObjectForWriting: (id )object @@ -116,11 +120,11 @@ #endif if (fd > _maxFD) _maxFD = fd; - FD_SET((of_socket_t)fd, &_writeFDs); + FD_SET((OFSocketHandle)fd, &_writeFDs); [super addObjectForWriting: object]; } - (void)removeObjectForReading: (id )object @@ -136,11 +140,11 @@ #ifndef OF_WINDOWS if (fd >= (int)FD_SETSIZE) @throw [OFOutOfRangeException exception]; #endif - FD_CLR((of_socket_t)fd, &_readFDs); + FD_CLR((OFSocketHandle)fd, &_readFDs); [super removeObjectForReading: object]; } - (void)removeObjectForWriting: (id )object @@ -157,16 +161,16 @@ #ifndef OF_WINDOWS if (fd >= (int)FD_SETSIZE) @throw [OFOutOfRangeException exception]; #endif - FD_CLR((of_socket_t)fd, &_writeFDs); + FD_CLR((OFSocketHandle)fd, &_writeFDs); [super removeObjectForWriting: object]; } -- (void)observeForTimeInterval: (of_time_interval_t)timeInterval +- (void)observeForTimeInterval: (OFTimeInterval)timeInterval { fd_set readFDs; fd_set writeFDs; struct timeval timeout; int events; @@ -227,11 +231,11 @@ #endif if (events < 0) @throw [OFObserveFailedException exceptionWithObserver: self - errNo: of_socket_errno()]; + errNo: OFSocketErrNo()]; #ifdef OF_AMIGAOS if (execSignalMask != 0 && [_delegate respondsToSelector: @selector(execSignalWasReceived:)]) [_delegate execSignalWasReceived: execSignalMask]; @@ -238,13 +242,13 @@ #else if (FD_ISSET(_cancelFD[0], &readFDs)) { char buffer; # ifdef OF_HAVE_PIPE - OF_ENSURE(read(_cancelFD[0], &buffer, 1) == 1); + OFEnsure(read(_cancelFD[0], &buffer, 1) == 1); # else - OF_ENSURE(recvfrom(_cancelFD[0], (void *)&buffer, 1, 0, NULL, + OFEnsure(recvfrom(_cancelFD[0], (void *)&buffer, 1, 0, NULL, NULL) == 1); # endif } #endif @@ -253,11 +257,11 @@ for (id object in [[_readObjects copy] autorelease]) { void *pool2 = objc_autoreleasePoolPush(); int fd = object.fileDescriptorForReading; - if (FD_ISSET((of_socket_t)fd, &readFDs) && + if (FD_ISSET((OFSocketHandle)fd, &readFDs) && [_delegate respondsToSelector: @selector(objectIsReadyForReading:)]) [_delegate objectIsReadyForReading: object]; objc_autoreleasePoolPop(pool2); @@ -266,11 +270,11 @@ for (id object in [[_writeObjects copy] autorelease]) { void *pool2 = objc_autoreleasePoolPush(); int fd = object.fileDescriptorForWriting; - if (FD_ISSET((of_socket_t)fd, &writeFDs) && + if (FD_ISSET((OFSocketHandle)fd, &writeFDs) && [_delegate respondsToSelector: @selector(objectIsReadyForWriting:)]) [_delegate objectIsReadyForWriting: object]; objc_autoreleasePoolPop(pool2);