D1736: osutil: add a function to unblock signals
quark (Jun Wu)
phabricator at mercurial-scm.org
Wed Dec 20 14:39:15 EST 2017
quark updated this revision to Diff 4561.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D1736?vs=4557&id=4561
REVISION DETAIL
https://phab.mercurial-scm.org/D1736
AFFECTED FILES
mercurial/cext/osutil.c
mercurial/policy.py
mercurial/util.py
CHANGE DETAILS
diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -163,6 +163,10 @@
setprocname = osutil.setprocname
except AttributeError:
pass
+try:
+ unblocksignal = osutil.unblocksignal
+except AttributeError:
+ pass
# Python compatibility
diff --git a/mercurial/policy.py b/mercurial/policy.py
--- a/mercurial/policy.py
+++ b/mercurial/policy.py
@@ -74,7 +74,7 @@
(r'cext', r'bdiff'): 1,
(r'cext', r'diffhelpers'): 1,
(r'cext', r'mpatch'): 1,
- (r'cext', r'osutil'): 1,
+ (r'cext', r'osutil'): 2,
(r'cext', r'parsers'): 4,
}
diff --git a/mercurial/cext/osutil.c b/mercurial/cext/osutil.c
--- a/mercurial/cext/osutil.c
+++ b/mercurial/cext/osutil.c
@@ -20,6 +20,7 @@
#include <windows.h>
#else
#include <dirent.h>
+#include <signal.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/types.h>
@@ -1111,6 +1112,25 @@
}
#endif /* defined(HAVE_LINUX_STATFS) || defined(HAVE_BSD_STATFS) */
+static PyObject *unblocksignal(PyObject *self, PyObject *args)
+{
+ int sig = 0;
+ int r;
+ if (!PyArg_ParseTuple(args, "i", &sig))
+ return NULL;
+ sigset_t set;
+ r = sigemptyset(&set);
+ if (r != 0)
+ return PyErr_SetFromErrno(PyExc_OSError);
+ r = sigaddset(&set, sig);
+ if (r != 0)
+ return PyErr_SetFromErrno(PyExc_OSError);
+ r = sigprocmask(SIG_UNBLOCK, &set, NULL);
+ if (r != 0)
+ return PyErr_SetFromErrno(PyExc_OSError);
+ Py_RETURN_NONE;
+}
+
#endif /* ndef _WIN32 */
static PyObject *listdir(PyObject *self, PyObject *args, PyObject *kwargs)
@@ -1291,6 +1311,8 @@
{"getfstype", (PyCFunction)getfstype, METH_VARARGS,
"get filesystem type (best-effort)\n"},
#endif
+ {"unblocksignal", (PyCFunction)unblocksignal, METH_VARARGS,
+ "change signal mask to unblock a given signal\n"},
#endif /* ndef _WIN32 */
#ifdef __APPLE__
{
@@ -1301,7 +1323,7 @@
{NULL, NULL}
};
-static const int version = 1;
+static const int version = 2;
#ifdef IS_PY3K
static struct PyModuleDef osutil_module = {
To: quark, #hg-reviewers, yuja
Cc: yuja, mercurial-devel
More information about the Mercurial-devel
mailing list