ObjFW  Diff

Differences From Artifact [ffbdf30d8b]:

  • File src/OFSelectKernelEventObserver.m — part of check-in [8ad878075b] at 2025-04-14 21:10:37 on branch trunk — Continue migrating to the ARC functions for RR (user: js size: 7078) [more...]

To Artifact [854a941489]:

  • File src/OFSelectKernelEventObserver.m — part of check-in [cc3a912418] at 2025-05-30 00:17:20 on branch trunk — OFKernelEventObserver: Handle EINTR on AmigaOS (user: js size: 7150) [more...]

210
211
212
213
214
215
216

217
218
219
220
221
222
223
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224







+







	timeout.tv_sec = (time_t)timeInterval;
#else
	timeout.tv_sec = (long)timeInterval;
#endif
	timeout.tv_usec = (int)((timeInterval - timeout.tv_sec) * 1000000);

#ifdef OF_AMIGAOS
retry:
	if ((cancelSignal = AllocSignal(-1)) == (BYTE)-1)
		@throw [OFObserveKernelEventsFailedException
		    exceptionWithObserver: self
				    errNo: EAGAIN];

	execSignalMask = _execSignalMask | (1ul << cancelSignal);

232
233
234
235
236
237
238
239






240
241
242


243
244
245
246
247
248
249
233
234
235
236
237
238
239

240
241
242
243
244
245
246
247

248
249
250
251
252
253
254
255
256







-
+
+
+
+
+
+


-
+
+







	execSignalMask &= ~(1ul << cancelSignal);

	_waitingTask = NULL;
	FreeSignal(_cancelSignal);

	Permit();

	if (events < 0)
	if (events < 0) {
		int errNo = _OFSocketErrNo();

		if (errNo == EINTR)
			goto retry;

		@throw [OFObserveKernelEventsFailedException
		    exceptionWithObserver: self
				    errNo: _OFSocketErrNo()];
				    errNo: errNo];
	}

	if (execSignalMask != 0 &&
	    [_delegate respondsToSelector: @selector(execSignalWasReceived:)])
		[_delegate execSignalWasReceived: execSignalMask];
#else
	while ((events = select(_maxFD + 1, &readFDs, &writeFDs, NULL,
	    (timeInterval != -1 ? &timeout : NULL))) < 0) {