]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Yay! First fix I'm commiting on the way to 2.0.1
authorMoshe Zadka <moshez@math.huji.ac.il>
Thu, 29 Mar 2001 19:27:29 +0000 (19:27 +0000)
committerMoshe Zadka <moshez@math.huji.ac.il>
Thu, 29 Mar 2001 19:27:29 +0000 (19:27 +0000)
This is supposed to fix compilation problems of the curses
module on SGI, and is based on the patch from 2.39 to 2.40
This should fix bug #116172

From the 2.39->2.40 log:
* Check for 'sgi' preprocessor symbol, not '__sgi__'
* Surround individual character macros with #ifdef's, instead of making them
  all rely on STRICT_SYSV_CURSES

Metacomment: this is as much to test procedures as it is
to actually fix the bug. If you're a CVS wizard please look
at the checkin message to see I'm commiting correctly,
and e-mail me if not, and I'll do my best to back it out and
reread the docos.

Good luck to me.

Modules/_cursesmodule.c

index 1920ee0e8bc883011e4d7b0a22e7761cfe6c4a75..12e2084e6401381341c88a2993f960876a1d56c8 100644 (file)
@@ -78,7 +78,15 @@ char *PyCursesVersion = "1.6";
 #include <curses.h>
 #endif
 
-#if defined(__sgi__) || defined(__sun__)
+#ifdef sgi
+/*  This prototype is 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 an explicit
+    prototype here. */
+extern char *tigetstr(char *);
+#endif
+
+#if defined(sgi) || defined(__sun__)
 #define STRICT_SYSV_CURSES       /* Don't use ncurses extensions */
 typedef chtype attr_t;           /* No attr_t type is available */
 #endif
@@ -1739,13 +1747,27 @@ PyCurses_InitScr(PyObject *self, PyObject *args)
        SetDictInt("ACS_BSBS",          (ACS_HLINE));
        SetDictInt("ACS_SBSB",          (ACS_VLINE));
        SetDictInt("ACS_SSSS",          (ACS_PLUS));
-#ifndef STRICT_SYSV_CURSES
-  /* The following are never available with strict SYSV curses */
+
+       /* The following are never available with strict SYSV curses */
+#ifdef ACS_S3
        SetDictInt("ACS_S3",            (ACS_S3));
+#endif
+#ifdef ACS_S7
+       SetDictInt("ACS_S7",            (ACS_S7));
+#endif
+#ifdef ACS_LEQUAL
        SetDictInt("ACS_LEQUAL",        (ACS_LEQUAL));
+#endif
+#ifdef ACS_GEQUAL
        SetDictInt("ACS_GEQUAL",        (ACS_GEQUAL));
+#endif
+#ifdef ACS_PI
        SetDictInt("ACS_PI",            (ACS_PI));
+#endif
+#ifdef ACS_NEQUAL
        SetDictInt("ACS_NEQUAL",        (ACS_NEQUAL));
+#endif
+#ifdef ACS_STERLING
        SetDictInt("ACS_STERLING",      (ACS_STERLING));
 #endif
 
@@ -2270,12 +2292,24 @@ init_curses(void)
        SetDictInt("A_PROTECT",         A_PROTECT);
        SetDictInt("A_CHARTEXT",        A_CHARTEXT);
        SetDictInt("A_COLOR",           A_COLOR);
-#ifndef STRICT_SYSV_CURSES
+
+       /* The following are never available with strict SYSV curses */
+#ifdef A_HORIZONTAL
        SetDictInt("A_HORIZONTAL",      A_HORIZONTAL);
+#endif
+#ifdef A_LEFT
        SetDictInt("A_LEFT",            A_LEFT);
+#endif
+#ifdef A_LOW
        SetDictInt("A_LOW",             A_LOW);
+#endif
+#ifdef A_RIGHT
        SetDictInt("A_RIGHT",           A_RIGHT);
+#endif
+#ifdef A_TOP
        SetDictInt("A_TOP",             A_TOP);
+#endif
+#ifdef A_VERTICAL
        SetDictInt("A_VERTICAL",        A_VERTICAL);
 #endif