diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2017-10-31 16:12:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-31 16:12:35 +0200 |
commit | e0fc1af67acb5684ae780128fbdb3c5419af51db (patch) | |
tree | 1aa27148db54868cdf9a6c51a2e26564d4dfa68f /Modules/_cursesmodule.c | |
parent | 1d481822a6295e6739da2d5cca0fdbede51fda22 (diff) | |
download | cpython-git-e0fc1af67acb5684ae780128fbdb3c5419af51db.tar.gz |
[2.7] bpo-31891: Fix building the curses module on NetBSD. (GH-4165). (#4194)
(cherry picked from commit baac01e629d90f63dfde6b5cc433f4bc65c5feeb)
Diffstat (limited to 'Modules/_cursesmodule.c')
-rw-r--r-- | Modules/_cursesmodule.c | 73 |
1 files changed, 40 insertions, 33 deletions
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index 9eab741a01..fb51c43fe0 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -113,13 +113,13 @@ char *PyCursesVersion = "2.2"; #define CURSES_MODULE #include "py_curses.h" -/* These prototypes are in <term.h>, but including this header - #defines many common symbols (such as "lines") which breaks the - curses module in other ways. So the code will just specify - explicit prototypes here. */ -extern int setupterm(char *,int,int *); -#ifdef __sgi +#if defined(HAVE_TERM_H) || defined(__sgi) +/* For termname, longname, putp, tigetflag, tigetnum, tigetstr, tparm + which are not declared in SysV curses and for setupterm. */ #include <term.h> +/* Including <term.h> #defines many common symbols. */ +#undef lines +#undef columns #endif #if !defined(HAVE_NCURSES_H) && (defined(sgi) || defined(__sun) || defined(SCO5)) @@ -314,7 +314,9 @@ Window_NoArgNoReturnVoidFunction(wclrtobot) Window_NoArgNoReturnVoidFunction(wclear) Window_OneArgNoReturnVoidFunction(idcok, int, "i;True(1) or False(0)") +#ifdef HAVE_CURSES_IMMEDOK Window_OneArgNoReturnVoidFunction(immedok, int, "i;True(1) or False(0)") +#endif Window_OneArgNoReturnVoidFunction(wtimeout, int, "i;delay") Window_NoArg2TupleReturnFunction(getyx, int, "ii") @@ -324,21 +326,15 @@ Window_NoArg2TupleReturnFunction(getparyx, int, "ii") Window_OneArgNoReturnFunction(clearok, int, "i;True(1) or False(0)") Window_OneArgNoReturnFunction(idlok, int, "i;True(1) or False(0)") -#if defined(__NetBSD__) -Window_OneArgNoReturnVoidFunction(keypad, int, "i;True(1) or False(0)") -#else Window_OneArgNoReturnFunction(keypad, int, "i;True(1) or False(0)") -#endif Window_OneArgNoReturnFunction(leaveok, int, "i;True(1) or False(0)") -#if defined(__NetBSD__) -Window_OneArgNoReturnVoidFunction(nodelay, int, "i;True(1) or False(0)") -#else Window_OneArgNoReturnFunction(nodelay, int, "i;True(1) or False(0)") -#endif Window_OneArgNoReturnFunction(notimeout, int, "i;True(1) or False(0)") Window_OneArgNoReturnFunction(scrollok, int, "i;True(1) or False(0)") Window_OneArgNoReturnFunction(winsdelln, int, "i;nlines") +#ifdef HAVE_CURSES_SYNCOK Window_OneArgNoReturnFunction(syncok, int, "i;True(1) or False(0)") +#endif Window_TwoArgNoReturnFunction(mvwin, int, "ii;y,x") Window_TwoArgNoReturnFunction(mvderwin, int, "ii;y,x") @@ -894,12 +890,7 @@ PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args) } else if (rtn<=255) { return Py_BuildValue("c", rtn); } else { - const char *knp; -#if defined(__NetBSD__) - knp = unctrl(rtn); -#else - knp = keyname(rtn); -#endif + const char *knp = keyname(rtn); return PyString_FromString((knp == NULL) ? "" : knp); } } @@ -1598,7 +1589,9 @@ static PyMethodDef PyCursesWindow_Methods[] = { {"hline", (PyCFunction)PyCursesWindow_Hline, METH_VARARGS}, {"idcok", (PyCFunction)PyCursesWindow_idcok, METH_VARARGS}, {"idlok", (PyCFunction)PyCursesWindow_idlok, METH_VARARGS}, +#ifdef HAVE_CURSES_IMMEDOK {"immedok", (PyCFunction)PyCursesWindow_immedok, METH_VARARGS}, +#endif {"inch", (PyCFunction)PyCursesWindow_InCh, METH_VARARGS}, {"insch", (PyCFunction)PyCursesWindow_InsCh, METH_VARARGS}, {"insdelln", (PyCFunction)PyCursesWindow_winsdelln, METH_VARARGS}, @@ -1636,7 +1629,9 @@ static PyMethodDef PyCursesWindow_Methods[] = { {"subpad", (PyCFunction)PyCursesWindow_SubWin, METH_VARARGS}, {"subwin", (PyCFunction)PyCursesWindow_SubWin, METH_VARARGS}, {"syncdown", (PyCFunction)PyCursesWindow_wsyncdown, METH_NOARGS}, +#ifdef HAVE_CURSES_SYNCOK {"syncok", (PyCFunction)PyCursesWindow_syncok, METH_VARARGS}, +#endif {"syncup", (PyCFunction)PyCursesWindow_wsyncup, METH_NOARGS}, {"timeout", (PyCFunction)PyCursesWindow_wtimeout, METH_VARARGS}, {"touchline", (PyCFunction)PyCursesWindow_TouchLine, METH_VARARGS}, @@ -1710,6 +1705,7 @@ NoArgTrueFalseFunction(isendwin) NoArgNoReturnVoidFunction(flushinp) NoArgNoReturnVoidFunction(noqiflush) +#ifdef HAVE_CURSES_FILTER static PyObject * PyCurses_filter(PyObject *self) { @@ -1719,6 +1715,7 @@ PyCurses_filter(PyObject *self) Py_INCREF(Py_None); return Py_None; } +#endif static PyObject * PyCurses_Color_Content(PyObject *self, PyObject *args) @@ -1790,6 +1787,7 @@ PyCurses_EraseChar(PyObject *self) return PyString_FromStringAndSize(&ch, 1); } +#ifdef getsyx static PyObject * PyCurses_getsyx(PyObject *self) { @@ -1802,6 +1800,7 @@ PyCurses_getsyx(PyObject *self) return Py_BuildValue("(ii)", y, x); } +#endif #ifdef NCURSES_MOUSE_VERSION static PyObject * @@ -1873,9 +1872,9 @@ PyCurses_HalfDelay(PyObject *self, PyObject *args) return PyCursesCheckERR(halfdelay(tenths), "halfdelay"); } -#ifndef STRICT_SYSV_CURSES -/* No has_key! */ -static PyObject * PyCurses_has_key(PyObject *self, PyObject *args) +#ifdef HAVE_CURSES_HAS_KEY +static PyObject * +PyCurses_has_key(PyObject *self, PyObject *args) { int ch; @@ -1890,7 +1889,7 @@ static PyObject * PyCurses_has_key(PyObject *self, PyObject *args) Py_INCREF(Py_True); return Py_True; } -#endif /* STRICT_SYSV_CURSES */ +#endif static PyObject * PyCurses_Init_Color(PyObject *self, PyObject *args) @@ -2128,7 +2127,6 @@ PyCurses_Is_Term_Resized(PyObject *self, PyObject *args) } #endif /* HAVE_CURSES_IS_TERM_RESIZED */ -#if !defined(__NetBSD__) static PyObject * PyCurses_KeyName(PyObject *self, PyObject *args) { @@ -2147,7 +2145,6 @@ PyCurses_KeyName(PyObject *self, PyObject *args) return PyString_FromString((knp == NULL) ? "" : (char *)knp); } -#endif static PyObject * PyCurses_KillChar(PyObject *self) @@ -2443,6 +2440,7 @@ PyCurses_Resize_Term(PyObject *self, PyObject *args) } #endif /* HAVE_CURSES_RESIZE_TERM */ +#ifdef getsyx static PyObject * PyCurses_setsyx(PyObject *self, PyObject *args) { @@ -2462,6 +2460,7 @@ PyCurses_setsyx(PyObject *self, PyObject *args) Py_INCREF(Py_None); return Py_None; } +#endif static PyObject * PyCurses_Start_Color(PyObject *self) @@ -2556,6 +2555,7 @@ PyCurses_tparm(PyObject *self, PyObject *args) return PyString_FromString(result); } +#ifdef HAVE_CURSES_TYPEAHEAD static PyObject * PyCurses_TypeAhead(PyObject *self, PyObject *args) { @@ -2567,6 +2567,7 @@ PyCurses_TypeAhead(PyObject *self, PyObject *args) return PyCursesCheckERR(typeahead( fd ), "typeahead"); } +#endif static PyObject * PyCurses_UnCtrl(PyObject *self, PyObject *args) @@ -2618,6 +2619,7 @@ PyCurses_UngetCh(PyObject *self, PyObject *args) return PyCursesCheckERR(ungetch(ch), "ungetch"); } +#ifdef HAVE_CURSES_TYPEAHEAD static PyObject * PyCurses_Use_Env(PyObject *self, PyObject *args) { @@ -2636,6 +2638,7 @@ PyCurses_Use_Env(PyObject *self, PyObject *args) Py_INCREF(Py_None); return Py_None; } +#endif #ifndef STRICT_SYSV_CURSES static PyObject * @@ -2674,19 +2677,23 @@ static PyMethodDef PyCurses_methods[] = { {"echo", (PyCFunction)PyCurses_echo, METH_VARARGS}, {"endwin", (PyCFunction)PyCurses_endwin, METH_NOARGS}, {"erasechar", (PyCFunction)PyCurses_EraseChar, METH_NOARGS}, +#ifdef HAVE_CURSES_FILTER {"filter", (PyCFunction)PyCurses_filter, METH_NOARGS}, +#endif {"flash", (PyCFunction)PyCurses_flash, METH_NOARGS}, {"flushinp", (PyCFunction)PyCurses_flushinp, METH_NOARGS}, #ifdef NCURSES_MOUSE_VERSION {"getmouse", (PyCFunction)PyCurses_GetMouse, METH_NOARGS}, {"ungetmouse", (PyCFunction)PyCurses_UngetMouse, METH_VARARGS}, #endif +#ifdef getsyx {"getsyx", (PyCFunction)PyCurses_getsyx, METH_NOARGS}, +#endif {"getwin", (PyCFunction)PyCurses_GetWin, METH_O}, {"has_colors", (PyCFunction)PyCurses_has_colors, METH_NOARGS}, {"has_ic", (PyCFunction)PyCurses_has_ic, METH_NOARGS}, {"has_il", (PyCFunction)PyCurses_has_il, METH_NOARGS}, -#ifndef STRICT_SYSV_CURSES +#ifdef HAVE_CURSES_HAS_KEY {"has_key", (PyCFunction)PyCurses_has_key, METH_VARARGS}, #endif {"halfdelay", (PyCFunction)PyCurses_HalfDelay, METH_VARARGS}, @@ -2698,9 +2705,7 @@ static PyMethodDef PyCurses_methods[] = { #ifdef HAVE_CURSES_IS_TERM_RESIZED {"is_term_resized", (PyCFunction)PyCurses_Is_Term_Resized, METH_VARARGS}, #endif -#if !defined(__NetBSD__) {"keyname", (PyCFunction)PyCurses_KeyName, METH_VARARGS}, -#endif {"killchar", (PyCFunction)PyCurses_KillChar, METH_NOARGS}, {"longname", (PyCFunction)PyCurses_longname, METH_NOARGS}, {"meta", (PyCFunction)PyCurses_Meta, METH_VARARGS}, @@ -2732,7 +2737,9 @@ static PyMethodDef PyCurses_methods[] = { {"resize_term", (PyCFunction)PyCurses_Resize_Term, METH_VARARGS}, #endif {"savetty", (PyCFunction)PyCurses_savetty, METH_NOARGS}, +#ifdef getsyx {"setsyx", (PyCFunction)PyCurses_setsyx, METH_VARARGS}, +#endif {"setupterm", (PyCFunction)PyCurses_setupterm, METH_VARARGS|METH_KEYWORDS}, {"start_color", (PyCFunction)PyCurses_Start_Color, METH_NOARGS}, @@ -2742,10 +2749,14 @@ static PyMethodDef PyCurses_methods[] = { {"tigetnum", (PyCFunction)PyCurses_tigetnum, METH_VARARGS}, {"tigetstr", (PyCFunction)PyCurses_tigetstr, METH_VARARGS}, {"tparm", (PyCFunction)PyCurses_tparm, METH_VARARGS}, +#ifdef HAVE_CURSES_TYPEAHEAD {"typeahead", (PyCFunction)PyCurses_TypeAhead, METH_VARARGS}, +#endif {"unctrl", (PyCFunction)PyCurses_UnCtrl, METH_VARARGS}, {"ungetch", (PyCFunction)PyCurses_UngetCh, METH_VARARGS}, +#ifdef HAVE_CURSES_USE_ENV {"use_env", (PyCFunction)PyCurses_Use_Env, METH_VARARGS}, +#endif #ifndef STRICT_SYSV_CURSES {"use_default_colors", (PyCFunction)PyCurses_Use_Default_Colors, METH_NOARGS}, #endif @@ -2809,9 +2820,7 @@ init_curses(void) SetDictInt("A_DIM", A_DIM); SetDictInt("A_BOLD", A_BOLD); SetDictInt("A_ALTCHARSET", A_ALTCHARSET); -#if !defined(__NetBSD__) SetDictInt("A_INVIS", A_INVIS); -#endif SetDictInt("A_PROTECT", A_PROTECT); SetDictInt("A_CHARTEXT", A_CHARTEXT); SetDictInt("A_COLOR", A_COLOR); @@ -2883,7 +2892,6 @@ init_curses(void) int key; char *key_n; char *key_n2; -#if !defined(__NetBSD__) for (key=KEY_MIN;key < KEY_MAX; key++) { key_n = (char *)keyname(key); if (key_n == NULL || strcmp(key_n,"UNKNOWN KEY")==0) @@ -2911,7 +2919,6 @@ init_curses(void) if (key_n2 != key_n) free(key_n2); } -#endif SetDictInt("KEY_MIN", KEY_MIN); SetDictInt("KEY_MAX", KEY_MAX); } |