We have pselect() now; remove a patch that replaced it with
select()+sigprocmask(). Maintainer's OK
This commit is contained in:
parent
0e97520794
commit
77aefb7195
@ -1,9 +1,11 @@
|
||||
# $OpenBSD: Makefile,v 1.1.1.1 2013/04/21 19:46:37 sthen Exp $
|
||||
# $OpenBSD: Makefile,v 1.2 2013/05/02 08:20:52 dcoppa Exp $
|
||||
|
||||
COMMENT = mobile shell
|
||||
|
||||
DISTNAME = mosh-1.2.4
|
||||
|
||||
REVISION = 0
|
||||
|
||||
CATEGORIES = net
|
||||
|
||||
HOMEPAGE = http://mosh.mit.edu/
|
||||
|
@ -1,52 +0,0 @@
|
||||
$OpenBSD: patch-src_util_select_h,v 1.1.1.1 2013/04/21 19:46:37 sthen Exp $
|
||||
|
||||
Use select and sigprocmask instead of pselect.
|
||||
Reported upstream...
|
||||
|
||||
--- src/util/select.h.orig Fri Oct 19 21:45:18 2012
|
||||
+++ src/util/select.h Mon Mar 11 01:39:22 2013
|
||||
@@ -118,6 +118,7 @@ class Select { (public)
|
||||
fatal_assert( 0 == sigaction( signum, &sa, NULL ) );
|
||||
}
|
||||
|
||||
+ /* timeout unit: milliseconds; negative timeout means wait forever */
|
||||
int select( int timeout )
|
||||
{
|
||||
memcpy( &read_fds, &all_fds, sizeof( read_fds ) );
|
||||
@@ -125,18 +126,34 @@ class Select { (public)
|
||||
clear_got_signal();
|
||||
got_any_signal = 0;
|
||||
|
||||
+#ifdef HAVE_PSELECT
|
||||
struct timespec ts;
|
||||
struct timespec *tsp = NULL;
|
||||
|
||||
if ( timeout >= 0 ) {
|
||||
- // timeout in milliseconds
|
||||
ts.tv_sec = timeout / 1000;
|
||||
ts.tv_nsec = 1000000 * (long( timeout ) % 1000);
|
||||
tsp = &ts;
|
||||
}
|
||||
- // negative timeout means wait forever
|
||||
|
||||
int ret = ::pselect( max_fd + 1, &read_fds, NULL, &error_fds, tsp, &empty_sigset );
|
||||
+#else
|
||||
+ struct timeval tv;
|
||||
+ struct timeval *tvp = NULL;
|
||||
+ sigset_t old_sigset;
|
||||
+
|
||||
+ if ( timeout >= 0 ) {
|
||||
+ tv.tv_sec = timeout / 1000;
|
||||
+ tv.tv_usec = 1000 * (long( timeout ) % 1000);
|
||||
+ tvp = &tv;
|
||||
+ }
|
||||
+
|
||||
+ int ret = ::sigprocmask( SIG_SETMASK, &empty_sigset, &old_sigset );
|
||||
+ if ( ret != -1 ) {
|
||||
+ ret = ::select( max_fd + 1, &read_fds, NULL, &error_fds, tvp );
|
||||
+ ::sigprocmask( SIG_SETMASK, &old_sigset, NULL );
|
||||
+ }
|
||||
+#endif
|
||||
|
||||
if ( ( ret == -1 ) && ( errno == EINTR ) ) {
|
||||
/* The user should process events as usual. */
|
Loading…
x
Reference in New Issue
Block a user