--- a/mercurial/posix.py Wed Jun 03 14:22:21 2015 -0700
+++ b/mercurial/posix.py Wed May 20 18:00:05 2015 -0500
@@ -8,6 +8,7 @@
from i18n import _
import encoding
import os, sys, errno, stat, getpass, pwd, grp, socket, tempfile, unicodedata
+import select
import fcntl, re
posixfile = open
@@ -594,6 +595,19 @@
'''check whether a stat result is an executable file'''
return st and (st.st_mode & 0100 != 0)
+def poll(fds):
+ """block until something happens on any file descriptor
+
+ This is a generic helper that will check for any activity
+ (read, write. exception) and return the list of touched files.
+
+ In unsupported cases, it will raise a NotImplementedError"""
+ try:
+ res = select.select(fds, fds, fds)
+ except ValueError: # out of range file descriptor
+ raise NotImplementedError()
+ return sorted(list(set(sum(res, []))))
+
def readpipe(pipe):
"""Read all available data from a pipe."""
# We can't fstat() a pipe because Linux will always report 0.