From 4f1b2081e9dde910048ef679f5afe252023a4031 Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Sun, 23 Jul 2000 21:18:09 +0000 Subject: Removed all instances of RETSIGTYPE from the source code: signal handlers "return void", according to ANSI C. Removed the new Py_RETURN_FROM_SIGNAL_HANDLER macro. Left RETSIGTYPE in the config stuff, because it's not clear to me that others aren't relying on it (e.g., extension modules). --- Include/pyport.h | 17 ----------------- Modules/fpectlmodule.c | 2 +- Modules/readline.c | 7 ++----- Modules/signalmodule.c | 13 ++++++------- Parser/intrcheck.c | 5 ++--- README | 5 ++--- 6 files changed, 13 insertions(+), 36 deletions(-) diff --git a/Include/pyport.h b/Include/pyport.h index ed8a28e..52807a9 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -23,11 +23,6 @@ Meaning: To be defined iff i>>j does not extend the sign bit when i is a signed integral type and i < 0. Used in: Py_ARITHMETIC_RIGHT_SHIFT -RETSIGTYPE -Meaning: Expands to void or int, depending on what the platform wants - signal handlers to return. Note that only void is ANSI! -Used in: Py_RETURN_FROM_SIGNAL_HANDLER - Py_DEBUG Meaning: Extra checks compiled in for debug mode. Used in: Py_SAFE_DOWNCAST @@ -66,18 +61,6 @@ extern "C" { */ #define Py_FORCE_EXPANSION(X) X -/* Py_RETURN_FROM_SIGNAL_HANDLER - * The return from a signal handler varies depending on whether RETSIGTYPE - * is int or void. The macro Py_RETURN_FROM_SIGNAL_HANDLER(VALUE) expands - * to - * return VALUE - * if RETSIGTYPE is int, else to nothing if RETSIGTYPE is void. - */ -#define int_PySIGRETURN(VALUE) return VALUE -#define void_PySIGRETURN(VALUE) -#define Py_RETURN_FROM_SIGNAL_HANDLER(VALUE) \ - Py_FORCE_EXPANSION(RETSIGTYPE) ## _PySIGRETURN(VALUE) - /* Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) * Cast VALUE to type NARROW from type WIDE. In Py_DEBUG mode, this * assert-fails if any information is lost. diff --git a/Modules/fpectlmodule.c b/Modules/fpectlmodule.c index 8055636..039deb4 100644 --- a/Modules/fpectlmodule.c +++ b/Modules/fpectlmodule.c @@ -77,7 +77,7 @@ static jmp_buf PyFPE_jbuf; static int PyFPE_counter = 0; #endif -typedef RETSIGTYPE Sigfunc(int); +typedef void Sigfunc(int); static Sigfunc sigfpe_handler; static void fpe_reset(Sigfunc *); diff --git a/Modules/readline.c b/Modules/readline.c index 47644c4..0fd4c28 100644 --- a/Modules/readline.c +++ b/Modules/readline.c @@ -427,13 +427,10 @@ setup_readline(void) static jmp_buf jbuf; /* ARGSUSED */ -static RETSIGTYPE +static void onintr(int sig) { longjmp(jbuf, 1); -#if RETSIGTYPE != void - return 0; -#endif } @@ -444,7 +441,7 @@ call_readline(char *prompt) { size_t n; char *p, *q; - RETSIGTYPE (*old_inthandler)(int); + void (*old_inthandler)(int); old_inthandler = signal(SIGINT, onintr); if (setjmp(jbuf)) { #ifdef HAVE_SIGRELSE diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c index fb525f8..f200427 100644 --- a/Modules/signalmodule.c +++ b/Modules/signalmodule.c @@ -26,7 +26,7 @@ redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. #include #ifndef SIG_ERR -#define SIG_ERR ((RETSIGTYPE (*)(int))-1) +#define SIG_ERR ((void (*)(int))-1) #endif #if defined(PYOS_OS2) @@ -92,7 +92,7 @@ static PyObject *DefaultHandler; static PyObject *IgnoreHandler; static PyObject *IntHandler; -static RETSIGTYPE (*old_siginthandler)(int) = SIG_DFL; +static void (*old_siginthandler)(int) = SIG_DFL; @@ -117,7 +117,7 @@ checksignals_witharg(void * unused) return PyErr_CheckSignals(); } -static RETSIGTYPE +static void signal_handler(int sig_num) { #ifdef WITH_THREAD @@ -136,14 +136,13 @@ signal_handler(int sig_num) reset until explicit re-instated. Don't clear the 'func' field as it is our pointer to the Python handler... */ - Py_RETURN_FROM_SIGNAL_HANDLER(0); + return; } #endif #ifdef HAVE_SIGINTERRUPT siginterrupt(sig_num, 1); #endif signal(sig_num, signal_handler); - Py_RETURN_FROM_SIGNAL_HANDLER(0); } @@ -198,7 +197,7 @@ signal_signal(PyObject *self, PyObject *args) PyObject *obj; int sig_num; PyObject *old_handler; - RETSIGTYPE (*func)(int); + void (*func)(int); if (!PyArg_Parse(args, "(iO)", &sig_num, &obj)) return NULL; #ifdef WITH_THREAD @@ -355,7 +354,7 @@ initsignal(void) Handlers[0].tripped = 0; for (i = 1; i < NSIG; i++) { - RETSIGTYPE (*t)(int); + void (*t)(int); #ifdef HAVE_SIGACTION struct sigaction act; sigaction(i, 0, &act); diff --git a/Parser/intrcheck.c b/Parser/intrcheck.c index 2f151ee..a17041d 100644 --- a/Parser/intrcheck.c +++ b/Parser/intrcheck.c @@ -149,7 +149,7 @@ checksignals_witharg(void * arg) return PyErr_CheckSignals(); } -static RETSIGTYPE +static void intcatcher(int sig) { extern void Py_Exit(int); @@ -168,10 +168,9 @@ intcatcher(int sig) } signal(SIGINT, intcatcher); Py_AddPendingCall(checksignals_witharg, NULL); - Py_RETURN_FROM_SIGNAL_HANDLER(0); } -static RETSIGTYPE (*old_siginthandler)(int) = SIG_DFL; +static void (*old_siginthandler)(int) = SIG_DFL; void PyOS_InitInterrupts(void) diff --git a/README b/README index 67f3d99..a3ee0f8 100644 --- a/README +++ b/README @@ -652,9 +652,8 @@ has already been done for you). A good start is to copy the file config.h.in to config.h and edit the latter to reflect the actual configuration of your system. Most symbols must simply be defined as 1 only if the corresponding feature is present and can be left alone -otherwise; however RETSIGTYPE must always be defined, either as int or -as void, and the *_t type symbols must be defined as some variant of -int if they need to be defined at all. +otherwise; however the *_t type symbols must be defined as some variant +of int if they need to be defined at all. -- cgit v0.12