diff options
author | Michael Hanson <hansonorders@verizon.net> | 2010-11-16 03:46:13 (GMT) |
---|---|---|
committer | Michael Hanson <hansonorders@verizon.net> | 2010-11-16 03:46:13 (GMT) |
commit | 9489701f54d6628e484af822b961c34d7b511e57 (patch) | |
tree | 85cc4dbb7d11024b011c57ec11ee7f3707e7d0fd /abs/core/python | |
parent | ede1a8d31ec57aa9d4850444b4a14ac14734c9b4 (diff) | |
download | linhes_pkgbuild-9489701f54d6628e484af822b961c34d7b511e57.zip linhes_pkgbuild-9489701f54d6628e484af822b961c34d7b511e57.tar.gz linhes_pkgbuild-9489701f54d6628e484af822b961c34d7b511e57.tar.bz2 |
file cleanup
Diffstat (limited to 'abs/core/python')
-rw-r--r-- | abs/core/python/ChangeLog | 9 | ||||
-rw-r--r-- | abs/core/python/Python-2.4.4-gdbm-1.patch | 17 | ||||
-rw-r--r-- | abs/core/python/Python-2.5.2-idlelib.patch | 17 | ||||
-rw-r--r-- | abs/core/python/db4.6-setup.py-detection.patch | 11 | ||||
-rw-r--r-- | abs/core/python/modulator-launcher | 2 | ||||
-rw-r--r-- | abs/core/python/pynche-launcher | 3 | ||||
-rw-r--r-- | abs/core/python/python-2.5.CVE-2007-4965-int-overflow.patch | 217 | ||||
-rw-r--r-- | abs/core/python/python-2.6-db-4.8.patch | 123 | ||||
-rw-r--r-- | abs/core/python/python-2.6-gdbm.patch | 12 | ||||
-rw-r--r-- | abs/core/python/python-2.6-internal-expat.patch | 33 | ||||
-rw-r--r-- | abs/core/python/python.install | 13 | ||||
-rw-r--r-- | abs/core/python/python2.6-set_wakeup_fd4.patch | 94 |
12 files changed, 0 insertions, 551 deletions
diff --git a/abs/core/python/ChangeLog b/abs/core/python/ChangeLog deleted file mode 100644 index 2d5c46a..0000000 --- a/abs/core/python/ChangeLog +++ /dev/null @@ -1,9 +0,0 @@ -2008-12-07 Allan McRae <allan@archlinux.org> - * python 2.6.1-1 - * upstream update - * fix gdbm related build error - * fix modulator/pynche launchers - -2008-10-27 Allan McRae <allan@archlinux.org> - * python 2.6-2 - * patched to use internal expat
\ No newline at end of file diff --git a/abs/core/python/Python-2.4.4-gdbm-1.patch b/abs/core/python/Python-2.4.4-gdbm-1.patch deleted file mode 100644 index 4b6c7eb..0000000 --- a/abs/core/python/Python-2.4.4-gdbm-1.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- Python-2.4.4/setup.py.orig 2007-01-14 12:50:46.000000000 -0600 -+++ Python-2.4.4/setup.py 2007-01-14 12:54:02.000000000 -0600 -@@ -685,12 +685,12 @@ - if self.compiler.find_library_file(lib_dirs, 'ndbm'): - ndbm_libs = ['ndbm'] - else: -- ndbm_libs = [] -+ ndbm_libs = ['gdbm', 'gdbm_compat'] - exts.append( Extension('dbm', ['dbmmodule.c'], - define_macros=[('HAVE_NDBM_H',None)], - libraries = ndbm_libs ) ) - elif (self.compiler.find_library_file(lib_dirs, 'gdbm') -- and find_file("gdbm/ndbm.h", inc_dirs, []) is not None): -+ and find_file("ndbm.h", inc_dirs, []) is not None): - exts.append( Extension('dbm', ['dbmmodule.c'], - define_macros=[('HAVE_GDBM_NDBM_H',None)], - libraries = ['gdbm'] ) ) diff --git a/abs/core/python/Python-2.5.2-idlelib.patch b/abs/core/python/Python-2.5.2-idlelib.patch deleted file mode 100644 index 50c987a..0000000 --- a/abs/core/python/Python-2.5.2-idlelib.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- Lib/idlelib/WidgetRedirector.py.orig 2008-04-23 23:39:57.000000000 -0700 -+++ Lib/idlelib/WidgetRedirector.py 2008-04-23 23:46:55.000000000 -0700 -@@ -53,7 +53,13 @@ - if m: - return m(*args) - else: -- return self.tk.call((self.orig, cmd) + args) -+ #return self.tk.call((self.orig, cmd) + args) -+ r = self.tk.call((self.orig, cmd) + args) -+ if isinstance(r, tuple): -+ # convert to string ourselves so we get a Tcl list -+ # that can be converted back into a tuple -+ r = ' '.join(map(str, r)) -+ return r - except TclError: - return "" - diff --git a/abs/core/python/db4.6-setup.py-detection.patch b/abs/core/python/db4.6-setup.py-detection.patch deleted file mode 100644 index 873f175..0000000 --- a/abs/core/python/db4.6-setup.py-detection.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- setup.py 2008-02-23 20:58:52.000000000 +0000 -+++ setup.py.new 2008-02-23 21:04:18.000000000 +0000 -@@ -608,7 +608,7 @@ - # a release. Most open source OSes come with one or more - # versions of BerkeleyDB already installed. - -- max_db_ver = (4, 5) -+ max_db_ver = (4, 6) - # NOTE: while the _bsddb.c code links against BerkeleyDB 4.6.x - # we leave that version disabled by default as it has proven to be - # quite a buggy library release on many platforms. diff --git a/abs/core/python/modulator-launcher b/abs/core/python/modulator-launcher deleted file mode 100644 index ba46e93..0000000 --- a/abs/core/python/modulator-launcher +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -exec /usr/lib/python%%PYBASEVER%%/site-packages/modulator/modulator.py diff --git a/abs/core/python/pynche-launcher b/abs/core/python/pynche-launcher deleted file mode 100644 index a4338a7..0000000 --- a/abs/core/python/pynche-launcher +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -/usr/lib/python%%PYBASEVER%%/site-packages/pynche/pynche - diff --git a/abs/core/python/python-2.5.CVE-2007-4965-int-overflow.patch b/abs/core/python/python-2.5.CVE-2007-4965-int-overflow.patch deleted file mode 100644 index 843acbf..0000000 --- a/abs/core/python/python-2.5.CVE-2007-4965-int-overflow.patch +++ /dev/null @@ -1,217 +0,0 @@ -diff -rup Python-2.5-orig/Modules/imageop.c Python-2.5/Modules/imageop.c ---- Python-2.5-orig/Modules/imageop.c 2006-01-19 01:09:39.000000000 -0500 -+++ Python-2.5/Modules/imageop.c 2007-09-19 16:42:44.000000000 -0400 -@@ -78,7 +78,7 @@ imageop_crop(PyObject *self, PyObject *a - char *cp, *ncp; - short *nsp; - Py_Int32 *nlp; -- int len, size, x, y, newx1, newx2, newy1, newy2; -+ int len, size, x, y, newx1, newx2, newy1, newy2, nlen; - int ix, iy, xstep, ystep; - PyObject *rv; - -@@ -90,13 +90,19 @@ imageop_crop(PyObject *self, PyObject *a - PyErr_SetString(ImageopError, "Size should be 1, 2 or 4"); - return 0; - } -- if ( len != size*x*y ) { -+ /* ( len != size*x*y ) */ -+ if ( size != ((len / x) / y) ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; - } - xstep = (newx1 < newx2)? 1 : -1; - ystep = (newy1 < newy2)? 1 : -1; - -+ nlen = (abs(newx2-newx1)+1)*(abs(newy2-newy1)+1)*size; -+ if ( size != ((nlen / (abs(newx2-newx1)+1)) / (abs(newy2-newy1)+1)) ) { -+ PyErr_SetString(ImageopError, "String has incorrect length"); -+ return 0; -+ } - rv = PyString_FromStringAndSize(NULL, - (abs(newx2-newx1)+1)*(abs(newy2-newy1)+1)*size); - if ( rv == 0 ) -@@ -132,7 +138,7 @@ imageop_scale(PyObject *self, PyObject * - char *cp, *ncp; - short *nsp; - Py_Int32 *nlp; -- int len, size, x, y, newx, newy; -+ int len, size, x, y, newx, newy, nlen; - int ix, iy; - int oix, oiy; - PyObject *rv; -@@ -145,12 +151,18 @@ imageop_scale(PyObject *self, PyObject * - PyErr_SetString(ImageopError, "Size should be 1, 2 or 4"); - return 0; - } -- if ( len != size*x*y ) { -+ /* ( len != size*x*y ) */ -+ if ( size != ((len / x) / y) ) { -+ PyErr_SetString(ImageopError, "String has incorrect length"); -+ return 0; -+ } -+ nlen = newx*newy*size; -+ if ( size != ((nlen / newx) / newy) ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; - } - -- rv = PyString_FromStringAndSize(NULL, newx*newy*size); -+ rv = PyString_FromStringAndSize(NULL, nlen); - if ( rv == 0 ) - return 0; - ncp = (char *)PyString_AsString(rv); -@@ -190,7 +202,8 @@ imageop_tovideo(PyObject *self, PyObject - PyErr_SetString(ImageopError, "Size should be 1 or 4"); - return 0; - } -- if ( maxx*maxy*width != len ) { -+ /* if ( maxx*maxy*width != len ) */ -+ if ( maxx != ((len / maxy) / maxz) ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; - } -@@ -240,7 +253,8 @@ imageop_grey2mono(PyObject *self, PyObje - if ( !PyArg_ParseTuple(args, "s#iii", &cp, &len, &x, &y, &tres) ) - return 0; - -- if ( x*y != len ) { -+ /* ( x*y != len ) */ -+ if ( x != len / y ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; - } -@@ -281,7 +295,8 @@ imageop_grey2grey4(PyObject *self, PyObj - if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) ) - return 0; - -- if ( x*y != len ) { -+ /* ( x*y != len ) */ -+ if ( x != len / y ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; - } -@@ -320,7 +335,8 @@ imageop_grey2grey2(PyObject *self, PyObj - if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) ) - return 0; - -- if ( x*y != len ) { -+ /* ( x*y != len ) */ -+ if ( x != len / y ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; - } -@@ -358,7 +374,8 @@ imageop_dither2mono(PyObject *self, PyOb - if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) ) - return 0; - -- if ( x*y != len ) { -+ /* ( x*y != len ) */ -+ if ( x != len / y ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; - } -@@ -404,7 +421,8 @@ imageop_dither2grey2(PyObject *self, PyO - if ( !PyArg_ParseTuple(args, "s#ii", &cp, &len, &x, &y) ) - return 0; - -- if ( x*y != len ) { -+ /* ( x*y != len ) */ -+ if ( x != len / y ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; - } -@@ -443,7 +461,11 @@ imageop_mono2grey(PyObject *self, PyObje - if ( !PyArg_ParseTuple(args, "s#iiii", &cp, &len, &x, &y, &v0, &v1) ) - return 0; - -- nlen = x*y; -+ nlen = x*y; -+ if ( x != (nlen / y) ) { -+ PyErr_SetString(ImageopError, "String has incorrect length"); -+ return 0; -+ } - if ( (nlen+7)/8 != len ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; -@@ -481,6 +503,10 @@ imageop_grey22grey(PyObject *self, PyObj - return 0; - - nlen = x*y; -+ if ( x != (nlen / y) ) { -+ PyErr_SetString(ImageopError, "String has incorrect length"); -+ return 0; -+ } - if ( (nlen+3)/4 != len ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; -@@ -517,6 +543,10 @@ imageop_grey42grey(PyObject *self, PyObj - return 0; - - nlen = x*y; -+ if ( x != (nlen / y) ) { -+ PyErr_SetString(ImageopError, "String has incorrect length"); -+ return 0; -+ } - if ( (nlen+1)/2 != len ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; -@@ -554,6 +584,10 @@ imageop_rgb2rgb8(PyObject *self, PyObjec - return 0; - - nlen = x*y; -+ if ( x != (nlen / y) ) { -+ PyErr_SetString(ImageopError, "String has incorrect length"); -+ return 0; -+ } - if ( nlen*4 != len ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; -@@ -598,6 +632,10 @@ imageop_rgb82rgb(PyObject *self, PyObjec - return 0; - - nlen = x*y; -+ if ( x != (nlen / y) ) { -+ PyErr_SetString(ImageopError, "String has incorrect length"); -+ return 0; -+ } - if ( nlen != len ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; -@@ -648,6 +686,10 @@ imageop_rgb2grey(PyObject *self, PyObjec - return 0; - - nlen = x*y; -+ if ( x != (nlen / y) ) { -+ PyErr_SetString(ImageopError, "String has incorrect length"); -+ return 0; -+ } - if ( nlen*4 != len ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; -@@ -693,6 +735,10 @@ imageop_grey2rgb(PyObject *self, PyObjec - return 0; - - nlen = x*y; -+ if ( x != (nlen / y) ) { -+ PyErr_SetString(ImageopError, "String has incorrect length"); -+ return 0; -+ } - if ( nlen != len ) { - PyErr_SetString(ImageopError, "String has incorrect length"); - return 0; -diff -rup Python-2.5-orig/Modules/rgbimgmodule.c Python-2.5/Modules/rgbimgmodule.c ---- Python-2.5-orig/Modules/rgbimgmodule.c 2006-08-11 23:18:50.000000000 -0400 -+++ Python-2.5/Modules/rgbimgmodule.c 2007-09-19 17:00:06.000000000 -0400 -@@ -299,6 +299,11 @@ longimagedata(PyObject *self, PyObject * - xsize = image.xsize; - ysize = image.ysize; - zsize = image.zsize; -+ tablen = xsize * ysize * zsize * sizeof(Py_Int32); -+ if (xsize != (((tablen / ysize) / zsize) / sizeof(Py_Int32))) { -+ PyErr_NoMemory(); -+ goto finally; -+ } - if (rle) { - tablen = ysize * zsize * sizeof(Py_Int32); - starttab = (Py_Int32 *)malloc(tablen); diff --git a/abs/core/python/python-2.6-db-4.8.patch b/abs/core/python/python-2.6-db-4.8.patch deleted file mode 100644 index 2032f92..0000000 --- a/abs/core/python/python-2.6-db-4.8.patch +++ /dev/null @@ -1,123 +0,0 @@ -Index: setup.py -=================================================================== ---- setup.py (revision 74955) -+++ setup.py (working copy) -@@ -695,7 +695,7 @@ - # a release. Most open source OSes come with one or more - # versions of BerkeleyDB already installed. - -- max_db_ver = (4, 7) -+ max_db_ver = (4, 8) - min_db_ver = (3, 3) - db_setup_debug = False # verbose debug prints from this script? - -Index: Modules/_bsddb.c -=================================================================== ---- Modules/_bsddb.c (revision 74955) -+++ Modules/_bsddb.c (working copy) -@@ -215,7 +215,11 @@ - #define DB_BUFFER_SMALL ENOMEM - #endif - -+#if (DBVER < 48) -+#define DB_GID_SIZE DB_XIDDATASIZE -+#endif - -+ - /* --------------------------------------------------------------------- */ - /* Structure definitions */ - -@@ -4501,7 +4505,11 @@ - DBTxnObject *txn; - #define PREPLIST_LEN 16 - DB_PREPLIST preplist[PREPLIST_LEN]; -+#if (DBVER < 48) - long retp; -+#else -+ u_int32_t retp; -+#endif - - CHECK_ENV_NOT_CLOSED(self); - -@@ -4522,7 +4530,7 @@ - flags=DB_NEXT; /* Prepare for next loop pass */ - for (i=0; i<retp; i++) { - gid=PyBytes_FromStringAndSize((char *)(preplist[i].gid), -- DB_XIDDATASIZE); -+ DB_GID_SIZE); - if (!gid) { - Py_DECREF(list); - return NULL; -@@ -5047,6 +5055,7 @@ - } - - -+#if (DBVER < 48) - static PyObject* - DBEnv_set_rpc_server(DBEnvObject* self, PyObject* args, PyObject* kwargs) - { -@@ -5068,6 +5077,7 @@ - RETURN_IF_ERR(); - RETURN_NONE(); - } -+#endif - - static PyObject* - DBEnv_set_verbose(DBEnvObject* self, PyObject* args) -@@ -5947,9 +5957,9 @@ - if (!PyArg_ParseTuple(args, "s#:prepare", &gid, &gid_size)) - return NULL; - -- if (gid_size != DB_XIDDATASIZE) { -+ if (gid_size != DB_GID_SIZE) { - PyErr_SetString(PyExc_TypeError, -- "gid must be DB_XIDDATASIZE bytes long"); -+ "gid must be DB_GID_SIZE bytes long"); - return NULL; - } - -@@ -6539,8 +6549,10 @@ - #endif - {"set_get_returns_none",(PyCFunction)DBEnv_set_get_returns_none, METH_VARARGS}, - {"txn_recover", (PyCFunction)DBEnv_txn_recover, METH_NOARGS}, -+#if (DBVER < 48) - {"set_rpc_server", (PyCFunction)DBEnv_set_rpc_server, - METH_VARARGS||METH_KEYWORDS}, -+#endif - {"set_verbose", (PyCFunction)DBEnv_set_verbose, METH_VARARGS}, - #if (DBVER >= 42) - {"get_verbose", (PyCFunction)DBEnv_get_verbose, METH_VARARGS}, -@@ -7089,6 +7101,7 @@ - ADD_INT(d, DB_MAX_PAGES); - ADD_INT(d, DB_MAX_RECORDS); - -+#if (DBVER < 48) - #if (DBVER >= 42) - ADD_INT(d, DB_RPCCLIENT); - #else -@@ -7096,7 +7109,11 @@ - /* allow apps to be written using DB_RPCCLIENT on older Berkeley DB */ - _addIntToDict(d, "DB_RPCCLIENT", DB_CLIENT); - #endif -+#endif -+ -+#if (DBVER < 48) - ADD_INT(d, DB_XA_CREATE); -+#endif - - ADD_INT(d, DB_CREATE); - ADD_INT(d, DB_NOMMAP); -@@ -7113,7 +7130,13 @@ - ADD_INT(d, DB_INIT_TXN); - ADD_INT(d, DB_JOINENV); - -+#if (DBVER >= 48) -+ ADD_INT(d, DB_GID_SIZE); -+#else - ADD_INT(d, DB_XIDDATASIZE); -+ /* Allow new code to work in old BDB releases */ -+ _addIntToDict(d, "DB_GID_SIZE", DB_XIDDATASIZE); -+#endif - - ADD_INT(d, DB_RECOVER); - ADD_INT(d, DB_RECOVER_FATAL); diff --git a/abs/core/python/python-2.6-gdbm.patch b/abs/core/python/python-2.6-gdbm.patch deleted file mode 100644 index 0f223f6..0000000 --- a/abs/core/python/python-2.6-gdbm.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -Naur Python-2.6-old/setup.py Python-2.6/setup.py ---- Python-2.6-old/setup.py 2008-09-30 10:15:45.000000000 +1000 -+++ Python-2.6/setup.py 2008-12-07 16:04:01.000000000 +1000 -@@ -1013,7 +1013,7 @@ - if self.compiler.find_library_file(lib_dirs, 'ndbm'): - ndbm_libs = ['ndbm'] - else: -- ndbm_libs = [] -+ ndbm_libs = ['gdbm', 'gdbm_compat'] - exts.append( Extension('dbm', ['dbmmodule.c'], - define_macros=[('HAVE_NDBM_H',None)], - libraries = ndbm_libs ) ) diff --git a/abs/core/python/python-2.6-internal-expat.patch b/abs/core/python/python-2.6-internal-expat.patch deleted file mode 100644 index 86252ab..0000000 --- a/abs/core/python/python-2.6-internal-expat.patch +++ /dev/null @@ -1,33 +0,0 @@ ---- setup.py 2008-04-22 12:12:24.613554757 +0300 -+++ setup.py 2008-04-22 12:13:09.276544063 +0300 -@@ -1035,18 +1035,15 @@ - # - # More information on Expat can be found at www.libexpat.org. - # -- expatinc = os.path.join(os.getcwd(), srcdir, 'Modules', 'expat') -- define_macros = [ -- ('HAVE_EXPAT_CONFIG_H', '1'), -- ] -+ # Use system expat -+ expatinc = '/usr/include' -+ define_macros = [] - - exts.append(Extension('pyexpat', - define_macros = define_macros, - include_dirs = [expatinc], -+ libraries = ['expat'], - sources = ['pyexpat.c', -- 'expat/xmlparse.c', -- 'expat/xmlrole.c', -- 'expat/xmltok.c', - ], - )) - -@@ -1058,6 +1055,7 @@ - exts.append(Extension('_elementtree', - define_macros = define_macros, - include_dirs = [expatinc], -+ libraries = ['expat'], - sources = ['_elementtree.c'], - )) - diff --git a/abs/core/python/python.install b/abs/core/python/python.install deleted file mode 100644 index f00a943..0000000 --- a/abs/core/python/python.install +++ /dev/null @@ -1,13 +0,0 @@ -post_install() { - cat << _EOF - -==> Python requires "tk" to use IDLE, pynche and modulator - -_EOF -} - -post_upgrade() { - post_install $1 -} - -# vim:set ts=2 sw=2 et: diff --git a/abs/core/python/python2.6-set_wakeup_fd4.patch b/abs/core/python/python2.6-set_wakeup_fd4.patch deleted file mode 100644 index b945a26..0000000 --- a/abs/core/python/python2.6-set_wakeup_fd4.patch +++ /dev/null @@ -1,94 +0,0 @@ ---- python/trunk/Modules/signalmodule.c 2007/12/10 23:00:12 59460 -+++ python/trunk/Modules/signalmodule.c 2007/12/19 19:41:06 59574 -@@ -12,6 +12,8 @@ - - #include <signal.h> - -+#include <sys/stat.h> -+ - #ifndef SIG_ERR - #define SIG_ERR ((PyOS_sighandler_t)(-1)) - #endif -@@ -75,6 +77,8 @@ - PyObject *func; - } Handlers[NSIG]; - -+static sig_atomic_t wakeup_fd = -1; -+ - /* Speed up sigcheck() when none tripped */ - static volatile sig_atomic_t is_tripped = 0; - -@@ -128,6 +132,8 @@ - cleared in PyErr_CheckSignals() before .tripped. */ - is_tripped = 1; - Py_AddPendingCall(checksignals_witharg, NULL); -+ if (wakeup_fd != -1) -+ write(wakeup_fd, "\0", 1); - #ifdef WITH_THREAD - } - #endif -@@ -267,6 +273,50 @@ - anything else -- the callable Python object used as a handler"); - - -+static PyObject * -+signal_set_wakeup_fd(PyObject *self, PyObject *args) -+{ -+ struct stat buf; -+ int fd, old_fd; -+ if (!PyArg_ParseTuple(args, "i:set_wakeup_fd", &fd)) -+ return NULL; -+#ifdef WITH_THREAD -+ if (PyThread_get_thread_ident() != main_thread) { -+ PyErr_SetString(PyExc_ValueError, -+ "set_wakeup_fd only works in main thread"); -+ return NULL; -+ } -+#endif -+ if (fd != -1 && fstat(fd, &buf) != 0) { -+ PyErr_SetString(PyExc_ValueError, "invalid fd"); -+ return NULL; -+ } -+ old_fd = wakeup_fd; -+ wakeup_fd = fd; -+ return PyLong_FromLong(old_fd); -+} -+ -+PyDoc_STRVAR(set_wakeup_fd_doc, -+"set_wakeup_fd(fd) -> fd\n\ -+\n\ -+Sets the fd to be written to (with '\\0') when a signal\n\ -+comes in. A library can use this to wakeup select or poll.\n\ -+The previous fd is returned.\n\ -+\n\ -+The fd must be non-blocking."); -+ -+/* C API for the same, without all the error checking */ -+int -+PySignal_SetWakeupFd(int fd) -+{ -+ int old_fd = wakeup_fd; -+ if (fd < 0) -+ fd = -1; -+ wakeup_fd = fd; -+ return old_fd; -+} -+ -+ - /* List of functions defined in the module */ - static PyMethodDef signal_methods[] = { - #ifdef HAVE_ALARM -@@ -274,11 +324,12 @@ - #endif - {"signal", signal_signal, METH_VARARGS, signal_doc}, - {"getsignal", signal_getsignal, METH_VARARGS, getsignal_doc}, -+ {"set_wakeup_fd", signal_set_wakeup_fd, METH_VARARGS, set_wakeup_fd_doc}, - #ifdef HAVE_PAUSE - {"pause", (PyCFunction)signal_pause, - METH_NOARGS,pause_doc}, - #endif -- {"default_int_handler", signal_default_int_handler, -+ {"default_int_handler", signal_default_int_handler, - METH_VARARGS, default_int_handler_doc}, - {NULL, NULL} /* sentinel */ - }; |