diff -Naur screen-3.9.15.orig/Makefile.in screen-3.9.15/Makefile.in
--- screen-3.9.15.orig/Makefile.in	2003-03-13 05:19:53.000000000 -0600
+++ screen-3.9.15/Makefile.in	2003-11-21 12:31:37.749882800 -0600
@@ -13,12 +13,14 @@
 
 prefix = @prefix@
 exec_prefix = @exec_prefix@
+EXEEXT = @EXEEXT@
+
 
 # don't forget to change mandir and infodir in doc/Makefile.
 bindir  = $(exec_prefix)/bin
 
 VERSION = @VERSION@
-SCREEN = screen-$(VERSION)
+SCREEN = screen-$(VERSION)$(EXEEXT)
 
 ETCSCREENRC = `sed < config.h -n -e '/define ETCSCREENRC/s/^.*"\([^"]*\)"/\1/p'`
 SCREENENCODINGS = `sed < config.h -n -e '/define SCREENENCODINGS/s/^.*"\([^"]*\)"/\1/p'`
@@ -73,7 +75,7 @@
 install_bin: .version screen
 	-if [ -f $(DESTDIR)$(bindir)/$(SCREEN) ] && [ ! -f $(DESTDIR)$(bindir)/$(SCREEN).old ]; \
 		then mv $(DESTDIR)$(bindir)/$(SCREEN) $(DESTDIR)$(bindir)/$(SCREEN).old; fi
-	$(INSTALL_PROGRAM) screen $(DESTDIR)$(bindir)/$(SCREEN)
+	$(INSTALL_PROGRAM) screen$(EXEEXT) $(DESTDIR)$(bindir)/$(SCREEN)
 	-chown root $(DESTDIR)$(bindir)/$(SCREEN) && chmod 4755 $(DESTDIR)$(bindir)/$(SCREEN)
 # This doesn't work if $(bindir)/screen is a symlink
 	-if [ -f $(DESTDIR)$(bindir)/screen ] && [ ! -f $(DESTDIR)$(bindir)/screen.old ]; then mv $(DESTDIR)$(bindir)/screen $(DESTDIR)$(bindir)/screen.old; fi
diff -Naur screen-3.9.15.orig/configure.in screen-3.9.15/configure.in
--- screen-3.9.15.orig/configure.in	2003-02-24 07:03:21.000000000 -0600
+++ screen-3.9.15/configure.in	2003-11-21 12:17:43.269106000 -0600
@@ -9,6 +9,8 @@
 AC_INIT(screen.c)
 AC_CONFIG_HEADER(config.h)
 
+dnl AC_EXEEXT
+
 dnl
 dnl Define some useful macros
 dnl
diff -Naur screen-3.9.15.orig/misc.c screen-3.9.15/misc.c
--- screen-3.9.15.orig/misc.c	2003-02-21 14:30:57.000000000 -0600
+++ screen-3.9.15/misc.c	2003-11-21 10:57:51.281250000 -0600
@@ -642,7 +642,7 @@
    */
 # endif /* NEEDSETENV */
 #else /* USESETENV */
-# if defined(linux) || defined(__convex__) || (BSD >= 199103)
+# if defined(linux) || defined(__convex__) || (BSD >= 199103) || defined(__CYGWIN__)
   setenv(var, value, 1);
 # else
   setenv(var, value);
diff -Naur screen-3.9.15.orig/pty.c screen-3.9.15/pty.c
--- screen-3.9.15.orig/pty.c	2003-02-14 07:44:20.000000000 -0600
+++ screen-3.9.15/pty.c	2003-11-21 11:01:01.968750000 -0600
@@ -38,7 +38,9 @@
 
 /* for solaris 2.1, Unixware (SVR4.2) and possibly others */
 #ifdef HAVE_SVR4_PTYS
-# include <sys/stropts.h>
+# ifndef __CYGWIN__
+#   include <sys/stropts.h>
+# endif
 #endif
 
 #if defined(sun) && defined(LOCKPTY) && !defined(TIOCEXCL)
diff -Naur screen-3.9.15.orig/utmp.c screen-3.9.15/utmp.c
--- screen-3.9.15.orig/utmp.c	2002-09-06 04:45:32.000000000 -0500
+++ screen-3.9.15/utmp.c	2003-11-21 11:00:29.484375000 -0600
@@ -93,7 +93,7 @@
 static int  initutmp __P((void));
 static void setutent __P((void));
 #endif
-#if defined(linux) && defined(GETUTENT)
+#if (defined(linux) || defined(__CYGWIN__)) && defined(GETUTENT)
 static struct utmp *xpututline __P((struct utmp *utmp));
 # define pututline xpututline
 #endif
@@ -110,7 +110,9 @@
 #  if defined(hpux) /* cruel hpux release 8.0 */
 #   define pututline _pututline
 #  endif /* hpux */
+#  ifndef __CYGWIN__
 extern struct utmp *getutline(), *pututline();
+#  endif
 #  if defined(_SEQUENT_)
 extern struct utmp *ut_add_user(), *ut_delete_user();
 extern char *ut_find_host();
@@ -593,7 +595,7 @@
 struct utmp *u;
 {
   u->ut_type = DEAD_PROCESS;
-#if !defined(linux) || defined(EMPTY)
+#if !defined(linux) && !defined(__CYGWIN__) || defined(EMPTY)
   u->ut_exit.e_termination = 0;
   u->ut_exit.e_exit = 0;
 #endif
@@ -862,7 +864,7 @@
 }
 # endif /* BUGGYGETLOGIN */
 
-#if defined(linux) && defined(GETUTENT)
+#if (defined(linux) || defined(__CYGWIN__)) && defined(GETUTENT)
 # undef pututline
 
 /* aargh, linux' pututline returns void! */

