tDodgy "Win32/Unix portability" module, dopeos.c, removed. Portability functions are now in util.c (and try to use autoconf tests rather than host type wherever possible - e.g. !HAVE_GETOPT rather than CYGWIN). The "curses emulation" code for Win32 is now in the cursesport/ subdirectory, and is included only when necessary, just like the gtkport stuff. - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 35939c0229fb0782b3b559f710958696c5c67b16
 (DIR) parent 4740cc4af3b79373ce36943b8a88287e21ce8835
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Fri,  1 Mar 2002 12:51:13 +0000
       
       Dodgy "Win32/Unix portability" module, dopeos.c, removed. Portability functions
       are now in util.c (and try to use autoconf tests rather than host type
       wherever possible - e.g. !HAVE_GETOPT rather than CYGWIN). The "curses
       emulation" code for Win32 is now in the cursesport/ subdirectory, and is
       included only when necessary, just like the gtkport stuff.
       
       
       Diffstat:
         M config.h.in                         |       3 +++
         M configure                           |      16 +++++++++++++++-
         M configure.in                        |       6 +++++-
         M src/AIPlayer.c                      |       2 +-
         M src/Makefile.am                     |      13 +++++++++----
         M src/Makefile.in                     |      21 ++++++++++++---------
         M src/curses_client/curses_client.c   |      14 +++++++++++---
         A src/cursesport/Makefile.am          |       6 ++++++
         A src/cursesport/Makefile.in          |     325 +++++++++++++++++++++++++++++++
         A src/cursesport/cursesport.c         |     263 +++++++++++++++++++++++++++++++
         A src/cursesport/cursesport.h         |     106 ++++++++++++++++++++++++++++++
         D src/dopeos.c                        |     479 -------------------------------
         D src/dopeos.h                        |     172 ------------------------------
         M src/dopewars.c                      |       2 +-
         M src/dopewars.h                      |       2 +-
         M src/gui_client/gtk_client.c         |       2 +-
         M src/message.c                       |       2 +-
         M src/network.h                       |       4 ++++
         M src/serverside.c                    |       4 +---
         A src/util.c                          |     242 +++++++++++++++++++++++++++++++
         A src/util.h                          |      79 +++++++++++++++++++++++++++++++
         M src/winmain.c                       |       4 +---
       
       22 files changed, 1087 insertions(+), 680 deletions(-)
       ---
 (DIR) diff --git a/config.h.in b/config.h.in
       t@@ -118,6 +118,9 @@
        /* Define if you have the gethostbyname function.  */
        #undef HAVE_GETHOSTBYNAME
        
       +/* Define if you have the getopt function.  */
       +#undef HAVE_GETOPT
       +
        /* Define if you have the getopt_long function.  */
        #undef HAVE_GETOPT_LONG
        
 (DIR) diff --git a/configure b/configure
       t@@ -4280,7 +4280,7 @@ fi
        
        fi
        
       -for ac_func in strdup strstr getopt_long fork
       +for ac_func in strdup strstr getopt getopt_long fork
        do
        echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
        echo "configure:4287: checking for $ac_func" >&5
       t@@ -4588,6 +4588,16 @@ else
          GTKPORT_FALSE=
        fi
        
       +
       +
       +if test "$CURSES_CLIENT" = "yes"; then
       +  CURSESPORT_TRUE=
       +  CURSESPORT_FALSE='#'
       +else
       +  CURSESPORT_TRUE='#'
       +  CURSESPORT_FALSE=
       +fi
       +
        trap '' 1 2 15
        cat > confcache <<\EOF
        # This file is a shell script that caches the results of configure
       t@@ -4695,6 +4705,7 @@ src/Makefile
        src/gui_client/Makefile
        src/curses_client/Makefile
        src/gtkport/Makefile
       +src/cursesport/Makefile
        doc/Makefile
        intl/Makefile
        po/Makefile.in config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
       t@@ -4785,6 +4796,8 @@ s%@CURSES_CLIENT_TRUE@%$CURSES_CLIENT_TRUE%g
        s%@CURSES_CLIENT_FALSE@%$CURSES_CLIENT_FALSE%g
        s%@GTKPORT_TRUE@%$GTKPORT_TRUE%g
        s%@GTKPORT_FALSE@%$GTKPORT_FALSE%g
       +s%@CURSESPORT_TRUE@%$CURSESPORT_TRUE%g
       +s%@CURSESPORT_FALSE@%$CURSESPORT_FALSE%g
        
        CEOF
        EOF
       t@@ -4831,6 +4844,7 @@ src/Makefile
        src/gui_client/Makefile
        src/curses_client/Makefile
        src/gtkport/Makefile
       +src/cursesport/Makefile
        doc/Makefile
        intl/Makefile
        po/Makefile.in"}
 (DIR) diff --git a/configure.in b/configure.in
       t@@ -195,7 +195,7 @@ dnl Checks for library functions.
        AC_FUNC_MEMCMP
        AC_FUNC_SETVBUF_REVERSED
        AC_FUNC_STRFTIME
       -AC_CHECK_FUNCS(strdup strstr getopt_long fork)
       +AC_CHECK_FUNCS(strdup strstr getopt getopt_long fork)
        
        dnl Enable networking by default under Win32, but on Unix systems
        dnl make it dependent on the availability of select and socket
       t@@ -252,12 +252,16 @@ AM_CONDITIONAL(CURSES_CLIENT, test "$CURSES_CLIENT" = "yes")
        dnl Compile in the gtkport stuff for any kind of GUI
        AM_CONDITIONAL(GTKPORT, test "$GUI_CLIENT" = "yes" -o "$GUI_SERVER" = "yes")
        
       +dnl Compile in the cursesport stuff for the curses client only
       +AM_CONDITIONAL(CURSESPORT, test "$CURSES_CLIENT" = "yes")
       +
        AC_OUTPUT([
        Makefile
        src/Makefile
        src/gui_client/Makefile
        src/curses_client/Makefile
        src/gtkport/Makefile
       +src/cursesport/Makefile
        doc/Makefile
        intl/Makefile
        po/Makefile.in],
 (DIR) diff --git a/src/AIPlayer.c b/src/AIPlayer.c
       t@@ -29,11 +29,11 @@
        #include <sys/types.h>
        #include <errno.h>
        #include <glib.h>
       -#include "dopeos.h"
        #include "dopewars.h"
        #include "message.h"
        #include "nls.h"
        #include "tstring.h"
       +#include "util.h"
        #include "AIPlayer.h"
        
        #if NETWORKING
 (DIR) diff --git a/src/Makefile.am b/src/Makefile.am
       t@@ -13,12 +13,17 @@ GTKPORTSUBDIR = gtkport
        GTKPORTDEP = gtkport/libgtkport.a
        endif
        
       -SUBDIRS = $(GUISUBDIR) $(CURSESSUBDIR) $(GTKPORTSUBDIR)
       -dopewars_DEPENDENCIES = @INTLLIBS@ @WNDRES@ $(GUIDEP) $(CURSESDEP) $(GTKPORTDEP)
       -dopewars_LDADD = $(GUIDEP) $(CURSESDEP) $(GTKPORTDEP) @GTK_LIBS@ @INTLLIBS@ @WNDRES@
       +if CURSESPORT
       +CURSESPORTSUBDIR = cursesport
       +CURSESPORTDEP = cursesport/libcursesport.a
       +endif
       +
       +SUBDIRS = $(GUISUBDIR) $(CURSESSUBDIR) $(GTKPORTSUBDIR) $(CURSESPORTSUBDIR)
       +dopewars_DEPENDENCIES = @INTLLIBS@ @WNDRES@ $(GUIDEP) $(CURSESDEP) $(GTKPORTDEP) $(CURSESPORTDEP)
       +dopewars_LDADD = $(GUIDEP) $(CURSESDEP) $(GTKPORTDEP) $(CURSESPORTDEP) @GTK_LIBS@ @INTLLIBS@ @WNDRES@
        
        bin_PROGRAMS = dopewars
       -dopewars_SOURCES = admin.c admin.h AIPlayer.c AIPlayer.h dopeos.c dopeos.h \
       +dopewars_SOURCES = admin.c admin.h AIPlayer.c AIPlayer.h util.c util.h \
                           dopewars.c dopewars.h error.c error.h message.c message.h \
                           network.c network.h nls.h serverside.c serverside.h \
                           tstring.c tstring.h winmain.c winmain.h
 (DIR) diff --git a/src/Makefile.in b/src/Makefile.in
       t@@ -102,12 +102,15 @@ localedir = @localedir@
        @GTKPORT_TRUE@GTKPORTSUBDIR = @GTKPORT_TRUE@gtkport
        @GTKPORT_TRUE@GTKPORTDEP = @GTKPORT_TRUE@gtkport/libgtkport.a
        
       -SUBDIRS = $(GUISUBDIR) $(CURSESSUBDIR) $(GTKPORTSUBDIR)
       -dopewars_DEPENDENCIES = @INTLLIBS@ @WNDRES@ $(GUIDEP) $(CURSESDEP) $(GTKPORTDEP)
       -dopewars_LDADD = $(GUIDEP) $(CURSESDEP) $(GTKPORTDEP) @GTK_LIBS@ @INTLLIBS@ @WNDRES@
       +@CURSESPORT_TRUE@CURSESPORTSUBDIR = @CURSESPORT_TRUE@cursesport
       +@CURSESPORT_TRUE@CURSESPORTDEP = @CURSESPORT_TRUE@cursesport/libcursesport.a
       +
       +SUBDIRS = $(GUISUBDIR) $(CURSESSUBDIR) $(GTKPORTSUBDIR) $(CURSESPORTSUBDIR)
       +dopewars_DEPENDENCIES = @INTLLIBS@ @WNDRES@ $(GUIDEP) $(CURSESDEP) $(GTKPORTDEP) $(CURSESPORTDEP)
       +dopewars_LDADD = $(GUIDEP) $(CURSESDEP) $(GTKPORTDEP) $(CURSESPORTDEP) @GTK_LIBS@ @INTLLIBS@ @WNDRES@
        
        bin_PROGRAMS = dopewars
       -dopewars_SOURCES = admin.c admin.h AIPlayer.c AIPlayer.h dopeos.c dopeos.h \
       +dopewars_SOURCES = admin.c admin.h AIPlayer.c AIPlayer.h util.c util.h \
                           dopewars.c dopewars.h error.c error.h message.c message.h \
                           network.c network.h nls.h serverside.c serverside.h \
                           tstring.c tstring.h winmain.c winmain.h
       t@@ -127,7 +130,7 @@ PROGRAMS =  $(bin_PROGRAMS)
        CPPFLAGS = @CPPFLAGS@
        LDFLAGS = @LDFLAGS@
        LIBS = @LIBS@
       -dopewars_OBJECTS =  admin.o AIPlayer.o dopeos.o dopewars.o error.o \
       +dopewars_OBJECTS =  admin.o AIPlayer.o util.o dopewars.o error.o \
        message.o network.o serverside.o tstring.o winmain.o
        dopewars_LDFLAGS = 
        CFLAGS = @CFLAGS@
       t@@ -141,10 +144,10 @@ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
        
        TAR = gtar
        GZIP_ENV = --best
       -DIST_SUBDIRS =  gui_client curses_client gtkport
       -DEP_FILES =  .deps/AIPlayer.P .deps/admin.P .deps/dopeos.P \
       -.deps/dopewars.P .deps/error.P .deps/message.P .deps/network.P \
       -.deps/serverside.P .deps/tstring.P .deps/winmain.P
       +DIST_SUBDIRS =  gui_client curses_client gtkport cursesport
       +DEP_FILES =  .deps/AIPlayer.P .deps/admin.P .deps/dopewars.P \
       +.deps/error.P .deps/message.P .deps/network.P .deps/serverside.P \
       +.deps/tstring.P .deps/util.P .deps/winmain.P
        SOURCES = $(dopewars_SOURCES)
        OBJECTS = $(dopewars_OBJECTS)
        
 (DIR) diff --git a/src/curses_client/curses_client.c b/src/curses_client/curses_client.c
       t@@ -35,7 +35,7 @@
        #include <errno.h>
        #include <glib.h>
        #include "curses_client.h"
       -#include "dopeos.h"
       +#include "cursesport/cursesport.h"
        #include "dopewars.h"
        #include "message.h"
        #include "nls.h"
       t@@ -48,6 +48,16 @@ static void PrintHighScore(char *Data);
        static int ResizedFlag;
        static SCREEN *cur_screen;
        
       +#define PromptAttr   (COLOR_PAIR(1))
       +#define TextAttr     (COLOR_PAIR(2))
       +#define LocationAttr (COLOR_PAIR(3)|A_BOLD)
       +#define TitleAttr    (COLOR_PAIR(4))
       +#define StatsAttr    (COLOR_PAIR(5))
       +#define DebtAttr     (COLOR_PAIR(6))
       +
       +/* Current size of the screen */
       +static int Width, Depth;
       +
        #ifdef NETWORKING
        static enum {
          CM_SERVER, CM_PROMPT, CM_META, CM_SINGLE
       t@@ -308,10 +318,8 @@ static gboolean SelectServerFromMetaServer(Player *Play, GString *errstr)
            if (FD_ISSET(0, &readfds)) {
              /* So that Ctrl-L works */
              c = getch();
       -#ifndef CYGWIN
              if (c == '\f')
                wrefresh(curscr);
       -#endif
            }
            if (RespondToSelect
                (&MetaConn->NetBuf, &readfds, &writefds, NULL, &DoneOK)) {
 (DIR) diff --git a/src/cursesport/Makefile.am b/src/cursesport/Makefile.am
       t@@ -0,0 +1,6 @@
       +noinst_LIBRARIES = libcursesport.a
       +libcursesport_a_SOURCES = cursesport.c cursesport.h
       +libcursesport_a_DEPENDENCIES = @INTLLIBS@
       +INCLUDES   = -I../../intl -I${srcdir} -I${srcdir}/.. -I../..
       +LDADD      = @INTLLIBS@
       +DEFS       = @DEFS@ -DLOCALEDIR=\"${localedir}\"
 (DIR) diff --git a/src/cursesport/Makefile.in b/src/cursesport/Makefile.in
       t@@ -0,0 +1,325 @@
       +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
       +
       +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
       +# This Makefile.in is free software; the Free Software Foundation
       +# gives unlimited permission to copy and/or distribute it,
       +# with or without modifications, as long as this notice is preserved.
       +
       +# This program is distributed in the hope that it will be useful,
       +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
       +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
       +# PARTICULAR PURPOSE.
       +
       +
       +SHELL = @SHELL@
       +
       +srcdir = @srcdir@
       +top_srcdir = @top_srcdir@
       +VPATH = @srcdir@
       +prefix = @prefix@
       +exec_prefix = @exec_prefix@
       +
       +bindir = @bindir@
       +sbindir = @sbindir@
       +libexecdir = @libexecdir@
       +datadir = @datadir@
       +sysconfdir = @sysconfdir@
       +sharedstatedir = @sharedstatedir@
       +localstatedir = @localstatedir@
       +libdir = @libdir@
       +infodir = @infodir@
       +mandir = @mandir@
       +includedir = @includedir@
       +oldincludedir = /usr/include
       +
       +DESTDIR =
       +
       +pkgdatadir = $(datadir)/@PACKAGE@
       +pkglibdir = $(libdir)/@PACKAGE@
       +pkgincludedir = $(includedir)/@PACKAGE@
       +
       +top_builddir = ../..
       +
       +ACLOCAL = @ACLOCAL@
       +AUTOCONF = @AUTOCONF@
       +AUTOMAKE = @AUTOMAKE@
       +AUTOHEADER = @AUTOHEADER@
       +
       +INSTALL = @INSTALL@
       +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
       +INSTALL_DATA = @INSTALL_DATA@
       +INSTALL_SCRIPT = @INSTALL_SCRIPT@
       +transform = @program_transform_name@
       +
       +NORMAL_INSTALL = :
       +PRE_INSTALL = :
       +POST_INSTALL = :
       +NORMAL_UNINSTALL = :
       +PRE_UNINSTALL = :
       +POST_UNINSTALL = :
       +host_alias = @host_alias@
       +host_triplet = @host@
       +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
       +CATALOGS = @CATALOGS@
       +CATOBJEXT = @CATOBJEXT@
       +CC = @CC@
       +DATADIRNAME = @DATADIRNAME@
       +GENCAT = @GENCAT@
       +GLIBC21 = @GLIBC21@
       +GLIB_CFLAGS = @GLIB_CFLAGS@
       +GLIB_CONFIG = @GLIB_CONFIG@
       +GLIB_LIBS = @GLIB_LIBS@
       +GMOFILES = @GMOFILES@
       +GMSGFMT = @GMSGFMT@
       +GTK_CFLAGS = @GTK_CFLAGS@
       +GTK_CONFIG = @GTK_CONFIG@
       +GTK_LIBS = @GTK_LIBS@
       +INSTOBJEXT = @INSTOBJEXT@
       +INTLBISON = @INTLBISON@
       +INTLLIBS = @INTLLIBS@
       +INTLOBJS = @INTLOBJS@
       +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
       +LIBICONV = @LIBICONV@
       +MAKEINFO = @MAKEINFO@
       +MKINSTALLDIRS = @MKINSTALLDIRS@
       +MSGFMT = @MSGFMT@
       +PACKAGE = @PACKAGE@
       +POFILES = @POFILES@
       +POSUB = @POSUB@
       +RANLIB = @RANLIB@
       +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
       +USE_NLS = @USE_NLS@
       +VERSION = @VERSION@
       +WNDRES = @WNDRES@
       +localedir = @localedir@
       +
       +noinst_LIBRARIES = libcursesport.a
       +libcursesport_a_SOURCES = cursesport.c cursesport.h
       +libcursesport_a_DEPENDENCIES = @INTLLIBS@
       +INCLUDES = -I../../intl -I${srcdir} -I${srcdir}/.. -I../..
       +LDADD = @INTLLIBS@
       +DEFS = @DEFS@ -DLOCALEDIR=\"${localedir}\"
       +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
       +CONFIG_HEADER = ../../config.h
       +CONFIG_CLEAN_FILES = 
       +LIBRARIES =  $(noinst_LIBRARIES)
       +
       +CPPFLAGS = @CPPFLAGS@
       +LDFLAGS = @LDFLAGS@
       +LIBS = @LIBS@
       +libcursesport_a_LIBADD = 
       +libcursesport_a_OBJECTS =  cursesport.o
       +AR = ar
       +CFLAGS = @CFLAGS@
       +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
       +CCLD = $(CC)
       +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
       +DIST_COMMON =  Makefile.am Makefile.in
       +
       +
       +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
       +
       +TAR = gtar
       +GZIP_ENV = --best
       +DEP_FILES =  .deps/cursesport.P
       +SOURCES = $(libcursesport_a_SOURCES)
       +OBJECTS = $(libcursesport_a_OBJECTS)
       +
       +all: all-redirect
       +.SUFFIXES:
       +.SUFFIXES: .S .c .o .s
       +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) 
       +        cd $(top_srcdir) && $(AUTOMAKE) --gnu src/cursesport/Makefile
       +
       +Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status $(BUILT_SOURCES)
       +        cd $(top_builddir) \
       +          && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
       +
       +
       +mostlyclean-noinstLIBRARIES:
       +
       +clean-noinstLIBRARIES:
       +        -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
       +
       +distclean-noinstLIBRARIES:
       +
       +maintainer-clean-noinstLIBRARIES:
       +
       +.s.o:
       +        $(COMPILE) -c $<
       +
       +.S.o:
       +        $(COMPILE) -c $<
       +
       +mostlyclean-compile:
       +        -rm -f *.o core *.core
       +
       +clean-compile:
       +
       +distclean-compile:
       +        -rm -f *.tab.c
       +
       +maintainer-clean-compile:
       +
       +libcursesport.a: $(libcursesport_a_OBJECTS) $(libcursesport_a_DEPENDENCIES)
       +        -rm -f libcursesport.a
       +        $(AR) cru libcursesport.a $(libcursesport_a_OBJECTS) $(libcursesport_a_LIBADD)
       +        $(RANLIB) libcursesport.a
       +
       +tags: TAGS
       +
       +ID: $(HEADERS) $(SOURCES) $(LISP)
       +        list='$(SOURCES) $(HEADERS)'; \
       +        unique=`for i in $$list; do echo $$i; done | \
       +          awk '    { files[$$0] = 1; } \
       +               END { for (i in files) print i; }'`; \
       +        here=`pwd` && cd $(srcdir) \
       +          && mkid -f$$here/ID $$unique $(LISP)
       +
       +TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
       +        tags=; \
       +        here=`pwd`; \
       +        list='$(SOURCES) $(HEADERS)'; \
       +        unique=`for i in $$list; do echo $$i; done | \
       +          awk '    { files[$$0] = 1; } \
       +               END { for (i in files) print i; }'`; \
       +        test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
       +          || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $$unique $(LISP) -o $$here/TAGS)
       +
       +mostlyclean-tags:
       +
       +clean-tags:
       +
       +distclean-tags:
       +        -rm -f TAGS ID
       +
       +maintainer-clean-tags:
       +
       +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
       +
       +subdir = src/cursesport
       +
       +distdir: $(DISTFILES)
       +        here=`cd $(top_builddir) && pwd`; \
       +        top_distdir=`cd $(top_distdir) && pwd`; \
       +        distdir=`cd $(distdir) && pwd`; \
       +        cd $(top_srcdir) \
       +          && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/cursesport/Makefile
       +        @for file in $(DISTFILES); do \
       +          d=$(srcdir); \
       +          if test -d $$d/$$file; then \
       +            cp -pr $$d/$$file $(distdir)/$$file; \
       +          else \
       +            test -f $(distdir)/$$file \
       +            || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
       +            || cp -p $$d/$$file $(distdir)/$$file || :; \
       +          fi; \
       +        done
       +
       +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
       +
       +-include $(DEP_FILES)
       +
       +mostlyclean-depend:
       +
       +clean-depend:
       +
       +distclean-depend:
       +        -rm -rf .deps
       +
       +maintainer-clean-depend:
       +
       +%.o: %.c
       +        @echo '$(COMPILE) -c $<'; \
       +        $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
       +        @-cp .deps/$(*F).pp .deps/$(*F).P; \
       +        tr ' ' '\012' < .deps/$(*F).pp \
       +          | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
       +            >> .deps/$(*F).P; \
       +        rm .deps/$(*F).pp
       +
       +%.lo: %.c
       +        @echo '$(LTCOMPILE) -c $<'; \
       +        $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
       +        @-sed -e 's/^\([^:]*\)\.o[         ]*:/\1.lo \1.o :/' \
       +          < .deps/$(*F).pp > .deps/$(*F).P; \
       +        tr ' ' '\012' < .deps/$(*F).pp \
       +          | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
       +            >> .deps/$(*F).P; \
       +        rm -f .deps/$(*F).pp
       +info-am:
       +info: info-am
       +dvi-am:
       +dvi: dvi-am
       +check-am: all-am
       +check: check-am
       +installcheck-am:
       +installcheck: installcheck-am
       +install-exec-am:
       +install-exec: install-exec-am
       +
       +install-data-am:
       +install-data: install-data-am
       +
       +install-am: all-am
       +        @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
       +install: install-am
       +uninstall-am:
       +uninstall: uninstall-am
       +all-am: Makefile $(LIBRARIES)
       +all-redirect: all-am
       +install-strip:
       +        $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
       +installdirs:
       +
       +
       +mostlyclean-generic:
       +
       +clean-generic:
       +
       +distclean-generic:
       +        -rm -f Makefile $(CONFIG_CLEAN_FILES)
       +        -rm -f config.cache config.log stamp-h stamp-h[0-9]*
       +
       +maintainer-clean-generic:
       +mostlyclean-am:  mostlyclean-noinstLIBRARIES mostlyclean-compile \
       +                mostlyclean-tags mostlyclean-depend mostlyclean-generic
       +
       +mostlyclean: mostlyclean-am
       +
       +clean-am:  clean-noinstLIBRARIES clean-compile clean-tags clean-depend \
       +                clean-generic mostlyclean-am
       +
       +clean: clean-am
       +
       +distclean-am:  distclean-noinstLIBRARIES distclean-compile \
       +                distclean-tags distclean-depend distclean-generic \
       +                clean-am
       +
       +distclean: distclean-am
       +
       +maintainer-clean-am:  maintainer-clean-noinstLIBRARIES \
       +                maintainer-clean-compile maintainer-clean-tags \
       +                maintainer-clean-depend maintainer-clean-generic \
       +                distclean-am
       +        @echo "This command is intended for maintainers to use;"
       +        @echo "it deletes files that may require special tools to rebuild."
       +
       +maintainer-clean: maintainer-clean-am
       +
       +.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \
       +clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
       +mostlyclean-compile distclean-compile clean-compile \
       +maintainer-clean-compile tags mostlyclean-tags distclean-tags \
       +clean-tags maintainer-clean-tags distdir mostlyclean-depend \
       +distclean-depend clean-depend maintainer-clean-depend info-am info \
       +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \
       +install-exec install-data-am install-data install-am install \
       +uninstall-am uninstall all-redirect all-am all installdirs \
       +mostlyclean-generic distclean-generic clean-generic \
       +maintainer-clean-generic clean mostlyclean distclean maintainer-clean
       +
       +
       +# Tell versions [3.59,3.63) of GNU make to not export all variables.
       +# Otherwise a system limit (for SysV at least) may be exceeded.
       +.NOEXPORT:
 (DIR) diff --git a/src/cursesport/cursesport.c b/src/cursesport/cursesport.c
       t@@ -0,0 +1,263 @@
       +/************************************************************************
       + * cursesport.c   Portability functions to enable curses applications   *
       + *                     to be built on Win32 systems                     *
       + * Copyright (C)  1998-2002  Ben Webb                                   *
       + *                Email: ben@bellatrix.pcl.ox.ac.uk                     *
       + *                WWW: http://dopewars.sourceforge.net/                 *
       + *                                                                      *
       + * This program is free software; you can redistribute it and/or        *
       + * modify it under the terms of the GNU General Public License          *
       + * as published by the Free Software Foundation; either version 2       *
       + * of the License, or (at your option) any later version.               *
       + *                                                                      *
       + * This program is distributed in the hope that it will be useful,      *
       + * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
       + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
       + * GNU General Public License for more details.                         *
       + *                                                                      *
       + * You should have received a copy of the GNU General Public License    *
       + * along with this program; if not, write to the Free Software          *
       + * Foundation, Inc., 59 Temple Place - Suite 330, Boston,               *
       + *                   MA  02111-1307, USA.                               *
       + ************************************************************************/
       +
       +#ifdef HAVE_CONFIG_H
       +#include <config.h>
       +#endif
       +
       +#include "cursesport.h"
       +
       +#ifdef CYGWIN                   /* Code for native Win32 build under Cygwin */
       +
       +int COLS, LINES;
       +
       +static int Width, Depth;
       +static CHAR_INFO RealScreen[25][80], VirtualScreen[25][80];
       +static HANDLE hOut, hIn;
       +static WORD CurAttr = 0;
       +static int CurX, CurY;
       +static WORD Attr[10];
       +
       +void refresh(void)
       +{
       +  int y;
       +  COORD size, offset;
       +  SMALL_RECT screenpos;
       +
       +  for (y = 0; y < Depth; y++) {
       +    if (memcmp(&RealScreen[y][0], &VirtualScreen[y][0],
       +               sizeof(CHAR_INFO) * Width) != 0) {
       +      memcpy(&RealScreen[y][0], &VirtualScreen[y][0],
       +             Width * sizeof(CHAR_INFO));
       +      size.X = Width;
       +      size.Y = 1;
       +      offset.X = offset.Y = 0;
       +      screenpos.Left = 0;
       +      screenpos.Top = y;
       +      screenpos.Right = Width - 1;
       +      screenpos.Bottom = y;
       +      WriteConsoleOutput(hOut, &VirtualScreen[y][0], size,
       +                         offset, &screenpos);
       +    }
       +  }
       +}
       +
       +static HANDLE WINAPI GetConHandle(TCHAR *pszName)
       +{
       +  SECURITY_ATTRIBUTES sa;
       +
       +  sa.nLength = sizeof(sa);
       +  sa.lpSecurityDescriptor = NULL;
       +  sa.bInheritHandle = TRUE;
       +  return CreateFile(pszName, GENERIC_READ | GENERIC_WRITE,
       +                    FILE_SHARE_READ | FILE_SHARE_WRITE,
       +                    &sa, OPEN_EXISTING, (DWORD)0, (HANDLE)0);
       +}
       +
       +SCREEN *newterm(void *a, void *b, void *c)
       +{
       +  COORD coord;
       +  int i;
       +
       +  coord.X = 80;
       +  coord.Y = 25;
       +  Width = COLS = 80;
       +  Depth = LINES = 25;
       +  CurAttr = 1 << 8;
       +  CurX = 0;
       +  CurY = 0;
       +  for (i = 0; i < 10; i++)
       +    Attr[i] = FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN;
       +  hOut = GetConHandle("CONOUT$");
       +  hIn = GetConHandle("CONIN$");
       +  SetConsoleMode(hIn, 0);
       +  return NULL;
       +}
       +
       +void start_color(void)
       +{
       +}
       +
       +void init_pair(int index, WORD fg, WORD bg)
       +{
       +  if (index >= 0 && index < 10) {
       +    Attr[index] = 0;
       +    switch (fg) {
       +    case COLOR_MAGENTA:
       +      Attr[index] |= (FOREGROUND_RED + FOREGROUND_BLUE);
       +      break;
       +    case COLOR_BLUE:
       +      Attr[index] |= FOREGROUND_BLUE;
       +      break;
       +    case COLOR_RED:
       +      Attr[index] |= FOREGROUND_RED;
       +      break;
       +    case COLOR_WHITE:
       +      Attr[index] |= (FOREGROUND_RED + FOREGROUND_BLUE + FOREGROUND_GREEN);
       +      break;
       +    }
       +    switch (bg) {
       +    case COLOR_MAGENTA:
       +      Attr[index] |= (BACKGROUND_RED + BACKGROUND_BLUE);
       +      break;
       +    case COLOR_BLUE:
       +      Attr[index] |= BACKGROUND_BLUE;
       +      break;
       +    case COLOR_RED:
       +      Attr[index] |= BACKGROUND_RED;
       +      break;
       +    case COLOR_WHITE:
       +      Attr[index] |= (BACKGROUND_RED + BACKGROUND_BLUE + BACKGROUND_GREEN);
       +      break;
       +    }
       +  }
       +}
       +
       +void cbreak(void)
       +{
       +}
       +
       +void noecho(void)
       +{
       +}
       +
       +void nodelay(void *a, char b)
       +{
       +}
       +
       +void keypad(void *a, char b)
       +{
       +}
       +
       +void curs_set(BOOL visible)
       +{
       +  CONSOLE_CURSOR_INFO ConCurInfo;
       +
       +  move(CurY, CurX);
       +  ConCurInfo.dwSize = 10;
       +  ConCurInfo.bVisible = visible;
       +  SetConsoleCursorInfo(hOut, &ConCurInfo);
       +}
       +
       +void endwin(void)
       +{
       +  CurAttr = 0;
       +  refresh();
       +  curs_set(1);
       +}
       +
       +void move(int y, int x)
       +{
       +  COORD coord;
       +
       +  CurX = x;
       +  CurY = y;
       +  coord.X = x;
       +  coord.Y = y;
       +  SetConsoleCursorPosition(hOut, coord);
       +}
       +
       +void attrset(WORD newAttr)
       +{
       +  CurAttr = newAttr;
       +}
       +
       +void addstr(char *str)
       +{
       +  int i;
       +
       +  for (i = 0; i < strlen(str); i++)
       +    addch(str[i]);
       +  move(CurY, CurX);
       +}
       +
       +void addch(int ch)
       +{
       +  int attr;
       +
       +  VirtualScreen[CurY][CurX].Char.AsciiChar = ch % 256;
       +  attr = ch >> 8;
       +  if (attr > 0)
       +    VirtualScreen[CurY][CurX].Attributes = Attr[attr];
       +  else
       +    VirtualScreen[CurY][CurX].Attributes = Attr[CurAttr >> 8];
       +  if (++CurX >= Width) {
       +    CurX = 0;
       +    if (++CurY >= Depth)
       +      CurY = 0;
       +  }
       +}
       +
       +void mvaddstr(int y, int x, char *str)
       +{
       +  move(y, x);
       +  addstr(str);
       +}
       +
       +void mvaddch(int y, int x, int ch)
       +{
       +  move(y, x);
       +  addch(ch);
       +}
       +
       +/* 
       + * Waits for the user to press a key.
       + */
       +int bgetch(void)
       +{
       +  DWORD NumRead;
       +  char Buffer[10];
       +
       +  refresh();
       +  ReadConsole(hIn, Buffer, 1, &NumRead, NULL);
       +  return (int)(Buffer[0]);
       +}
       +
       +void standout(void)
       +{
       +}
       +
       +void standend(void)
       +{
       +}
       +
       +#else /* Code for Unix build */
       +
       +/* 
       + * Calls the curses getch() function; if the key pressed is Ctrl-L
       + * then automatically clears and redraws the screen, otherwise
       + * passes the key back to the calling routine.
       + */
       +int bgetch()
       +{
       +  int c;
       +
       +  c = getch();
       +  while (c == '\f') {
       +    wrefresh(curscr);
       +    c = getch();
       +  }
       +  return c;
       +}
       +
       +#endif /* CYGWIN */
 (DIR) diff --git a/src/cursesport/cursesport.h b/src/cursesport/cursesport.h
       t@@ -0,0 +1,106 @@
       +/************************************************************************
       + * cursesport.h   Portability functions to enable curses applications   *
       + *                     to be built on Win32 systems                     *
       + * Copyright (C)  1998-2002  Ben Webb                                   *
       + *                Email: ben@bellatrix.pcl.ox.ac.uk                     *
       + *                WWW: http://dopewars.sourceforge.net/                 *
       + *                                                                      *
       + * This program is free software; you can redistribute it and/or        *
       + * modify it under the terms of the GNU General Public License          *
       + * as published by the Free Software Foundation; either version 2       *
       + * of the License, or (at your option) any later version.               *
       + *                                                                      *
       + * This program is distributed in the hope that it will be useful,      *
       + * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
       + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
       + * GNU General Public License for more details.                         *
       + *                                                                      *
       + * You should have received a copy of the GNU General Public License    *
       + * along with this program; if not, write to the Free Software          *
       + * Foundation, Inc., 59 Temple Place - Suite 330, Boston,               *
       + *                   MA  02111-1307, USA.                               *
       + ************************************************************************/
       +
       +#ifndef __CURSESPORT_H__
       +#define __CURSESPORT_H__
       +
       +#ifdef HAVE_CONFIG_H
       +#include <config.h>
       +#endif
       +
       +#ifdef CYGWIN                   /* Definitions for native Win32 build */
       +#include <windows.h>
       +#include <string.h>
       +
       +#include <stdio.h>
       +#include <conio.h>
       +
       +extern int COLS, LINES;
       +
       +#define COLOR_MAGENTA 1
       +#define COLOR_BLACK   2
       +#define COLOR_WHITE   3
       +#define COLOR_BLUE    4
       +#define COLOR_RED     5
       +
       +#define COLOR_PAIR(i) ((i) << 8)
       +
       +#define ACS_VLINE       179
       +#define ACS_ULCORNER    218
       +#define ACS_HLINE       196
       +#define ACS_URCORNER    191
       +#define ACS_TTEE        194
       +#define ACS_LLCORNER    192
       +#define ACS_LRCORNER    217
       +#define ACS_BTEE        193
       +#define ACS_LTEE        195
       +#define ACS_RTEE        180
       +
       +typedef int SCREEN;
       +
       +#define stdscr        0
       +#define curscr        0
       +#define KEY_ENTER     13
       +#define KEY_BACKSPACE 8
       +#define A_BOLD        0
       +
       +SCREEN *newterm(void *, void *, void *);
       +void refresh(void);
       +#define wrefresh(win) refresh()
       +void start_color(void);
       +void init_pair(int index, WORD fg, WORD bg);
       +void cbreak(void);
       +void noecho(void);
       +void nodelay(void *, char);
       +void keypad(void *, char);
       +void curs_set(BOOL visible);
       +void endwin(void);
       +void move(int y, int x);
       +void attrset(WORD newAttr);
       +void addstr(char *str);
       +void addch(int ch);
       +void mvaddstr(int x, int y, char *str);
       +void mvaddch(int x, int y, int ch);
       +
       +#define erase() clear_screen()
       +
       +void standout(void);
       +void standend(void);
       +void endwin(void);
       +
       +#else /* Definitions for Unix build */
       +
       +/* Include a suitable curses-type library */
       +#if HAVE_LIBNCURSES
       +#include <ncurses.h>
       +#elif HAVE_LIBCURSES
       +#include <curses.h>
       +#elif HAVE_LIBCUR_COLR
       +#include <curses_colr/curses.h>
       +#endif
       +
       +#endif /* CYGWIN */
       +
       +int bgetch(void);
       +
       +#endif /* __CURSESPORT_H__ */
 (DIR) diff --git a/src/dopeos.c b/src/dopeos.c
       t@@ -1,479 +0,0 @@
       -/************************************************************************
       - * dopeos.c       dopewars - operating-system-specific functions        *
       - * Copyright (C)  1998-2002  Ben Webb                                   *
       - *                Email: ben@bellatrix.pcl.ox.ac.uk                     *
       - *                WWW: http://dopewars.sourceforge.net/                 *
       - *                                                                      *
       - * This program is free software; you can redistribute it and/or        *
       - * modify it under the terms of the GNU General Public License          *
       - * as published by the Free Software Foundation; either version 2       *
       - * of the License, or (at your option) any later version.               *
       - *                                                                      *
       - * This program is distributed in the hope that it will be useful,      *
       - * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
       - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
       - * GNU General Public License for more details.                         *
       - *                                                                      *
       - * You should have received a copy of the GNU General Public License    *
       - * along with this program; if not, write to the Free Software          *
       - * Foundation, Inc., 59 Temple Place - Suite 330, Boston,               *
       - *                   MA  02111-1307, USA.                               *
       - ************************************************************************/
       -
       -#ifdef HAVE_CONFIG_H
       -#include <config.h>
       -#endif
       -
       -#include "dopeos.h"
       -#include "dopewars.h"
       -
       -#ifdef CYGWIN                   /* Code for native Win32 build under Cygwin */
       -
       -#include <conio.h>
       -
       -CHAR_INFO RealScreen[25][80], VirtualScreen[25][80];
       -HANDLE hOut, hIn;
       -
       -void refresh()
       -{
       -  int y;
       -  COORD size, offset;
       -  SMALL_RECT screenpos;
       -
       -  for (y = 0; y < Depth; y++) {
       -    if (memcmp(&RealScreen[y][0], &VirtualScreen[y][0],
       -               sizeof(CHAR_INFO) * Width) != 0) {
       -      memcpy(&RealScreen[y][0], &VirtualScreen[y][0],
       -             Width * sizeof(CHAR_INFO));
       -      size.X = Width;
       -      size.Y = 1;
       -      offset.X = offset.Y = 0;
       -      screenpos.Left = 0;
       -      screenpos.Top = y;
       -      screenpos.Right = Width - 1;
       -      screenpos.Bottom = y;
       -      WriteConsoleOutput(hOut, &VirtualScreen[y][0], size,
       -                         offset, &screenpos);
       -    }
       -  }
       -}
       -
       -HANDLE WINAPI GetConHandle(TCHAR *pszName)
       -{
       -  SECURITY_ATTRIBUTES sa;
       -
       -  sa.nLength = sizeof(sa);
       -  sa.lpSecurityDescriptor = NULL;
       -  sa.bInheritHandle = TRUE;
       -  return CreateFile(pszName, GENERIC_READ | GENERIC_WRITE,
       -                    FILE_SHARE_READ | FILE_SHARE_WRITE,
       -                    &sa, OPEN_EXISTING, (DWORD)0, (HANDLE)0);
       -}
       -
       -WORD CurAttr = 0, TextAttr = 2 << 8;
       -WORD PromptAttr = 1 << 8, TitleAttr = 4 << 8;
       -WORD LocationAttr = 3 << 8, StatsAttr = 5 << 8, DebtAttr = 6 << 8;
       -int Width, Depth, CurX, CurY;
       -char *optarg;
       -WORD Attr[10];
       -HWND hwndMain;
       -
       -SCREEN *newterm(void *a, void *b, void *c)
       -{
       -  COORD coord;
       -  int i;
       -
       -  coord.X = 80;
       -  coord.Y = 25;
       -  Width = 80;
       -  Depth = 25;
       -  CurAttr = TextAttr;
       -  CurX = 0;
       -  CurY = 0;
       -  for (i = 0; i < 10; i++)
       -    Attr[i] = FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN;
       -  hOut = GetConHandle("CONOUT$");
       -  hIn = GetConHandle("CONIN$");
       -  SetConsoleMode(hIn, 0);
       -  return NULL;
       -}
       -
       -void start_color()
       -{
       -}
       -
       -void init_pair(int index, WORD fg, WORD bg)
       -{
       -  if (index >= 0 && index < 10) {
       -    Attr[index] = 0;
       -    switch (fg) {
       -    case COLOR_MAGENTA:
       -      Attr[index] |= (FOREGROUND_RED + FOREGROUND_BLUE);
       -      break;
       -    case COLOR_BLUE:
       -      Attr[index] |= FOREGROUND_BLUE;
       -      break;
       -    case COLOR_RED:
       -      Attr[index] |= FOREGROUND_RED;
       -      break;
       -    case COLOR_WHITE:
       -      Attr[index] |= (FOREGROUND_RED + FOREGROUND_BLUE + FOREGROUND_GREEN);
       -      break;
       -    }
       -    switch (bg) {
       -    case COLOR_MAGENTA:
       -      Attr[index] |= (BACKGROUND_RED + BACKGROUND_BLUE);
       -      break;
       -    case COLOR_BLUE:
       -      Attr[index] |= BACKGROUND_BLUE;
       -      break;
       -    case COLOR_RED:
       -      Attr[index] |= BACKGROUND_RED;
       -      break;
       -    case COLOR_WHITE:
       -      Attr[index] |= (BACKGROUND_RED + BACKGROUND_BLUE + BACKGROUND_GREEN);
       -      break;
       -    }
       -  }
       -}
       -
       -void cbreak()
       -{
       -}
       -
       -void noecho()
       -{
       -}
       -
       -void nodelay(void *a, char b)
       -{
       -}
       -
       -void keypad(void *a, char b)
       -{
       -}
       -
       -void curs_set(BOOL visible)
       -{
       -  CONSOLE_CURSOR_INFO ConCurInfo;
       -
       -  move(CurY, CurX);
       -  ConCurInfo.dwSize = 10;
       -  ConCurInfo.bVisible = visible;
       -  SetConsoleCursorInfo(hOut, &ConCurInfo);
       -}
       -
       -void endwin()
       -{
       -  CurAttr = 0;
       -  refresh();
       -  curs_set(1);
       -}
       -
       -void move(int y, int x)
       -{
       -  COORD coord;
       -
       -  CurX = x;
       -  CurY = y;
       -  coord.X = x;
       -  coord.Y = y;
       -  SetConsoleCursorPosition(hOut, coord);
       -}
       -
       -void attrset(WORD newAttr)
       -{
       -  CurAttr = newAttr;
       -}
       -
       -void addstr(char *str)
       -{
       -  int i;
       -
       -  for (i = 0; i < strlen(str); i++)
       -    addch(str[i]);
       -  move(CurY, CurX);
       -}
       -
       -void addch(int ch)
       -{
       -  int attr;
       -
       -  VirtualScreen[CurY][CurX].Char.AsciiChar = ch % 256;
       -  attr = ch >> 8;
       -  if (attr > 0)
       -    VirtualScreen[CurY][CurX].Attributes = Attr[attr];
       -  else
       -    VirtualScreen[CurY][CurX].Attributes = Attr[CurAttr >> 8];
       -  if (++CurX >= Width) {
       -    CurX = 0;
       -    if (++CurY >= Depth)
       -      CurY = 0;
       -  }
       -}
       -
       -void mvaddstr(int y, int x, char *str)
       -{
       -  move(y, x);
       -  addstr(str);
       -}
       -
       -void mvaddch(int y, int x, int ch)
       -{
       -  move(y, x);
       -  addch(ch);
       -}
       -
       -/* 
       - * Waits for the user to press a key.
       - */
       -int bgetch()
       -{
       -  DWORD NumRead;
       -  char Buffer[10];
       -
       -  refresh();
       -  ReadConsole(hIn, Buffer, 1, &NumRead, NULL);
       -  return (int)(Buffer[0]);
       -}
       -
       -char *index(const char *str, int ch)
       -{
       -  int i;
       -
       -  for (i = 0; i < strlen(str); i++) {
       -    if (str[i] == ch)
       -      return str + i;
       -  }
       -  return NULL;
       -}
       -
       -static int apos = 0;
       -
       -int getopt(int argc, char *const argv[], const char *str)
       -{
       -  int i, c;
       -  char *pt;
       -
       -  while (apos < argc && argv[apos]) {
       -    if (argv[apos][0] != '-') {
       -      apos++;
       -      return 0;
       -    }
       -    for (i = 1; i < strlen(argv[apos]); i++) {
       -      c = argv[apos][i];
       -      pt = index(str, c);
       -      if (pt) {
       -        argv[apos][i] = '-';
       -        if (*(pt + 1) == ':') {
       -          if (apos + 1 < argc && i == strlen(argv[apos]) - 1) {
       -            apos++;
       -            optarg = argv[apos];
       -            apos++;
       -          } else
       -            return 0;
       -        }
       -        return c;
       -      }
       -    }
       -    apos++;
       -  }
       -  return EOF;
       -}
       -
       -void sigemptyset(int *mask)
       -{
       -}
       -
       -void sigaddset(int *mask, int sig)
       -{
       -}
       -
       -int sigaction(int sig, struct sigaction *sact, char *pt)
       -{
       -  return 0;
       -}
       -
       -void sigprocmask(int flag, int *mask, char *pt)
       -{
       -}
       -
       -void standout()
       -{
       -}
       -
       -void standend()
       -{
       -}
       -
       -gboolean IsKeyPressed()
       -{
       -  INPUT_RECORD ConsoleIn;
       -  DWORD NumConsoleIn;
       -
       -  while (PeekConsoleInput(hIn, &ConsoleIn, 1, &NumConsoleIn)
       -         && NumConsoleIn == 1) {
       -    if (ConsoleIn.EventType == KEY_EVENT
       -        && ConsoleIn.Event.KeyEvent.bKeyDown) {
       -      return TRUE;
       -    } else {
       -      ReadConsoleInput(hIn, &ConsoleIn, 1, &NumConsoleIn);
       -    }
       -  }
       -  return FALSE;
       -}
       -
       -int bselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
       -            struct timeval *tm)
       -{
       -  int retval;
       -  struct timeval tv, *tp;
       -  fd_set localread, localexcept;
       -  char CheckKbHit = 0, KeyRead;
       -
       -  if (nfds == 0 && tm) {
       -    Sleep(tm->tv_sec * 1000 + tm->tv_usec / 1000);
       -    return 0;
       -  }
       -  if (FD_ISSET(0, readfds)) {
       -    if (nfds == 1)
       -      return 1;
       -    tp = &tv;
       -    CheckKbHit = 1;
       -    FD_CLR(0, readfds);
       -  } else
       -    tp = tm;
       -  KeyRead = 0;
       -  while (1) {
       -    tv.tv_sec = 0;
       -    tv.tv_usec = 250000;
       -
       -    if (readfds)
       -      memcpy(&localread, readfds, sizeof(fd_set));
       -    if (exceptfds)
       -      memcpy(&localexcept, exceptfds, sizeof(fd_set));
       -    if (CheckKbHit && IsKeyPressed())
       -      tv.tv_usec = 0;
       -    retval = select(nfds, readfds, writefds, exceptfds, tp);
       -    if (retval == SOCKET_ERROR)
       -      return retval;
       -    if (CheckKbHit && IsKeyPressed()) {
       -      retval++;
       -      FD_SET(0, readfds);
       -    }
       -    if (retval > 0 || !CheckKbHit)
       -      break;
       -    if (CheckKbHit && tm) {
       -      if (tm->tv_usec >= 250000)
       -        tm->tv_usec -= 250000;
       -      else if (tm->tv_sec) {
       -        tm->tv_usec += 750000;
       -        tm->tv_sec--;
       -      } else
       -        break;
       -    }
       -    if (readfds)
       -      memcpy(readfds, &localread, sizeof(fd_set));
       -    if (exceptfds)
       -      memcpy(exceptfds, &localexcept, sizeof(fd_set));
       -  }
       -  return retval;
       -}
       -
       -/* We don't do locking under Win32 right now */
       -int ReadLock(FILE * fp)
       -{
       -  return 0;
       -}
       -
       -int WriteLock(FILE * fp)
       -{
       -  return 0;
       -}
       -
       -void ReleaseLock(FILE * fp)
       -{
       -}
       -
       -#else /* Code for Unix build */
       -
       -#ifdef HAVE_UNISTD_H
       -#include <unistd.h>
       -#endif
       -
       -#ifdef HAVE_STDLIB_H
       -#include <stdlib.h>
       -#endif
       -
       -#ifdef HAVE_FCNTL_H
       -#include <fcntl.h>
       -#endif
       -
       -int Width, Depth;
       -
       -#ifdef CURSES_CLIENT
       -/* 
       - * Calls the curses getch() function; if the key pressed is Ctrl-L
       - * then automatically clears and redraws the screen, otherwise
       - * passes the key back to the calling routine.
       - */
       -int bgetch()
       -{
       -  int c;
       -
       -  c = getch();
       -  while (c == '\f') {
       -    wrefresh(curscr);
       -    c = getch();
       -  }
       -  return c;
       -}
       -#endif
       -
       -static int DoLock(FILE * fp, int l_type)
       -{
       -  struct flock lk;
       -
       -  lk.l_type = l_type;
       -  lk.l_whence = lk.l_start = lk.l_len = 0;
       -  lk.l_pid = 0;
       -
       -  while (1) {
       -    if (fcntl(fileno(fp), F_SETLKW, &lk) == 0)
       -      return 0;
       -    else if (errno != EINTR)
       -      return 1;
       -  }
       -  return 1;
       -}
       -
       -int ReadLock(FILE * fp)
       -{
       -  return DoLock(fp, F_RDLCK);
       -}
       -
       -int WriteLock(FILE * fp)
       -{
       -  return DoLock(fp, F_WRLCK);
       -}
       -
       -void ReleaseLock(FILE * fp)
       -{
       -  DoLock(fp, F_UNLCK);
       -}
       -
       -#endif /* CYGWIN */
       -
       -/* 
       - * On systems with select, sleep for "microsec" microseconds.
       - */
       -void MicroSleep(int microsec)
       -{
       -#if HAVE_SELECT
       -  struct timeval tv;
       -
       -  tv.tv_sec = 0;
       -  tv.tv_usec = microsec;
       -  bselect(0, NULL, NULL, NULL, &tv);
       -#endif
       -}
 (DIR) diff --git a/src/dopeos.h b/src/dopeos.h
       t@@ -1,172 +0,0 @@
       -/************************************************************************
       - * dopeos.h       dopewars - operating system-specific function         *
       - *                           definitions                                *
       - * Copyright (C)  1998-2002  Ben Webb                                   *
       - *                Email: ben@bellatrix.pcl.ox.ac.uk                     *
       - *                WWW: http://dopewars.sourceforge.net/                 *
       - *                                                                      *
       - * This program is free software; you can redistribute it and/or        *
       - * modify it under the terms of the GNU General Public License          *
       - * as published by the Free Software Foundation; either version 2       *
       - * of the License, or (at your option) any later version.               *
       - *                                                                      *
       - * This program is distributed in the hope that it will be useful,      *
       - * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
       - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
       - * GNU General Public License for more details.                         *
       - *                                                                      *
       - * You should have received a copy of the GNU General Public License    *
       - * along with this program; if not, write to the Free Software          *
       - * Foundation, Inc., 59 Temple Place - Suite 330, Boston,               *
       - *                   MA  02111-1307, USA.                               *
       - ************************************************************************/
       -
       -#ifndef __DOPEOS_H__
       -#define __DOPEOS_H__
       -
       -#ifdef HAVE_CONFIG_H
       -#include <config.h>
       -#endif
       -
       -#ifdef CYGWIN                   /* Definitions for native Win32 build */
       -#include <windows.h>
       -#include <string.h>
       -
       -#include <stdio.h>
       -
       -void refresh();
       -HANDLE WINAPI GetConHandle(TCHAR *pszName);
       -extern WORD TextAttr, PromptAttr, TitleAttr;
       -extern WORD LocationAttr, StatsAttr, DebtAttr;
       -extern int Width, Depth;
       -
       -#define COLOR_MAGENTA 1
       -#define COLOR_BLACK   2
       -#define COLOR_WHITE   3
       -#define COLOR_BLUE    4
       -#define COLOR_RED     5
       -
       -#define SIGWINCH      0
       -#define SIGPIPE       0
       -#define SIG_BLOCK     0
       -#define SIG_UNBLOCK   0
       -
       -struct sigaction {
       -  void *sa_handler;
       -  int sa_flags;
       -  int sa_mask;
       -};
       -
       -void sigemptyset(int *mask);
       -void sigaddset(int *mask, int sig);
       -int sigaction(int sig, struct sigaction *sact, char *pt);
       -void sigprocmask(int flag, int *mask, char *pt);
       -
       -#define COLS  Width
       -#define LINES Depth
       -
       -#define ACS_VLINE       179
       -#define ACS_ULCORNER    218
       -#define ACS_HLINE       196
       -#define ACS_URCORNER    191
       -#define ACS_TTEE        194
       -#define ACS_LLCORNER    192
       -#define ACS_LRCORNER    217
       -#define ACS_BTEE        193
       -#define ACS_LTEE        195
       -#define ACS_RTEE        180
       -
       -typedef int SCREEN;
       -
       -#define stdscr        0
       -#define curscr        0
       -#define KEY_ENTER     13
       -#define KEY_BACKSPACE 8
       -#define A_BOLD        0
       -
       -SCREEN *newterm(void *, void *, void *);
       -void start_color();
       -void init_pair(int index, WORD fg, WORD bg);
       -void cbreak();
       -void noecho();
       -void nodelay(void *, char);
       -void keypad(void *, char);
       -void curs_set(BOOL visible);
       -void endwin();
       -void move(int y, int x);
       -void attrset(WORD newAttr);
       -void addstr(char *str);
       -void addch(int ch);
       -void mvaddstr(int x, int y, char *str);
       -void mvaddch(int x, int y, int ch);
       -int bgetch();
       -
       -#define erase() clear_screen()
       -char *index(const char *str, int ch);
       -int getopt(int argc, char *const argv[], const char *str);
       -extern char *optarg;
       -
       -typedef int ssize_t;
       -void standout();
       -void standend();
       -void endwin();
       -int bselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfs,
       -            struct timeval *tm);
       -
       -#else /* Definitions for Unix build */
       -
       -#include <sys/types.h>
       -
       -#include <stdio.h>
       -#include <errno.h>
       -
       -/* Only include sys/wait.h on those systems which support it */
       -#if HAVE_SYS_WAIT_H
       -#include <sys/wait.h>
       -#endif
       -
       -/* Include a suitable curses-type library */
       -#if HAVE_LIBNCURSES
       -#include <ncurses.h>
       -#elif HAVE_LIBCURSES
       -#include <curses.h>
       -#elif HAVE_LIBCUR_COLR
       -#include <curses_colr/curses.h>
       -#endif
       -
       -extern int Width, Depth;
       -
       -#define PromptAttr   (COLOR_PAIR(1))
       -#define TextAttr     (COLOR_PAIR(2))
       -#define LocationAttr (COLOR_PAIR(3)|A_BOLD)
       -#define TitleAttr    (COLOR_PAIR(4))
       -#define StatsAttr    (COLOR_PAIR(5))
       -#define DebtAttr     (COLOR_PAIR(6))
       -
       -#ifdef CURSES_CLIENT
       -int bgetch(void);
       -#else
       -/* When not using curses, fall back to stdio's getchar() function */
       -#define bgetch getchar
       -#endif
       -
       -#define bselect select
       -
       -#endif /* CYGWIN */
       -
       -void MicroSleep(int microsec);
       -
       -int ReadLock(FILE * fp);
       -int WriteLock(FILE * fp);
       -void ReleaseLock(FILE * fp);
       -
       -/* Now make definitions if they haven't been done properly */
       -#ifndef WEXITSTATUS
       -#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
       -#endif
       -
       -#ifndef WIFEXITED
       -#define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
       -#endif
       -
       -#endif /* __DOPEOS_H__ */
 (DIR) diff --git a/src/dopewars.c b/src/dopewars.c
       t@@ -43,12 +43,12 @@
        #include <glib.h>
        #include <stdarg.h>
        #include "admin.h"
       -#include "dopeos.h"
        #include "message.h"
        #include "nls.h"
        #include "serverside.h"
        #include "tstring.h"
        #include "AIPlayer.h"
       +#include "util.h"
        #include "winmain.h"
        
        #ifdef CURSES_CLIENT
 (DIR) diff --git a/src/dopewars.h b/src/dopewars.h
       t@@ -43,9 +43,9 @@
        #endif
        
        #include <glib.h>
       -#include "dopeos.h"
        #include "error.h"
        #include "network.h"
       +#include "util.h"
        
        /* Make price_t be a long long if the type is supported by the compiler */
        #if SIZEOF_LONG_LONG == 0
 (DIR) diff --git a/src/gui_client/gtk_client.c b/src/gui_client/gtk_client.c
       t@@ -28,13 +28,13 @@
        #include <ctype.h>
        #include <string.h>
        
       -#include "dopeos.h"
        #include "dopewars.h"
        #include "gtk_client.h"
        #include "message.h"
        #include "nls.h"
        #include "serverside.h"
        #include "tstring.h"
       +#include "util.h"
        #include "gtkport/gtkport.h"
        #include "dopewars-pill.xpm"
        #include "optdialog.h"
 (DIR) diff --git a/src/message.c b/src/message.c
       t@@ -36,13 +36,13 @@
        #include <string.h>
        #include <stdlib.h>
        #include <glib.h>
       -#include "dopeos.h"
        #include "dopewars.h"
        #include "message.h"
        #include "network.h"
        #include "nls.h"
        #include "serverside.h"
        #include "tstring.h"
       +#include "util.h"
        
        /* Maximum sizes (in bytes) of read and write buffers - connections should
         * be dropped if either buffer is filled */
 (DIR) diff --git a/src/network.h b/src/network.h
       t@@ -28,6 +28,9 @@
        #endif
        
        /* Various includes necessary for select() calls */
       +#ifdef CYGWIN
       +#include <windows.h>
       +#else
        #include <sys/types.h>
        /* Be careful not to include both sys/time.h and time.h on those systems
         * which don't like it */
       t@@ -45,6 +48,7 @@
        #ifdef HAVE_UNISTD_H
        #include <unistd.h>
        #endif
       +#endif
        
        #include <glib.h>
        
 (DIR) diff --git a/src/serverside.c b/src/serverside.c
       t@@ -46,13 +46,13 @@
        #include <errno.h>
        #include <stdlib.h>
        #include <glib.h>
       -#include "dopeos.h"
        #include "dopewars.h"
        #include "message.h"
        #include "network.h"
        #include "nls.h"
        #include "serverside.h"
        #include "tstring.h"
       +#include "util.h"
        
        #ifdef GUI_SERVER
        #include "gtkport/gtkport.h"
       t@@ -965,7 +965,6 @@ Player *HandleNewConnection(void)
          if ((ClientSock = accept(ListenSock, (struct sockaddr *)&ClientAddr,
                                   &cadsize)) == -1) {
            perror("accept socket");
       -    bgetch();
            exit(1);
          }
          dopelog(2, _("got connection from %s"), inet_ntoa(ClientAddr.sin_addr));
       t@@ -1157,7 +1156,6 @@ void ServerLoop()
                  continue;
              }
              perror("select");
       -      bgetch();
              break;
            }
            FirstServer = HandleTimeouts(FirstServer);
 (DIR) diff --git a/src/util.c b/src/util.c
       t@@ -0,0 +1,242 @@
       +/************************************************************************
       + * util.c         Miscellaneous utility and portability functions       *
       + * Copyright (C)  1998-2002  Ben Webb                                   *
       + *                Email: ben@bellatrix.pcl.ox.ac.uk                     *
       + *                WWW: http://dopewars.sourceforge.net/                 *
       + *                                                                      *
       + * This program is free software; you can redistribute it and/or        *
       + * modify it under the terms of the GNU General Public License          *
       + * as published by the Free Software Foundation; either version 2       *
       + * of the License, or (at your option) any later version.               *
       + *                                                                      *
       + * This program is distributed in the hope that it will be useful,      *
       + * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
       + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
       + * GNU General Public License for more details.                         *
       + *                                                                      *
       + * You should have received a copy of the GNU General Public License    *
       + * along with this program; if not, write to the Free Software          *
       + * Foundation, Inc., 59 Temple Place - Suite 330, Boston,               *
       + *                   MA  02111-1307, USA.                               *
       + ************************************************************************/
       +
       +#ifdef HAVE_CONFIG_H
       +#include <config.h>
       +#endif
       +
       +#ifdef HAVE_UNISTD_H
       +#include <unistd.h>
       +#endif
       +
       +#ifdef HAVE_STDLIB_H
       +#include <stdlib.h>
       +#endif
       +
       +#ifdef HAVE_FCNTL_H
       +#include <fcntl.h>
       +#endif
       +
       +#ifdef CYGWIN
       +#include <conio.h>
       +#endif
       +
       +#include "util.h"
       +#include "dopewars.h"
       +
       +#ifndef HAVE_GETOPT
       +char *optarg;
       +
       +static int apos = 0;
       +
       +int getopt(int argc, char *const argv[], const char *str)
       +{
       +  int i, c;
       +  char *pt;
       +
       +  while (apos < argc && argv[apos]) {
       +    if (argv[apos][0] != '-') {
       +      apos++;
       +      return 0;
       +    }
       +    for (i = 1; i < strlen(argv[apos]); i++) {
       +      c = argv[apos][i];
       +      pt = strchr(str, c);
       +      if (pt) {
       +        argv[apos][i] = '-';
       +        if (*(pt + 1) == ':') {
       +          if (apos + 1 < argc && i == strlen(argv[apos]) - 1) {
       +            apos++;
       +            optarg = argv[apos];
       +            apos++;
       +          } else
       +            return 0;
       +        }
       +        return c;
       +      }
       +    }
       +    apos++;
       +  }
       +  return EOF;
       +}
       +#endif /* HAVE_GETOPT */
       +
       +
       +#ifdef CYGWIN                   /* Code for native Win32 build under Cygwin */
       +
       +void sigemptyset(int *mask)
       +{
       +}
       +
       +void sigaddset(int *mask, int sig)
       +{
       +}
       +
       +int sigaction(int sig, struct sigaction *sact, char *pt)
       +{
       +  return 0;
       +}
       +
       +void sigprocmask(int flag, int *mask, char *pt)
       +{
       +}
       +
       +/*static gboolean IsKeyPressed()
       +{
       +  INPUT_RECORD ConsoleIn;
       +  DWORD NumConsoleIn;
       +
       +  while (PeekConsoleInput(hIn, &ConsoleIn, 1, &NumConsoleIn)
       +         && NumConsoleIn == 1) {
       +    if (ConsoleIn.EventType == KEY_EVENT
       +        && ConsoleIn.Event.KeyEvent.bKeyDown) {
       +      return TRUE;
       +    } else {
       +      ReadConsoleInput(hIn, &ConsoleIn, 1, &NumConsoleIn);
       +    }
       +  }
       +  return FALSE;
       +}*/
       +
       +int bselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
       +            struct timeval *tm)
       +{
       +  int retval;
       +  struct timeval tv, *tp;
       +  fd_set localread, localexcept;
       +  char CheckKbHit = 0, KeyRead;
       +
       +  if (nfds == 0 && tm) {
       +    Sleep(tm->tv_sec * 1000 + tm->tv_usec / 1000);
       +    return 0;
       +  }
       +  if (FD_ISSET(0, readfds)) {
       +    if (nfds == 1)
       +      return 1;
       +    tp = &tv;
       +    CheckKbHit = 1;
       +    FD_CLR(0, readfds);
       +  } else
       +    tp = tm;
       +  KeyRead = 0;
       +  while (1) {
       +    tv.tv_sec = 0;
       +    tv.tv_usec = 250000;
       +
       +    if (readfds)
       +      memcpy(&localread, readfds, sizeof(fd_set));
       +    if (exceptfds)
       +      memcpy(&localexcept, exceptfds, sizeof(fd_set));
       +    if (CheckKbHit && kbhit())
       +      tv.tv_usec = 0;
       +    retval = select(nfds, readfds, writefds, exceptfds, tp);
       +    if (retval == SOCKET_ERROR)
       +      return retval;
       +    if (CheckKbHit && kbhit()) {
       +      retval++;
       +      FD_SET(0, readfds);
       +    }
       +    if (retval > 0 || !CheckKbHit)
       +      break;
       +    if (CheckKbHit && tm) {
       +      if (tm->tv_usec >= 250000)
       +        tm->tv_usec -= 250000;
       +      else if (tm->tv_sec) {
       +        tm->tv_usec += 750000;
       +        tm->tv_sec--;
       +      } else
       +        break;
       +    }
       +    if (readfds)
       +      memcpy(readfds, &localread, sizeof(fd_set));
       +    if (exceptfds)
       +      memcpy(exceptfds, &localexcept, sizeof(fd_set));
       +  }
       +  return retval;
       +}
       +
       +/* We don't do locking under Win32 right now */
       +int ReadLock(FILE * fp)
       +{
       +  return 0;
       +}
       +
       +int WriteLock(FILE * fp)
       +{
       +  return 0;
       +}
       +
       +void ReleaseLock(FILE * fp)
       +{
       +}
       +
       +#else /* Code for Unix build */
       +
       +#include <errno.h>
       +
       +static int DoLock(FILE * fp, int l_type)
       +{
       +  struct flock lk;
       +
       +  lk.l_type = l_type;
       +  lk.l_whence = lk.l_start = lk.l_len = 0;
       +  lk.l_pid = 0;
       +
       +  while (1) {
       +    if (fcntl(fileno(fp), F_SETLKW, &lk) == 0)
       +      return 0;
       +    else if (errno != EINTR)
       +      return 1;
       +  }
       +  return 1;
       +}
       +
       +int ReadLock(FILE * fp)
       +{
       +  return DoLock(fp, F_RDLCK);
       +}
       +
       +int WriteLock(FILE * fp)
       +{
       +  return DoLock(fp, F_WRLCK);
       +}
       +
       +void ReleaseLock(FILE * fp)
       +{
       +  DoLock(fp, F_UNLCK);
       +}
       +
       +#endif /* CYGWIN */
       +
       +/* 
       + * On systems with select, sleep for "microsec" microseconds.
       + */
       +void MicroSleep(int microsec)
       +{
       +#if HAVE_SELECT || CYGWIN
       +  struct timeval tv;
       +
       +  tv.tv_sec = 0;
       +  tv.tv_usec = microsec;
       +  bselect(0, NULL, NULL, NULL, &tv);
       +#endif
       +}
 (DIR) diff --git a/src/util.h b/src/util.h
       t@@ -0,0 +1,79 @@
       +/************************************************************************
       + * util.h         Miscellaneous utility and portability functions       *
       + * Copyright (C)  1998-2002  Ben Webb                                   *
       + *                Email: ben@bellatrix.pcl.ox.ac.uk                     *
       + *                WWW: http://dopewars.sourceforge.net/                 *
       + *                                                                      *
       + * This program is free software; you can redistribute it and/or        *
       + * modify it under the terms of the GNU General Public License          *
       + * as published by the Free Software Foundation; either version 2       *
       + * of the License, or (at your option) any later version.               *
       + *                                                                      *
       + * This program is distributed in the hope that it will be useful,      *
       + * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
       + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
       + * GNU General Public License for more details.                         *
       + *                                                                      *
       + * You should have received a copy of the GNU General Public License    *
       + * along with this program; if not, write to the Free Software          *
       + * Foundation, Inc., 59 Temple Place - Suite 330, Boston,               *
       + *                   MA  02111-1307, USA.                               *
       + ************************************************************************/
       +
       +#ifndef __UTIL_H__
       +#define __UTIL_H__
       +
       +#ifdef HAVE_CONFIG_H
       +#include <config.h>
       +#endif
       +
       +#include <stdio.h>
       +
       +#ifdef CYGWIN                   /* Definitions for native Win32 build */
       +#include <windows.h>
       +#include <string.h>
       +
       +#define SIGWINCH      0
       +#define SIGPIPE       0
       +#define SIG_BLOCK     0
       +#define SIG_UNBLOCK   0
       +
       +typedef int ssize_t;
       +
       +struct sigaction {
       +  void *sa_handler;
       +  int sa_flags;
       +  int sa_mask;
       +};
       +
       +void sigemptyset(int *mask);
       +void sigaddset(int *mask, int sig);
       +int sigaction(int sig, struct sigaction *sact, char *pt);
       +void sigprocmask(int flag, int *mask, char *pt);
       +int bselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfs,
       +            struct timeval *tm);
       +#else /* Definitions for Unix build */
       +#define bselect select
       +#endif /* CYGWIN */
       +
       +#ifndef HAVE_GETOPT
       +int getopt(int argc, char *const argv[], const char *str);
       +extern char *optarg;
       +#endif
       +
       +void MicroSleep(int microsec);
       +
       +int ReadLock(FILE *fp);
       +int WriteLock(FILE *fp);
       +void ReleaseLock(FILE *fp);
       +
       +/* Now make definitions if they haven't been done properly */
       +#ifndef WEXITSTATUS
       +#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
       +#endif
       +
       +#ifndef WIFEXITED
       +#define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
       +#endif
       +
       +#endif /* __UTIL_H__ */
 (DIR) diff --git a/src/winmain.c b/src/winmain.c
       t@@ -31,10 +31,10 @@
        #include <glib.h>
        #include <stdlib.h>
        
       -#include "dopeos.h"
        #include "dopewars.h"
        #include "nls.h"
        #include "tstring.h"
       +#include "util.h"
        #include "AIPlayer.h"
        #include "message.h"
        #include "serverside.h"
       t@@ -56,7 +56,6 @@ static void ServerLogMessage(const gchar *log_domain,
                                     GLogLevelFlags log_level,
                                     const gchar *message, gpointer user_data)
        {
       -  DWORD NumChar;
          GString *text;
        
          text = GetLogString(log_level, message);
       t@@ -317,7 +316,6 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                                LogMask() | G_LOG_LEVEL_MESSAGE |
                                G_LOG_LEVEL_WARNING, ServerLogMessage, NULL);
              g_set_print_handler(ServerPrintFunc);
       -      newterm(NULL, NULL, NULL);
              AIPlayerLoop();
            } else {
              switch (WantedClient) {