changeset 110:8af4072dc31a

Fix Win32/MinGW/PDcurses issues.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 24 Oct 2010 18:28:22 +0300
parents 1323a7f88c21
children 9db08807018f
files Makefile.w32 nnchat.c
diffstat 2 files changed, 17 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.w32	Sat Oct 23 02:55:45 2010 +0300
+++ b/Makefile.w32	Sun Oct 24 18:28:22 2010 +0300
@@ -6,11 +6,12 @@
 # C-compiler, flags and linker flags
 CC=gcc
 CFLAGS=-DHAVE_STRING_H -Ipdcurses
-LDFLAGS=-L/usr/local/i386-mingw32/lib/ pdcurses/pdcurses.a -liberty -lws2_32 -s
+LDFLAGS=-L/usr/local/i386-mingw32/lib/ -lmingw32 pdcurses/libpdcurses.a -liberty -lws2_32 -s
 
 # Miscellaneous
 EXEEXT=.exe
 OBJPATH=./win32/
-BINPATH=./win32/
+#BINPATH=./win32/
+BINPATH=/misc/wine_c/
 
 include Makefile.gen
--- a/nnchat.c	Sat Oct 23 02:55:45 2010 +0300
+++ b/nnchat.c	Sun Oct 24 18:28:22 2010 +0300
@@ -175,8 +175,15 @@
     if ((tmpTime = localtime(&timeStamp)) != NULL) {
         strftime(tmpStr, sizeof(tmpStr), "%H:%M:%S", tmpTime);
     }
-    
+
+#ifdef __WIN32
+    /* PDCurses does not like the hack used for ncurses to get a specific
+     * colour background .. so we just use something else, but uglier. :|
+     */
+    wbkgdset(statusWin, A_REVERSE | COLOR_PAIR(13));
+#else
     wbkgdset(statusWin, 0x0d00);
+#endif
     werase(statusWin);
     
     wattrset(statusWin, A_BOLD);
@@ -246,7 +253,7 @@
                 waddch(win, ((unsigned char) *s) | col);
                 s++;
             } else {
-                while (*s && isdigit((int) *s)) {
+                while (*s >= '0' && *s <= '9') {
                     val *= 10;
                     val += (*s - '0');
                     s++;
@@ -261,6 +268,10 @@
                 }
             }
         } else {
+#ifdef __WIN32
+            /* A little hack for win32 + PDCurses */
+            if (*s != '\r')
+#endif
             waddch(win, ((unsigned char) *s) | col);
             s++;
         }
@@ -798,6 +809,7 @@
         meta(stdscr, TRUE);
         timeout(SET_DELAY);
         curVis = curs_set(0);
+
         if (has_colors()) {
             start_color();
             
@@ -817,7 +829,6 @@
             init_pair(14, COLOR_BLUE,    COLOR_RED);
             init_pair(15, COLOR_MAGENTA, COLOR_RED);
             init_pair(16, COLOR_CYAN,    COLOR_RED);
-            
         }
         
         cursesInit = TRUE;