From 7a6b562fdf60f1d1ebe9e2bc154d0ffd56dab2d1 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sun, 17 Jan 1999 06:20:06 +0000
Subject: [PATCH] Apply Win32 patch from Horak Daniel.

---
 src/Makefile.shlib                       | 20 ++++++++-
 src/backend/Makefile                     | 55 +++++++++++++++++++++---
 src/backend/access/nbtree/nbtsort.c      |  6 ++-
 src/backend/bootstrap/bootstrap.c        |  5 ++-
 src/backend/catalog/Makefile             | 13 +++++-
 src/backend/commands/copy.c              | 10 ++++-
 src/backend/commands/dbcommands.c        |  6 ++-
 src/backend/commands/vacuum.c            |  6 ++-
 src/backend/executor/nodeHash.c          |  7 ++-
 src/backend/executor/nodeHashjoin.c      | 12 ++++--
 src/backend/libpq/be-fsstubs.c           | 10 ++++-
 src/backend/libpq/crypt.c                |  6 ++-
 src/backend/libpq/hba.c                  | 14 +++++-
 src/backend/libpq/password.c             |  6 ++-
 src/backend/libpq/pqcomm.c               | 10 ++++-
 src/backend/optimizer/geqo/geqo_params.c |  6 ++-
 src/backend/port/snprintf.c              |  3 +-
 src/backend/postmaster/postmaster.c      | 27 +++++++++++-
 src/backend/storage/smgr/md.c            | 26 ++++++++++-
 src/backend/tcop/postgres.c              | 11 ++++-
 src/backend/tcop/utility.c               |  6 ++-
 src/backend/utils/adt/arrayfuncs.c       |  6 ++-
 src/backend/utils/cache/relcache.c       | 10 ++++-
 src/backend/utils/init/miscinit.c        |  6 ++-
 src/backend/utils/init/postinit.c        | 10 ++++-
 src/backend/utils/misc/database.c        |  6 ++-
 src/backend/utils/misc/trace.c           |  4 ++
 src/backend/utils/sort/psort.c           |  7 ++-
 src/bin/pg_dump/Makefile.in              |  6 +--
 src/bin/pg_dump/pg_dump.c                | 10 ++++-
 src/bin/pg_id/Makefile                   |  6 +--
 src/bin/pg_id/pg_id.c                    |  6 ++-
 src/bin/pg_passwd/Makefile               |  4 +-
 src/bin/pg_passwd/pg_passwd.c            | 12 ++++++
 src/bin/pg_version/Makefile.in           |  6 +--
 src/bin/psql/Makefile.in                 |  6 +--
 src/bin/psql/psql.c                      | 29 ++++++++++++-
 src/configure                            | 10 ++---
 src/configure.in                         |  4 +-
 src/include/c.h                          |  6 ++-
 src/interfaces/ecpg/lib/Makefile.in      |  5 ++-
 src/interfaces/ecpg/preproc/Makefile     |  4 +-
 src/interfaces/ecpg/preproc/ecpg.c       | 12 ++++++
 src/interfaces/libpq++/Makefile.in       |  9 +++-
 src/interfaces/libpq/Makefile.in         |  9 +++-
 src/interfaces/libpq/fe-connect.c        |  4 +-
 src/interfaces/libpq/fe-lobj.c           | 10 ++++-
 src/interfaces/odbc/GNUmakefile.in       |  6 ++-
 src/interfaces/odbc/gpps.c               |  8 ++++
 src/interfaces/odbc/misc.c               |  8 ++++
 src/lextest/Makefile                     |  2 +-
 src/pl/plpgsql/src/Makefile.in           |  9 +++-
 src/template/.similar                    |  1 +
 src/test/regress/GNUmakefile             | 24 +++++++++--
 src/test/regress/regress.sh              | 21 +++++++--
 src/tools/entab/entab.c                  |  4 ++
 src/utils/Makefile                       |  5 ++-
 src/utils/version.c                      | 10 ++++-
 58 files changed, 484 insertions(+), 86 deletions(-)

diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index eb4da6fcf67..7f1d083b113 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -6,7 +6,7 @@
 # Copyright (c) 1998, Regents of the University of California
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.5 1998/11/30 00:30:03 tgl Exp $
+#    $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.6 1999/01/17 06:18:08 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -156,6 +156,10 @@ ifeq ($(PORTNAME), unixware)
   endif
 endif
 
+ifeq ($(PORTNAME), win)
+  install-shlib-dep	:= install-shlib
+  shlib				:= $(NAME)$(DLSUFFIX)
+endif
 
 # Default target definition.  Note shlib is empty if not building a shlib.
 
@@ -163,6 +167,7 @@ all: lib$(NAME).a $(shlib)
 
 # Rules to build regular and shared libraries
 
+ifneq ($(PORTNAME), win)
 lib$(NAME).a: $(OBJS)
 ifdef MK_NO_LORDER
 	$(AR) $(AROPT) $@ $(OBJS) 
@@ -170,10 +175,21 @@ else
 	$(AR) $(AROPT) $@ `lorder $(OBJS) | tsort`
 endif
 	$(RANLIB) $@
+endif
 
 ifneq ($(shlib),)
+ifneq ($(PORTNAME), win)
 $(shlib): $(OBJS)
 	$(LD) $(LDFLAGS_SL) -o $@ $(OBJS) $(SHLIB_LINK)
+else
+$(shlib) lib$(NAME).a: $(OBJS) $(SRCDIR)/utils/dllinit.o
+	$(DLLTOOL) --export-all --output-def $(NAME).def $(OBJS)
+	$(DLLWRAP) -o $(shlib) --dllname $(shlib) --def $(NAME).def $(OBJS) $(SRCDIR)/utils/dllinit.o $(DLLINIT) $(SHLIB_LINK)
+	$(DLLTOOL) --dllname $(shlib) --def $(NAME).def --output-lib lib$(NAME).a
+
+$(SRCDIR)/utils/dllinit.o: $(SRCDIR)/utils/dllinit.c
+	$(MAKE) -C $(SRCDIR)/utils dllinit.o
+endif
 endif
 
 # Rules to install regular and shared libraries
@@ -185,6 +201,7 @@ install-lib: lib$(NAME).a
 
 install-shlib: $(shlib)
 	$(INSTALL) $(INSTL_SHLIB_OPTS) $(shlib) $(LIBDIR)/$(shlib)
+ifneq ($(PORTNAME), win)
 	if [ "$(shlib)" != "lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION)" ]; then \
 		cd $(LIBDIR); \
 		rm -f lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION); \
@@ -195,3 +212,4 @@ install-shlib: $(shlib)
 		rm -f lib$(NAME)$(DLSUFFIX); \
 		$(LN_S) $(shlib) lib$(NAME)$(DLSUFFIX); \
 	fi
+endif
diff --git a/src/backend/Makefile b/src/backend/Makefile
index 9410ab8ce37..87e4b75c1d8 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -34,7 +34,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.34 1998/11/27 19:51:27 vadim Exp $
+#    $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.35 1999/01/17 06:18:11 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -58,12 +58,34 @@ CFLAGS+= $(KRBFLAGS)
 LDFLAGS+= $(KRBLIBS)
 endif
 
+ifeq ($(MAKE_DLL), true)
+DLLOBJS=$(OBJS)
+DLLOBJS+= ../utils/version.o
+DLLLIBS= -L/usr/local/lib -lcygipc -lcrypt -lcygwin -lkernel32
+
+postgres.def: $(DLLOBJS)
+	$(DLLTOOL) --export-all --output-def $@ $(DLLOBJS)
+
+libpostgres.a: $(DLLOBJS) ../utils/dllinit.o postgres.def
+	$(DLLTOOL) --dllname postgres.exe --def postgres.def --output-lib $@
+endif
 
 all: postgres $(POSTGRES_IMP) global1.bki.source local1_template1.bki.source \
 				global1.description local1_template1.description
 
+ifneq ($(PORTNAME), win)
 postgres: fmgr.h $(OBJS) ../utils/version.o
 	$(CC) -o postgres $(OBJS) ../utils/version.o $(LDFLAGS)
+else
+postgres: $(DLLOBJS) ../utils/dllinit.o postgres.def libpostgres.a
+	dlltool --dllname $@$(X) --output-exp $@.exp --def postgres.def
+	gcc -g -o $@$(X) -Wl,--base-file,$@.base $@.exp $(DLLOBJS) $(DLLLIBS)
+	dlltool --dllname $@$(X) --base-file $@.base --output-exp $@.exp --def postgres.def
+	gcc -g -o $@$(X) $@.exp $(DLLOBJS) $(DLLLIBS)
+	rm $@.exp $@.base
+endif
+
+#.PHONY: postgres
 
 $(OBJS): $(DIRS:%=%.dir)
 
@@ -71,7 +93,10 @@ $(DIRS:%=%.dir):
 	$(MAKE) -C $(subst .dir,,$@) all 
 
 ../utils/version.o:
-	$(MAKE) -C ../utils version.o        
+	$(MAKE) -C ../utils version.o
+
+../utils/dllinit.c:
+	$(MAKE) -C ../utils dllinit.o
 
 global1.bki.source local1_template1.bki.source \
 global1.description local1_template1.description: catalog/$@
@@ -89,7 +114,6 @@ postgres.o: $(OBJS)
 fast:
 	$(CC) -r -o postgres.o $(OBJS) $(LDFLAGS)
 
-
 ############################################################################
 # The following targets are specified in make commands that appear in the
 # make files in our subdirectories.
@@ -104,9 +128,14 @@ fmgr.h:
 
 #############################################################################
 clean:
-	rm -f postgres $(POSTGRES_IMP) fmgr.h parse.h \
+	rm -f postgres$(X) $(POSTGRES_IMP) fmgr.h parse.h \
 	    global1.bki.source local1_template1.bki.source \
 	    global1.description local1_template1.description
+ifeq ($(PORTNAME), win)
+ifeq ($(MAKE_DLL), true)
+	rm -f postgres.dll postgres.def libpostgres.a
+endif
+endif
 	for i in $(DIRS); do $(MAKE) -C $$i clean; done
 
 .DEFAULT:
@@ -132,12 +161,18 @@ install: $(LIBDIR) $(BINDIR) $(HEADERDIR) postgres $(POSTGRES_IMP) fmgr.h\
          global1.bki.source local1_template1.bki.source \
          global1.description local1_template1.description \
          libpq/pg_hba.conf.sample optimizer/geqo/pg_geqo.sample
-	$(INSTALL) $(INSTL_EXE_OPTS) postgres $(BINDIR)/postgres
+	$(INSTALL) $(INSTL_EXE_OPTS) postgres$(X) $(BINDIR)/postgres$(X)
 ifeq ($(MAKE_EXPORTS), true)
 	$(INSTALL) $(INSTLOPTS) $(POSTGRES_IMP) $(LIBDIR)/$(POSTGRES_IMP)
 endif
 	@rm -f $(BINDIR)/postmaster
-	ln -s postgres $(BINDIR)/postmaster
+	ln -s postgres$(X) $(BINDIR)/postmaster
+ifeq ($(PORTNAME), win)
+ifeq ($(MAKE_DLL), true)
+#	$(INSTALL) $(INSTLOPTS) postgres.dll $(BINDIR)/postgres.dll
+	$(INSTALL) $(INSTLOPTS) libpostgres.a $(LIBDIR)/libpostgres.a
+endif
+endif
 	$(INSTALL) $(INSTLOPTS) fmgr.h $(HEADERDIR)/fmgr.h
 	$(INSTALL) $(INSTLOPTS) global1.bki.source \
 	  $(LIBDIR)/global1.bki.source
@@ -152,7 +187,13 @@ endif
 	$(INSTALL) $(INSTLOPTS) optimizer/geqo/pg_geqo.sample \
 	  $(LIBDIR)/pg_geqo.sample
 
-$(BINDIR) $(LIBDIR) $(HEADERDIR): 
+#$(BINDIR) $(LIBDIR) $(HEADERDIR):
+#	mkdir $@
+$(BINDIR):
+	mkdir $@
+$(LIBDIR):
+	mkdir $@
+$(HEADERDIR):
 	mkdir $@
 
 #############################################################################
diff --git a/src/backend/access/nbtree/nbtsort.c b/src/backend/access/nbtree/nbtsort.c
index 30d74ced970..10dc7701c02 100644
--- a/src/backend/access/nbtree/nbtsort.c
+++ b/src/backend/access/nbtree/nbtsort.c
@@ -5,7 +5,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Id: nbtsort.c,v 1.33 1998/09/01 04:27:07 momjian Exp $
+ *	  $Id: nbtsort.c,v 1.34 1999/01/17 06:18:12 momjian Exp $
  *
  * NOTES
  *
@@ -420,7 +420,11 @@ _bt_tapecreate(char *fname)
 
 	tape->bttb_magic = BTTAPEMAGIC;
 
+#ifndef __CYGWIN32__
 	tape->bttb_fd = FileNameOpenFile(fname, O_RDWR | O_CREAT | O_TRUNC, 0600);
+#else
+	tape->bttb_fd = FileNameOpenFile(fname, O_RDWR | O_CREAT | O_TRUNC | O_BINARY, 0600);
+#endif
 	Assert(tape->bttb_fd >= 0);
 
 	/* initialize the buffer */
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index 9eb4e740bcf..ff1c5afc103 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -7,7 +7,7 @@
  * Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.52 1998/11/27 19:51:45 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v 1.53 1999/01/17 06:18:14 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -17,6 +17,9 @@
 #include <signal.h>
 #include <setjmp.h>
 #include <string.h>
+#ifdef __CYGWIN32__
+#include <getopt.h>
+#endif
 
 #define BOOTSTRAP_INCLUDE		/* mask out stuff in tcop/tcopprot.h */
 
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 6d5d26a1431..93232ea66b0 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -4,7 +4,7 @@
 #    Makefile for catalog
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/backend/catalog/Makefile,v 1.14 1998/10/08 18:29:19 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/backend/catalog/Makefile,v 1.15 1999/01/17 06:18:14 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -39,17 +39,26 @@ LOCALBKI_SRCS= $(addprefix ../../include/catalog/, \
                 )
 
 global1.bki.source: $(GENBKI) $(GLOBALBKI_SRCS)
+ifneq ($(PORTNAME), win)
 	sh $(SHOPTS) $(GENBKI) $(BKIOPTS) $(GLOBALBKI_SRCS) > $@ 2>global1.description
+else
+	$(GENBKI) $(BKIOPTS) $(GLOBALBKI_SRCS) > $@ 2>global1.description
+endif
 
 local1_template1.bki.source: $(GENBKI) $(LOCALBKI_SRCS)
+ifneq ($(PORTNAME), win)
 	sh $(SHOPTS) $(GENBKI) $(BKIOPTS) $(LOCALBKI_SRCS) > $@ 2>local1_template1.description
+else
+	$(GENBKI) $(BKIOPTS) $(LOCALBKI_SRCS) > $@ 2>local1_template1.description
+endif
 
 depend dep:
 	$(CC) -MM $(CFLAGS) *.c >depend
 
 clean: 
 	rm -f SUBSYS.o $(OBJS) global1.bki.source local1_template1.bki.source \
-				global1.description local1_template1.description
+				global1.description local1_template1.description \
+				$(GENBKI)
 
 ifeq (depend,$(wildcard depend))
 include depend
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index a9e22ec40be..5a8b3fc9650 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -6,7 +6,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.66 1999/01/11 03:56:05 scrappy Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.67 1999/01/17 06:18:15 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -250,7 +250,11 @@ DoCopy(char *relname, bool binary, bool oids, bool from, bool pipe,
 			}
 			else
 			{
+#ifndef __CYGWIN32__
 				fp = AllocateFile(filename, "r");
+#else
+				fp = AllocateFile(filename, "rb");
+#endif
 				if (fp == NULL)
 					elog(ERROR, "COPY command, running in backend with "
 						 "effective uid %d, could not open file '%s' for "
@@ -277,7 +281,11 @@ DoCopy(char *relname, bool binary, bool oids, bool from, bool pipe,
 				mode_t		oumask;		/* Pre-existing umask value */
 
 				oumask = umask((mode_t) 0);
+#ifndef __CYGWIN32__
 				fp = AllocateFile(filename, "w");
+#else
+				fp = AllocateFile(filename, "wb");
+#endif
 				umask(oumask);
 				if (fp == NULL)
 					elog(ERROR, "COPY command, running in backend with "
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index a774ca1deb1..a3cdd49f265 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.28 1998/12/15 12:45:55 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.29 1999/01/17 06:18:17 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -305,7 +305,11 @@ stop_vacuum(char *dbpath, char *dbname)
 	else
 		snprintf(filename, 256, "%s%c%s.vacuum", dbpath, SEP_CHAR, dbname);
 
+#ifndef __CYGWIN32__
 	if ((fp = AllocateFile(filename, "r")) != NULL)
+#else
+	if ((fp = AllocateFile(filename, "rb")) != NULL)
+#endif
 	{
 		fscanf(fp, "%d", &pid);
 		FreeFile(fp);
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index 608dd729ffa..6005c107cc1 100644
--- a/src/backend/commands/vacuum.c
+++ b/src/backend/commands/vacuum.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.92 1998/12/15 12:46:01 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.93 1999/01/17 06:18:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -187,7 +187,11 @@ vc_init()
 {
 	int			fd;
 
+#ifndef __CYGWIN32__
 	if ((fd = open("pg_vlock", O_CREAT | O_EXCL, 0600)) < 0)
+#else
+	if ((fd = open("pg_vlock", O_CREAT | O_EXCL | O_BINARY, 0600)) < 0)
+#endif
 	{
 		elog(ERROR, "Can't create lock file.  Is another vacuum cleaner running?\n\
 \tIf not, you may remove the pg_vlock file in the %s\n\
diff --git a/src/backend/executor/nodeHash.c b/src/backend/executor/nodeHash.c
index 5ec45c7c795..d0b3dc39167 100644
--- a/src/backend/executor/nodeHash.c
+++ b/src/backend/executor/nodeHash.c
@@ -6,7 +6,7 @@
  * Copyright (c) 1994, Regents of the University of California
  *
  *
- *  $Id: nodeHash.c,v 1.28 1998/12/15 12:46:06 vadim Exp $
+ *  $Id: nodeHash.c,v 1.29 1999/01/17 06:18:19 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -100,8 +100,13 @@ ExecHash(Hash *node)
 		batches = (File *) palloc(nbatch * sizeof(File));
 		for (i = 0; i < nbatch; i++)
 		{
+#ifndef __CYGWIN32__
 			batches[i] = FileNameOpenFile(ABSADDR(innerbatchNames[i]),
 										  O_CREAT | O_RDWR, 0600);
+#else
+			batches[i] = FileNameOpenFile(ABSADDR(innerbatchNames[i]),
+										  O_CREAT | O_RDWR | O_BINARY, 0600);
+#endif
 		}
 		hashstate->hashBatches = batches;
 		batchPos = (RelativeAddr *) ABSADDR(hashtable->innerbatchPos);
diff --git a/src/backend/executor/nodeHashjoin.c b/src/backend/executor/nodeHashjoin.c
index 4673d92ce31..1de20fb1652 100644
--- a/src/backend/executor/nodeHashjoin.c
+++ b/src/backend/executor/nodeHashjoin.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.14 1998/11/27 19:52:02 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/executor/nodeHashjoin.c,v 1.15 1999/01/17 06:18:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -172,9 +172,15 @@ ExecHashJoin(HashJoin *node)
 			palloc(nbatch * sizeof(File));
 		for (i = 0; i < nbatch; i++)
 		{
+#ifndef __CYGWIN32__
 			outerbatches[i] = FileNameOpenFile(
-											 ABSADDR(outerbatchNames[i]),
-											   O_CREAT | O_RDWR, 0600);
+							ABSADDR(outerbatchNames[i]),
+							O_CREAT | O_RDWR, 0600);
+#else
+			outerbatches[i] = FileNameOpenFile(
+							ABSADDR(outerbatchNames[i]),
+							O_CREAT | O_RDWR | O_BINARY, 0600);
+#endif
 		}
 		hjstate->hj_OuterBatches = outerbatches;
 
diff --git a/src/backend/libpq/be-fsstubs.c b/src/backend/libpq/be-fsstubs.c
index b35eba81ca0..0e6bd7f5228 100644
--- a/src/backend/libpq/be-fsstubs.c
+++ b/src/backend/libpq/be-fsstubs.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v 1.26 1998/09/01 04:28:46 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v 1.27 1999/01/17 06:18:24 momjian Exp $
  *
  * NOTES
  *	  This should be moved to a more appropriate place.  It is here
@@ -267,7 +267,11 @@ lo_import(text *filename)
 	 * open the file to be read in
 	 */
 	StrNCpy(fnamebuf, VARDATA(filename), VARSIZE(filename) - VARHDRSZ + 1);
+#ifndef __CYGWIN32__
 	fd = open(fnamebuf, O_RDONLY, 0666);
+#else
+	fd = open(fnamebuf, O_RDONLY | O_BINARY, 0666);
+#endif
 	if (fd < 0)
 	{							/* error */
 		elog(ERROR, "be_lo_import: can't open unix file\"%s\"\n",
@@ -341,7 +345,11 @@ lo_export(Oid lobjId, text *filename)
 	 */
 	oumask = umask((mode_t) 0);
 	StrNCpy(fnamebuf, VARDATA(filename), VARSIZE(filename) - VARHDRSZ + 1);
+#ifndef __CYGWIN32__
 	fd = open(fnamebuf, O_CREAT | O_WRONLY | O_TRUNC, 0666);
+#else
+	fd = open(fnamebuf, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY, 0666);
+#endif
 	umask(oumask);
 	if (fd < 0)
 	{							/* error */
diff --git a/src/backend/libpq/crypt.c b/src/backend/libpq/crypt.c
index 92f70c5acb9..fb87280299f 100644
--- a/src/backend/libpq/crypt.c
+++ b/src/backend/libpq/crypt.c
@@ -9,7 +9,7 @@
  * Dec 17, 1997 - Todd A. Brandys
  *	Orignal Version Completed.
  *
- * $Id: crypt.c,v 1.13 1998/12/14 06:50:24 scrappy Exp $
+ * $Id: crypt.c,v 1.14 1999/01/17 06:18:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -76,7 +76,11 @@ crypt_openpwdfile()
 	FILE	   *pwdfile;
 
 	filename = crypt_getpwdfilename();
+#ifndef __CYGWIN32__
 	pwdfile = AllocateFile(filename, "r");
+#else
+	pwdfile = AllocateFile(filename, "rb");
+#endif
 
 	return pwdfile;
 }
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index daa4716e30b..c5be35f82bf 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -5,7 +5,7 @@
  *	  wherein you authenticate a user by seeing what IP address the system
  *	  says he comes from and possibly using ident).
  *
- *  $Id: hba.c,v 1.37 1998/12/14 06:50:25 scrappy Exp $
+ *  $Id: hba.c,v 1.38 1999/01/17 06:18:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -390,7 +390,11 @@ find_hba_entry(SockAddr *raddr, const char *user, const char *database,
 	old_conf_file = (char *) palloc(bufsize);
 	snprintf(old_conf_file, bufsize, "%s/%s", DataDir, OLD_CONF_FILE);
 
+#ifndef __CYGWIN32__
 	if ((fd = open(old_conf_file, O_RDONLY, 0)) != -1)
+#else
+	if ((fd = open(old_conf_file, O_RDONLY | O_BINARY, 0)) != -1)
+#endif
 	{
 		/* Old config file exists.	Tell this guy he needs to upgrade. */
 		close(fd);
@@ -801,7 +805,11 @@ verify_against_usermap(const char *pguser,
 		map_file = (char *) palloc(bufsize);
 		snprintf(map_file, bufsize, "%s/%s", DataDir, MAP_FILE);
 
+#ifndef __CYGWIN32__
 		file = AllocateFile(map_file, "r");
+#else
+		file = AllocateFile(map_file, "rb");
+#endif
 		if (file == NULL)
 		{
 			/* The open of the map file failed.  */
@@ -973,7 +981,11 @@ GetCharSetByHost(char *TableName, int host, const char *DataDir)
 	bufsize = (strlen(DataDir) + strlen(CHARSET_FILE) + 2) * sizeof(char);
 	map_file = (char *) palloc(bufsize);
 	snprintf(map_file, bufsize, "%s/%s", DataDir, CHARSET_FILE);
+#ifndef __CYGWIN32__
 	file = fopen(map_file, "r");
+#else
+	file = fopen(map_file, "rb");
+#endif
 	if (file == NULL)
 	{
 		return;
diff --git a/src/backend/libpq/password.c b/src/backend/libpq/password.c
index e6c1d816a8b..968ba055e67 100644
--- a/src/backend/libpq/password.c
+++ b/src/backend/libpq/password.c
@@ -1,7 +1,7 @@
 /* 
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: password.c,v 1.19 1998/12/14 06:50:26 scrappy Exp $ 
+ * $Id: password.c,v 1.20 1999/01/17 06:18:26 momjian Exp $ 
  *
  */
 
@@ -27,7 +27,11 @@ verify_password(char *auth_arg, char *user, char *password)
 	strcat(pw_file_fullname, "/");
 	strcat(pw_file_fullname, auth_arg);
 
+#ifndef __CYGWIN32__
 	pw_file = AllocateFile(pw_file_fullname, "r");
+#else
+	pw_file = AllocateFile(pw_file_fullname, "rb");
+#endif
 	if (!pw_file)
 	{
 		snprintf(PQerrormsg, ERROR_MSG_LENGTH,
diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c
index c8de26e8d5b..8f9c14fee9f 100644
--- a/src/backend/libpq/pqcomm.c
+++ b/src/backend/libpq/pqcomm.c
@@ -5,7 +5,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- *  $Id: pqcomm.c,v 1.62 1999/01/17 03:10:23 tgl Exp $
+ *  $Id: pqcomm.c,v 1.63 1999/01/17 06:18:26 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -466,7 +466,11 @@ StreamServerPort(char *hostName, short portName, int *fdP)
 		 * can safely delete the file.
 		 */
 #ifdef HAVE_FCNTL_SETLK
+#ifndef __CYGWIN32__
 		if ((lock_fd = open(sock_path, O_WRONLY | O_NONBLOCK, 0666)) >= 0)
+#else
+		if ((lock_fd = open(sock_path, O_WRONLY | O_NONBLOCK | O_BINARY, 0666)) >= 0)
+#endif
 		{
 			struct flock	lck;
 			
@@ -519,7 +523,11 @@ StreamServerPort(char *hostName, short portName, int *fdP)
 		 * lock_fd is left open to keep the lock.
 		 */
 #ifdef HAVE_FCNTL_SETLK
+#ifndef __CYGWIN32__
 		if ((lock_fd = open(sock_path, O_WRONLY | O_NONBLOCK, 0666)) >= 0)
+#else
+		if ((lock_fd = open(sock_path, O_WRONLY | O_NONBLOCK | O_BINARY, 0666)) >= 0)
+#endif
 		{
 			struct flock	lck;
 			
diff --git a/src/backend/optimizer/geqo/geqo_params.c b/src/backend/optimizer/geqo/geqo_params.c
index 2257f2c293d..e3779ead25f 100644
--- a/src/backend/optimizer/geqo/geqo_params.c
+++ b/src/backend/optimizer/geqo/geqo_params.c
@@ -5,7 +5,7 @@
 *
 * Copyright (c) 1994, Regents of the University of California
 *
-* $Id: geqo_params.c,v 1.10 1998/09/01 03:23:11 momjian Exp $
+* $Id: geqo_params.c,v 1.11 1999/01/17 06:18:27 momjian Exp $
 *
 *-------------------------------------------------------------------------
 */
@@ -91,7 +91,11 @@ geqo_params(int string_length)
 	sprintf(conf_file, "%s/%s", DataDir, GEQO_FILE);
 
 	/* open the config file */
+#ifndef __CYGWIN32__
 	file = AllocateFile(conf_file, "r");
+#else
+	file = AllocateFile(conf_file, "rb");
+#endif
 	if (file)
 	{
 
diff --git a/src/backend/port/snprintf.c b/src/backend/port/snprintf.c
index c49df449423..2d6215decd5 100644
--- a/src/backend/port/snprintf.c
+++ b/src/backend/port/snprintf.c
@@ -36,6 +36,7 @@
 #include "pathnames.h"
 #endif
 
+#include <features.h>
 #include "postgres.h"
 
 #include "regex/cdefs.h"
@@ -73,7 +74,7 @@ typedef unsigned long long ulong_long;
  * causing nast effects.
  **************************************************************/
 
-/*static char _id[] = "$Id: snprintf.c,v 1.16 1999/01/17 03:22:49 tgl Exp $";*/
+/*static char _id[] = "$Id: snprintf.c,v 1.17 1999/01/17 06:18:33 momjian Exp $";*/
 static char *end;
 static int	SnprfOverflow;
 
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 8c35f6eeb6c..795b1959fde 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.98 1998/11/29 01:51:56 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.99 1999/01/17 06:18:34 momjian Exp $
  *
  * NOTES
  *
@@ -73,6 +73,10 @@
 #include <sys/select.h>
 #endif
 
+#ifdef __CYGWIN32__
+#include <getopt.h>
+#endif
+
 #include "storage/ipc.h"
 #include "libpq/libpq.h"
 #include "libpq/auth.h"
@@ -170,7 +174,9 @@ static int	real_argc;
 static char Execfile[MAXPATHLEN] = "";
 
 static int	ServerSock_INET = INVALID_SOCK;		/* stream socket server */
+#ifndef __CYGWIN32__
 static int	ServerSock_UNIX = INVALID_SOCK;		/* stream socket server */
+#endif
 
 /*
  * Set by the -o option
@@ -268,7 +274,11 @@ checkDataDir(const char *DataDir, bool *DataDirOK)
 
 		sprintf(path, "%s%cbase%ctemplate1%cpg_class",
 				DataDir, SEP_CHAR, SEP_CHAR, SEP_CHAR);
+#ifndef __CYGWIN32__
 		fp = AllocateFile(path, "r");
+#else
+		fp = AllocateFile(path, "rb");
+#endif
 		if (fp == NULL)
 		{
 			fprintf(stderr, "%s does not find the database system.  "
@@ -522,6 +532,7 @@ PostmasterMain(int argc, char *argv[])
 			exit(1);
 		}
 	}
+#ifndef __CYGWIN32__
 	status = StreamServerPort(NULL, PostPortName, &ServerSock_UNIX);
 	if (status != STATUS_OK)
 	{
@@ -529,7 +540,7 @@ PostmasterMain(int argc, char *argv[])
 				progname);
 		exit(1);
 	}
-
+#endif
 	/* set up shared memory and semaphores */
 	EnableMemoryContext(TRUE);
 	reset_shared(PostPortName);
@@ -584,7 +595,11 @@ pmdaemonize(void)
 		exit(1);
 	}
 #endif
+#ifndef __CYGWIN32__
 	i = open(NULL_DEV, O_RDWR);
+#else
+	i = open(NULL_DEV, O_RDWR | O_BINARY);
+#endif
 	dup2(i, 0);
 	dup2(i, 1);
 	dup2(i, 2);
@@ -688,12 +703,14 @@ ServerLoop(void)
 
 		/* new connection pending on our well-known port's socket */
 
+#ifndef __CYGWIN32__
 		if (ServerSock_UNIX != INVALID_SOCK &&
 			FD_ISSET(ServerSock_UNIX, &rmask) &&
 			(port = ConnCreate(ServerSock_UNIX)) != NULL)
 			PacketReceiveSetup(&port->pktInfo,
 							   readStartupPacket,
 							   (void *) port);
+#endif
 
 		if (ServerSock_INET != INVALID_SOCK &&
 			FD_ISSET(ServerSock_INET, &rmask) &&
@@ -802,6 +819,7 @@ initMasks(fd_set *rmask, fd_set *wmask)
 	FD_ZERO(rmask);
 	FD_ZERO(wmask);
 
+#ifndef __CYGWIN32__
 	if (ServerSock_UNIX != INVALID_SOCK)
 	{
 		FD_SET(ServerSock_UNIX, rmask);
@@ -809,6 +827,7 @@ initMasks(fd_set *rmask, fd_set *wmask)
 		if (ServerSock_UNIX > nsocks)
 			nsocks = ServerSock_UNIX;
 	}
+#endif
 
 	if (ServerSock_INET != INVALID_SOCK)
 	{
@@ -1437,7 +1456,9 @@ DoBackend(Port *port)
 	/* Close the postmater sockets */
 	if (NetServer)
 		StreamClose(ServerSock_INET);
+#ifndef __CYGWIN32__
 	StreamClose(ServerSock_UNIX);
+#endif
 
 	/* Save port for ps status */
 	MyProcPort = port;
@@ -1546,8 +1567,10 @@ ExitPostmaster(int status)
 	 */
 	if (ServerSock_INET != INVALID_SOCK)
 		StreamClose(ServerSock_INET);
+#ifndef __CYGWIN32__
 	if (ServerSock_UNIX != INVALID_SOCK)
 		StreamClose(ServerSock_UNIX);
+#endif
 	proc_exit(status);
 }
 
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index 1c458728837..762b49836c7 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.39 1998/09/01 04:32:06 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.40 1999/01/17 06:18:40 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -140,7 +140,11 @@ mdcreate(Relation reln)
 	char	   *path;
 
 	path = relpath(reln->rd_rel->relname.data);
+#ifndef __CYGWIN32__
 	fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL, 0600);
+#else
+	fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | O_BINARY, 0600);
+#endif
 
 	/*
 	 * If the file already exists and is empty, we pretend that the create
@@ -157,7 +161,11 @@ mdcreate(Relation reln)
 	{
 		if (!IsBootstrapProcessingMode())
 			return -1;
+#ifndef __CYGWIN32__
 		fd = FileNameOpenFile(path, O_RDWR, 0600);		/* Bootstrap */
+#else
+		fd = FileNameOpenFile(path, O_RDWR | O_BINARY, 0600);	/* Bootstrap */
+#endif
 		if (fd < 0)
 			return -1;
 	}
@@ -290,11 +298,19 @@ mdopen(Relation reln)
 
 	path = relpath(reln->rd_rel->relname.data);
 
+#ifndef __CYGWIN32__
 	fd = FileNameOpenFile(path, O_RDWR, 0600);
+#else
+	fd = FileNameOpenFile(path, O_RDWR | O_BINARY, 0600);
+#endif
 
 	/* this should only happen during bootstrap processing */
 	if (fd < 0)
+#ifndef __CYGWIN32__
 		fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL, 0600);
+#else
+		fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | O_BINARY, 0600);
+#endif
 
 	vfd = _fdvec_alloc();
 	if (vfd < 0)
@@ -622,7 +638,11 @@ mdblindwrt(char *dbstr,
 	}
 #endif
 
+#ifndef __CYGWIN32__
 	if ((fd = open(path, O_RDWR, 0600)) < 0)
+#else
+	if ((fd = open(path, O_RDWR | O_BINARY, 0600)) < 0)
+#endif
 		return SM_FAIL;
 
 	/* seek to the right spot */
@@ -900,7 +920,11 @@ _mdfd_openseg(Relation reln, int segno, int oflags)
 		fullpath = path;
 
 	/* open the file */
+#ifndef __CYGWIN32__
 	fd = PathNameOpenFile(fullpath, O_RDWR | oflags, 0600);
+#else
+	fd = PathNameOpenFile(fullpath, O_RDWR | O_BINARY | oflags, 0600);
+#endif
 
 	if (dofree)
 		pfree(fullpath);
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 7e5f2d66d6b..eeec7b02259 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.95 1998/12/16 11:53:52 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.96 1999/01/17 06:18:42 momjian Exp $
  *
  * NOTES
  *	  this is the "main" module of the postgres backend and
@@ -39,6 +39,9 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <netdb.h>
+#ifdef __CYGWIN32__
+#include <getopt.h>
+#endif
 
 #include "postgres.h"
 #include "miscadmin.h"
@@ -1451,7 +1454,11 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
 		{
 			fprintf(stderr,
 					"Postmaster flag set: no port number specified, use /dev/null\n");
+#ifndef __CYGWIN32__
 			Portfd = open(NULL_DEV, O_RDWR, 0666);
+#else
+			Portfd = open(NULL_DEV, O_RDWR | O_BINARY, 0666);
+#endif
 		}
 		pq_init(Portfd);
 		whereToSendOutput = Remote;
@@ -1520,7 +1527,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
 	if (!IsUnderPostmaster)
 	{
 		puts("\nPOSTGRES backend interactive interface ");
-		puts("$Revision: 1.95 $ $Date: 1998/12/16 11:53:52 $\n");
+		puts("$Revision: 1.96 $ $Date: 1999/01/17 06:18:42 $\n");
 	}
 
 	/* ----------------
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 598fe952c40..7d9e11ba5bd 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.51 1998/12/18 09:10:36 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.52 1999/01/17 06:18:44 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -620,7 +620,11 @@ ProcessUtility(Node *parsetree,
 
 				filename = stmt->filename;
 				closeAllVfds();
+#ifndef __CYGWIN32__
 				if ((fp = AllocateFile(filename, "r")) == NULL)
+#else
+				if ((fp = AllocateFile(filename, "rb")) == NULL)
+#endif
 					elog(ERROR, "LOAD: could not open file '%s'", filename);
 				FreeFile(fp);
 				load_file(filename);
diff --git a/src/backend/utils/adt/arrayfuncs.c b/src/backend/utils/adt/arrayfuncs.c
index 04a224feaeb..7a4a14583b9 100644
--- a/src/backend/utils/adt/arrayfuncs.c
+++ b/src/backend/utils/adt/arrayfuncs.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.34 1998/09/01 04:32:24 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.35 1999/01/17 06:18:45 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -550,7 +550,11 @@ _ReadLOArray(char *str,
 	{
 		FILE	   *afd;
 
+#ifndef __CYGWIN32__
 		if ((afd = AllocateFile(accessfile, "r")) == NULL)
+#else
+		if ((afd = AllocateFile(accessfile, "r")) == NULL)
+#endif
 			elog(ERROR, "unable to open access pattern file");
 		*chunkFlag = true;
 		retStr = _ChunkArray(*fd, afd, ndim, dim, baseSize, nbytes,
diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c
index 99ee3d2fc54..f86196d3bcf 100644
--- a/src/backend/utils/cache/relcache.c
+++ b/src/backend/utils/cache/relcache.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.52 1998/12/15 12:46:37 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.53 1999/01/17 06:18:51 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1861,7 +1861,11 @@ init_irels(void)
 	int			i;
 	int			relno;
 
+#ifndef __CYGWIN32__
 	if ((fd = FileNameOpenFile(INIT_FILENAME, O_RDONLY, 0600)) < 0)
+#else
+	if ((fd = FileNameOpenFile(INIT_FILENAME, O_RDONLY | O_BINARY, 0600)) < 0)
+#endif
 	{
 		write_irels();
 		return;
@@ -2022,7 +2026,11 @@ write_irels(void)
 	int			relno;
 	RelationBuildDescInfo bi;
 
+#ifndef __CYGWIN32__
 	fd = FileNameOpenFile(INIT_FILENAME, O_WRONLY | O_CREAT | O_TRUNC, 0600);
+#else
+	fd = FileNameOpenFile(INIT_FILENAME, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0600);
+#endif
 	if (fd < 0)
 		elog(FATAL, "cannot create init file %s", INIT_FILENAME);
 
diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c
index 564be81ec43..0f10549285b 100644
--- a/src/backend/utils/init/miscinit.c
+++ b/src/backend/utils/init/miscinit.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.24 1998/10/08 18:30:16 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.25 1999/01/17 06:18:54 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -338,7 +338,11 @@ SetCharSet()
 		map_file = (char *) malloc((strlen(DataDir) +
 									strlen(p) + 2) * sizeof(char));
 		sprintf(map_file, "%s/%s", DataDir, p);
+#ifndef __CYGWIN32__
 		file = fopen(map_file, "r");
+#else
+		file = fopen(map_file, "rb");
+#endif
 		if (file == NULL)
 			return;
 		eof = false;
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index 12bbcf3034a..c23dd15bce1 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.35 1998/09/01 04:33:17 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/init/postinit.c,v 1.36 1999/01/17 06:18:55 momjian Exp $
  *
  * NOTES
  *		InitPostgres() is the function called from PostgresMain
@@ -176,7 +176,11 @@ VerifySystemDatabase()
 
 	errormsg[0] = '\0';
 
+#ifndef __CYGWIN32__
 	if ((fd = open(DataDir, O_RDONLY, 0)) == -1)
+#else
+	if ((fd = open(DataDir, O_RDONLY | O_DIROPEN, 0)) == -1)
+#endif
 		sprintf(errormsg, "Database system does not exist.  "
 				"PGDATA directory '%s' not found.\n\tNormally, you "
 				"create a database system by running initdb.",
@@ -212,7 +216,11 @@ VerifyMyDatabase()
 	name = DatabaseName;
 	myPath = DatabasePath;
 
+#ifndef __CYGWIN32__
 	if ((fd = open(myPath, O_RDONLY, 0)) == -1)
+#else
+	if ((fd = open(myPath, O_RDONLY | O_DIROPEN, 0)) == -1)
+#endif
 		sprintf(errormsg,
 				"Database '%s' does not exist."
 			"\n\tWe know this because the directory '%s' does not exist."
diff --git a/src/backend/utils/misc/database.c b/src/backend/utils/misc/database.c
index 60f6499872e..dadf6a8173c 100644
--- a/src/backend/utils/misc/database.c
+++ b/src/backend/utils/misc/database.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/misc/Attic/database.c,v 1.21 1998/11/27 19:52:29 vadim Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/misc/Attic/database.c,v 1.22 1999/01/17 06:18:58 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -198,7 +198,11 @@ GetRawDatabaseInfo(char *name, int4 *owner, Oid *db_id, char *path, int *encodin
 	sprintf(dbfname, "%s%cpg_database", DataDir, SEP_CHAR);
 	fileflags = O_RDONLY;
 
+#ifndef __CYGWIN32__
 	if ((dbfd = open(dbfname, O_RDONLY, 0)) < 0)
+#else
+	if ((dbfd = open(dbfname, O_RDONLY | O_BINARY, 0)) < 0)
+#endif
 		elog(FATAL, "Cannot open %s", dbfname);
 
 	pfree(dbfname);
diff --git a/src/backend/utils/misc/trace.c b/src/backend/utils/misc/trace.c
index def34162f24..1ac48bc82d7 100644
--- a/src/backend/utils/misc/trace.c
+++ b/src/backend/utils/misc/trace.c
@@ -345,7 +345,11 @@ read_pg_options(SIGNAL_ARGS)
 	}
 
 	snprintf(buffer, BUF_SIZE - 1, "%s/%s", DataDir, "pg_options");
+#ifndef __CYGWIN32__
 	if ((fd = open(buffer, O_RDONLY)) < 0)
+#else
+	if ((fd = open(buffer, O_RDONLY | O_BINARY)) < 0)
+#endif
 		return;
 
 	if ((n = read(fd, buffer, BUF_SIZE - 1)) > 0)
diff --git a/src/backend/utils/sort/psort.c b/src/backend/utils/sort/psort.c
index 76daa0351ee..09bbd877ef1 100644
--- a/src/backend/utils/sort/psort.c
+++ b/src/backend/utils/sort/psort.c
@@ -4,7 +4,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- *	  $Id: psort.c,v 1.46 1999/01/01 04:48:49 momjian Exp $
+ *	  $Id: psort.c,v 1.47 1999/01/17 06:19:02 momjian Exp $
  *
  * NOTES
  *		Sorts the first relation into the second relation.
@@ -1033,8 +1033,11 @@ gettape()
 
 	StrNCpy(tp->tl_name, uniqueName, MAXPGPATH);
 
-
+#ifndef __CYGWIN32__
 	file = AllocateFile(tp->tl_name, "w+");
+#else
+	file = AllocateFile(tp->tl_name, "w+b");
+#endif
 	if (file == NULL)
 		elog(ERROR, "Open: %s in %s line %d, %s", tp->tl_name,
 			 __FILE__, __LINE__, strerror(errno));
diff --git a/src/bin/pg_dump/Makefile.in b/src/bin/pg_dump/Makefile.in
index ca154026003..f387b729e0b 100644
--- a/src/bin/pg_dump/Makefile.in
+++ b/src/bin/pg_dump/Makefile.in
@@ -7,7 +7,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/pg_dump/Attic/Makefile.in,v 1.10 1998/08/30 05:06:53 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/pg_dump/Attic/Makefile.in,v 1.11 1999/01/17 06:19:05 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -39,7 +39,7 @@ submake:
 	$(MAKE) -C $(LIBPQDIR) libpq.a
 
 install: pg_dump
-	$(INSTALL) $(INSTL_EXE_OPTS) pg_dump $(BINDIR)/pg_dump
+	$(INSTALL) $(INSTL_EXE_OPTS) pg_dump$(X) $(BINDIR)/pg_dump$(X)
 	$(INSTALL) $(INSTL_EXE_OPTS) pg_dumpall $(BINDIR)/pg_dumpall
 	$(INSTALL) $(INSTL_EXE_OPTS) pg_upgrade $(BINDIR)/pg_upgrade
 
@@ -47,7 +47,7 @@ depend dep:
 	$(CC) -MM $(CFLAGS) *.c >depend
 
 clean: 
-	rm -f pg_dump $(OBJS) 
+	rm -f pg_dump$(X) $(OBJS) 
 
 ifeq (depend,$(wildcard depend))
 include depend
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 0ffaaeb97db..4686c7cbee7 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -21,7 +21,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.97 1998/12/13 23:41:32 thomas Exp $
+ *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.98 1999/01/17 06:19:05 momjian Exp $
  *
  * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
  *
@@ -76,6 +76,10 @@
 #include <termios.h>
 #endif
 
+#ifdef __CYGWIN32__
+#include <getopt.h>
+#endif
+
 #include "pg_dump.h"
 
 static void dumpSequence(FILE *fout, TableInfo tbinfo);
@@ -629,7 +633,11 @@ main(int argc, char **argv)
 		g_fout = stdout;
 	else
 	{
+#ifndef __CYGWIN32__
 		g_fout = fopen(filename, "w");
+#else
+		g_fout = fopen(filename, "wb");
+#endif
 		if (g_fout == NULL)
 		{
 			fprintf(stderr,
diff --git a/src/bin/pg_id/Makefile b/src/bin/pg_id/Makefile
index c98275678ce..0919f2ffc42 100644
--- a/src/bin/pg_id/Makefile
+++ b/src/bin/pg_id/Makefile
@@ -7,7 +7,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/pg_id/Attic/Makefile,v 1.11 1998/04/06 16:51:04 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/pg_id/Attic/Makefile,v 1.12 1999/01/17 06:19:10 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -33,13 +33,13 @@ $(LIBPQDIR)/libpq.a:
 	$(MAKE) -C $(LIBPQDIR) libpq.a
 
 install: pg_id
-	$(INSTALL) $(INSTL_EXE_OPTS) pg_id $(BINDIR)/pg_id
+	$(INSTALL) $(INSTL_EXE_OPTS) pg_id$(X) $(BINDIR)/pg_id$(X)
 
 depend dep:
 	$(CC) -MM $(CFLAGS) *.c >depend
 
 clean: 
-	rm -f pg_id $(OBJS) 
+	rm -f pg_id$(X) $(OBJS) 
 
 ifeq (depend,$(wildcard depend))
 include depend
diff --git a/src/bin/pg_id/pg_id.c b/src/bin/pg_id/pg_id.c
index 7388946051e..ee2cb020a23 100644
--- a/src/bin/pg_id/pg_id.c
+++ b/src/bin/pg_id/pg_id.c
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/bin/pg_id/Attic/pg_id.c,v 1.6 1998/06/15 19:30:03 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/bin/pg_id/Attic/pg_id.c,v 1.7 1999/01/17 06:19:10 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -18,7 +18,9 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-
+#ifdef __CYGWIN32__
+#include <getopt.h>
+#endif
 
 int
 main(int argc, char **argv)
diff --git a/src/bin/pg_passwd/Makefile b/src/bin/pg_passwd/Makefile
index 408640fea52..e4ceb5c7136 100644
--- a/src/bin/pg_passwd/Makefile
+++ b/src/bin/pg_passwd/Makefile
@@ -15,7 +15,7 @@ pg_passwd: $(OBJS)
 	$(CC) -o pg_passwd $(OBJS) $(LDFLAGS)
 
 install: pg_passwd
-	$(INSTALL) $(INSTL_EXE_OPTS) pg_passwd $(BINDIR)/pg_passwd
+	$(INSTALL) $(INSTL_EXE_OPTS) pg_passwd$(X) $(BINDIR)/pg_passwd$(X)
 
 .PHONY: submake
 submake:
@@ -25,7 +25,7 @@ depend dep:
 	$(CC) -MM $(CFLAGS) *.c >depend
 
 clean:
-	rm -f pg_passwd $(OBJS)
+	rm -f pg_passwd$(X) $(OBJS)
 
 ifeq (depend,$(wildcard depend))
 include depend
diff --git a/src/bin/pg_passwd/pg_passwd.c b/src/bin/pg_passwd/pg_passwd.c
index de9ffd65a7c..0718a3153bf 100644
--- a/src/bin/pg_passwd/pg_passwd.c
+++ b/src/bin/pg_passwd/pg_passwd.c
@@ -63,7 +63,11 @@ read_pwd_file(char *filename)
 	int			i;
 
 try_again:
+#ifndef __CYGWIN32__
 	fp = fopen(filename, "r");
+#else
+	fp = fopen(filename, "rb");
+#endif
 	if (fp == NULL)
 	{
 		if (errno == ENOENT)
@@ -75,7 +79,11 @@ try_again:
 			{
 				case 'y':
 				case 'Y':
+#ifndef __CYGWIN32__
 					fp = fopen(filename, "w");
+#else
+					fp = fopen(filename, "wb");
+#endif
 					if (fp == NULL)
 					{
 						perror(filename);
@@ -193,7 +201,11 @@ link_again:
 	}
 
 	/* open file */
+#ifndef __CYGWIN32__
 	if ((fp = fopen(filename, "w")) == NULL)
+#else
+	if ((fp = fopen(filename, "wb")) == NULL)
+#endif
 	{
 		perror(filename);
 		exit(1);
diff --git a/src/bin/pg_version/Makefile.in b/src/bin/pg_version/Makefile.in
index ed0eff24055..516a07f498a 100644
--- a/src/bin/pg_version/Makefile.in
+++ b/src/bin/pg_version/Makefile.in
@@ -7,7 +7,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/pg_version/Attic/Makefile.in,v 1.5 1998/04/06 16:51:27 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/pg_version/Attic/Makefile.in,v 1.6 1999/01/17 06:19:14 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -28,13 +28,13 @@ submake:
 	$(MAKE) -C ../../utils version.o
 
 install: pg_version
-	$(INSTALL) $(INSTL_EXE_OPTS) pg_version $(BINDIR)/pg_version
+	$(INSTALL) $(INSTL_EXE_OPTS) pg_version$(X) $(BINDIR)/pg_version$(X)
 
 depend dep:
 	$(CC) -MM $(CFLAGS) *.c >depend
 
 clean: 
-	rm -f pg_version pg_version.o
+	rm -f pg_version$(X) pg_version.o
 
 ifeq (depend,$(wildcard depend))
 include depend
diff --git a/src/bin/psql/Makefile.in b/src/bin/psql/Makefile.in
index 1af2e51ff87..4e19ed1984a 100644
--- a/src/bin/psql/Makefile.in
+++ b/src/bin/psql/Makefile.in
@@ -7,7 +7,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/psql/Attic/Makefile.in,v 1.14 1998/11/30 00:30:05 tgl Exp $
+#    $Header: /cvsroot/pgsql/src/bin/psql/Attic/Makefile.in,v 1.15 1999/01/17 06:19:19 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -43,13 +43,13 @@ submake:
 	$(MAKE) -C $(LIBPQDIR) libpq.a
 
 install: psql
-	$(INSTALL) $(INSTL_EXE_OPTS) psql $(BINDIR)/psql
+	$(INSTALL) $(INSTL_EXE_OPTS) psql$(X) $(BINDIR)/psql$(X)
 
 depend dep:
 	$(CC) -MM $(CFLAGS) *.c >depend
 
 clean: 
-	rm -f psql $(OBJS) 
+	rm -f psql$(X) $(OBJS) 
 
 ifeq (depend,$(wildcard depend))
 include depend
diff --git a/src/bin/psql/psql.c b/src/bin/psql/psql.c
index ace31f577c3..453d7ae7e11 100644
--- a/src/bin/psql/psql.c
+++ b/src/bin/psql/psql.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.165 1998/12/14 04:59:58 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.166 1999/01/17 06:19:19 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -40,6 +40,9 @@
 #ifdef HAVE_TERMIOS_H
 #include <termios.h>
 #endif
+#ifdef __CYGWIN32__
+#include <getopt.h>
+#endif
 
 #ifdef HAVE_LIBREADLINE
 #ifdef HAVE_READLINE_H
@@ -1436,9 +1439,17 @@ do_copy(const char *args, PsqlSettings *pset)
 			strcat(query, " TO stdout");
 
 		if (from)
+#ifndef __CYGWIN32__
 			copystream = fopen(file, "r");
+#else
+			copystream = fopen(file, "rb");
+#endif
 		else
+#ifndef __CYGWIN32__
 			copystream = fopen(file, "w");
+#else
+			copystream = fopen(file, "wb");
+#endif
 		if (copystream == NULL)
 			fprintf(stderr,
 				"Unable to open file %s which to copy, errno = %s (%d).",
@@ -2139,7 +2150,11 @@ HandleSlashCmds(PsqlSettings *pset,
 				}
 				stat(lastfile, &st);
 				editFile(lastfile);
+#ifndef __CYGWIN32__
 				if ((stat(lastfile, &st2) == -1) || ((fd = fopen(lastfile, "r")) == NULL))
+#else
+				if ((stat(lastfile, &st2) == -1) || ((fd = fopen(lastfile, "rb")) == NULL))
+#endif
 				{
 					perror(lastfile);
 					break;
@@ -2209,7 +2224,11 @@ HandleSlashCmds(PsqlSettings *pset,
 					fprintf(stderr, "\\i must be followed by a file name\n");
 					break;
 				}
+#ifndef __CYGWIN32__
 				if ((fd = fopen(optarg, "r")) == NULL)
+#else
+				if ((fd = fopen(optarg, "rb")) == NULL)
+#endif
 				{
 					fprintf(stderr, "file named %s could not be opened\n", optarg);
 					break;
@@ -2305,7 +2324,11 @@ HandleSlashCmds(PsqlSettings *pset,
 					fprintf(stderr, "\\w must be followed by a file name\n");
 					break;
 				}
+#ifndef __CYGWIN32__
+				if ((fd = fopen(optarg, "w")) == NULL)
+#else
 				if ((fd = fopen(optarg, "w")) == NULL)
+#endif
 				{
 					fprintf(stderr, "file named %s could not be opened\n", optarg);
 					break;
@@ -3086,7 +3109,11 @@ setFout(PsqlSettings *pset, char *fname)
 		if (*fname == '|')
 		{
 			pqsignal(SIGPIPE, SIG_IGN);
+#ifndef __CYGWIN32__
 			pset->queryFout = popen(fname + 1, "w");
+#else
+			pset->queryFout = popen(fname + 1, "wb");
+#endif
 			pset->pipe = 1;
 		}
 		else
diff --git a/src/configure b/src/configure
index e4d2d008a8d..c4ebfada06e 100755
--- a/src/configure
+++ b/src/configure
@@ -668,8 +668,6 @@ PORTNAME=${os}
 
 
 
-
-
 echo "checking echo setting..."
 if echo '\c' | grep -s c >/dev/null 2>&1
 then
@@ -760,7 +758,7 @@ fi
 
 
 if test "$INCLUDE_DIRS"; then
-	for dir in $INCLUDE_DIRS; do
+	for dir in $INCLUDE_DIRS $SRCH_INC; do
 		if test -d "$dir"; then
 			PGSQL_CPPFLAGS="$PGSQL_CPPFLAGS -I$dir"
 		else
@@ -798,7 +796,7 @@ fi
 
 
 if test "$LIBRARY_DIRS"; then
-	for dir in $LIBRARY_DIRS; do
+	for dir in $LIBRARY_DIRS $SRCH_LIB; do
 		if test -d "$dir"; then
 			PGSQL_LDFLAGS="$PGSQL_LDFLAGS -L$dir"
 		else
@@ -1549,11 +1547,11 @@ esac
 
 ECHO_N_OUT=`echo -n "" | wc -c`
 ECHO_C_OUT=`echo "\c" | wc -c`
-if test "$ECHO_N_OUT" -eq 0; then
+if test $ECHO_N_OUT -eq 0; then
 	DASH_N='-n'
 	BACKSLASH_C=
 else
-	if test "ECHO_C_OUT" -eq 0; then
+	if test $ECHO_C_OUT -eq 0; then
 		DASH_N=
 		BACKSLASH_C='\\\\c'
 	else
diff --git a/src/configure.in b/src/configure.in
index 71c9c4749f0..a51defc872b 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -164,7 +164,7 @@ AC_ARG_WITH(includes,
     ])
 
 if test "$INCLUDE_DIRS"; then
-	for dir in $INCLUDE_DIRS; do
+	for dir in $INCLUDE_DIRS $SRCH_INC; do
 		if test -d "$dir"; then
 			PGSQL_CPPFLAGS="$PGSQL_CPPFLAGS -I$dir"
 		else
@@ -196,7 +196,7 @@ AC_ARG_WITH(libraries,
     ])
 
 if test "$LIBRARY_DIRS"; then
-	for dir in $LIBRARY_DIRS; do
+	for dir in $LIBRARY_DIRS $SRCH_LIB; do
 		if test -d "$dir"; then
 			PGSQL_LDFLAGS="$PGSQL_LDFLAGS -L$dir"
 		else
diff --git a/src/include/c.h b/src/include/c.h
index 0432d819406..7c95bbd433c 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -7,7 +7,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: c.h,v 1.48 1999/01/17 03:22:51 tgl Exp $
+ * $Id: c.h,v 1.49 1999/01/17 06:19:22 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -53,6 +53,10 @@
 #include <stdarg.h>
 #endif
 
+#ifdef __CYGWIN32__
+#include <errno.h>
+#endif
+
 /* ----------------------------------------------------------------
  *				Section 1:	bool, true, false, TRUE, FALSE
  * ----------------------------------------------------------------
diff --git a/src/interfaces/ecpg/lib/Makefile.in b/src/interfaces/ecpg/lib/Makefile.in
index 88d39846deb..182fd657432 100644
--- a/src/interfaces/ecpg/lib/Makefile.in
+++ b/src/interfaces/ecpg/lib/Makefile.in
@@ -6,7 +6,7 @@
 # Copyright (c) 1994, Regents of the University of California
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile.in,v 1.38 1998/10/19 00:00:40 tgl Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/Makefile.in,v 1.39 1999/01/17 06:19:24 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -43,6 +43,9 @@ typename.o : typename.c ../include/ecpgtype.h
 .PHONY: clean
 clean:
 	rm -f lib$(NAME).a $(shlib) $(OBJS)
+ifeq ($(PORTNAME), win)
+	rm -f $(NAME).def
+endif
 
 depend dep:
 	$(CC) -MM $(CFLAGS) *.c >depend
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index 0a5a591cc5d..cd4b989f7ba 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -15,10 +15,10 @@ OBJ=y.tab.o pgc.o type.o ecpg.o ecpg_keywords.o ../../../backend/parser/scansup.
 all:: ecpg
 
 clean:
-	rm -f *.o core a.out ecpg y.tab.h y.tab.c pgc.c *~
+	rm -f *.o core a.out ecpg$(X) y.tab.h y.tab.c pgc.c *~
 
 install: all
-	$(INSTALL) $(INSTL_EXE_OPTS) ecpg $(DESTDIR)$(BINDIR)
+	$(INSTALL) $(INSTL_EXE_OPTS) ecpg$(X) $(DESTDIR)$(BINDIR)
 
 uninstall:
 	rm -f $(DESTDIR)$(BINDIR)/ecpg
diff --git a/src/interfaces/ecpg/preproc/ecpg.c b/src/interfaces/ecpg/preproc/ecpg.c
index 16cddc77b76..11ed36ef65c 100644
--- a/src/interfaces/ecpg/preproc/ecpg.c
+++ b/src/interfaces/ecpg/preproc/ecpg.c
@@ -61,7 +61,11 @@ main(int argc, char *const argv[])
 		switch (c)
 		{
 			case 'o':
+#ifndef __CYGWIN32__
 				yyout = fopen(optarg, "w");
+#else
+				yyout = fopen(optarg, "wb");
+#endif
 				if (yyout == NULL)
 					perror(optarg);
 				else
@@ -126,7 +130,11 @@ main(int argc, char *const argv[])
 				ptr2ext[1] = 'c';
 				ptr2ext[2] = '\0';
 
+#ifndef __CYGWIN32__
 				yyout = fopen(output_filename, "w");
+#else
+				yyout = fopen(output_filename, "wb");
+#endif
 				if (yyout == NULL)
 				{
 					perror(output_filename);
@@ -136,7 +144,11 @@ main(int argc, char *const argv[])
 				}
 			}
 
+#ifndef __CYGWIN32__
 			yyin = fopen(input_filename, "r");
+#else
+			yyin = fopen(input_filename, "rb");
+#endif
 			if (yyin == NULL)
 				perror(argv[fnr]);
 			else
diff --git a/src/interfaces/libpq++/Makefile.in b/src/interfaces/libpq++/Makefile.in
index 5a1fc34f85b..8c3ba2f0048 100644
--- a/src/interfaces/libpq++/Makefile.in
+++ b/src/interfaces/libpq++/Makefile.in
@@ -6,7 +6,7 @@
 # Copyright (c) 1994, Regents of the University of California
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/Makefile.in,v 1.10 1998/10/19 00:00:46 tgl Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/Makefile.in,v 1.11 1999/01/17 06:19:39 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -44,7 +44,11 @@ endif
 
 OBJS = pgenv.o pgconnection.o pgtransdb.o pgcursordb.o pglobject.o
 
+ifeq ($(PORTNAME), win)
+SHLIB_LINK+= -L../libpq -lpq -lstdc++
+else
 SHLIB_LINK= -L../libpq -lpq
+endif
 
 # Shared library stuff, also default 'all' target
 include $(SRCDIR)/Makefile.shlib
@@ -87,6 +91,9 @@ beforeinstall-headers:
 clean:
 	rm -f libpq++.a $(shlib) $(OBJS)
 	$(MAKE) -C examples clean
+ifeq ($(PORTNAME), win)
+	rm -f pq++.def
+endif
 
 dep depend:
 	$(CXX) -MM $(CXXFLAGS) *.cc >depend
diff --git a/src/interfaces/libpq/Makefile.in b/src/interfaces/libpq/Makefile.in
index 6d60876dd64..471fda1773d 100644
--- a/src/interfaces/libpq/Makefile.in
+++ b/src/interfaces/libpq/Makefile.in
@@ -6,7 +6,7 @@
 # Copyright (c) 1994, Regents of the University of California
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/libpq/Attic/Makefile.in,v 1.41 1998/11/12 05:27:01 tgl Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/libpq/Attic/Makefile.in,v 1.42 1999/01/17 06:19:34 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -36,7 +36,11 @@ endif
 
 # If crypt is a separate library, rather than part of libc,
 # make sure it gets included in shared libpq.
+ifeq ($(PORTNAME), win)
+SHLIB_LINK+= $(findstring -lcrypt,$(LIBS))
+else
 SHLIB_LINK= $(findstring -lcrypt,$(LIBS))
+endif
 
 # Shared library stuff, also default 'all' target
 include $(SRCDIR)/Makefile.shlib
@@ -139,6 +143,9 @@ beforeinstall-headers:
 clean:
 	rm -f libpq.a $(shlib) $(OBJS)
 	rm -f dllist.c common.c wchar.c conv.c
+ifeq ($(PORTNAME), win)
+	rm -f pq.def
+endif
 
 depend dep:
 	$(CC) -MM $(CFLAGS) *.c >depend
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index cb515be8f3a..4c5f70035ae 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.87 1999/01/17 03:37:19 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.88 1999/01/17 06:19:35 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -567,7 +567,7 @@ connectDB(PGconn *conn)
 		conn->raddr.in.sin_port = htons((unsigned short) (portno));
 		conn->raddr_len = sizeof(struct sockaddr_in);
 	}
-#ifndef WIN32
+#if !defined(WIN32) && !defined(__CYGWIN32__)
 	else
 		conn->raddr_len = UNIXSOCK_PATH(conn->raddr.un, portno);
 #endif
diff --git a/src/interfaces/libpq/fe-lobj.c b/src/interfaces/libpq/fe-lobj.c
index 19c7770f3f1..7fd52737bf0 100644
--- a/src/interfaces/libpq/fe-lobj.c
+++ b/src/interfaces/libpq/fe-lobj.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-lobj.c,v 1.17 1998/10/01 01:40:22 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-lobj.c,v 1.18 1999/01/17 06:19:36 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -392,7 +392,11 @@ lo_import(PGconn *conn, char *filename)
 	/*
 	 * open the file to be read in
 	 */
+#ifndef __CYGWIN32__
 	fd = open(filename, O_RDONLY, 0666);
+#else
+	fd = open(filename, O_RDONLY | O_BINARY, 0666);
+#endif
 	if (fd < 0)
 	{							/* error */
 		sprintf(conn->errorMessage,
@@ -467,7 +471,11 @@ lo_export(PGconn *conn, Oid lobjId, char *filename)
 	/*
 	 * open the file to be written to
 	 */
+#ifndef __CYGWIN32__
 	fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC, 0666);
+#else
+	fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY, 0666);
+#endif
 	if (fd < 0)
 	{							/* error */
 		sprintf(conn->errorMessage,
diff --git a/src/interfaces/odbc/GNUmakefile.in b/src/interfaces/odbc/GNUmakefile.in
index 64ffee8825f..0835bd53b5a 100644
--- a/src/interfaces/odbc/GNUmakefile.in
+++ b/src/interfaces/odbc/GNUmakefile.in
@@ -7,7 +7,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/GNUmakefile.in,v 1.9 1998/10/28 06:49:10 thomas Exp $
+#    $Header: /cvsroot/pgsql/src/interfaces/odbc/Attic/GNUmakefile.in,v 1.10 1999/01/17 06:19:43 momjian Exp $
 #
 #-------------------------------------------------------------------------
 @SET_MAKE@
@@ -73,7 +73,11 @@ clean:
 distclean: clean
 	-rm -f config.h GNUmakefile Makefile.global
 	-rm -f config.cache config.log config.status
+ifeq ($(PORTNAME), win)
+	@if [ $SRCDIR != $ODBCSRCDIR ]; then rm -f template makefiles port; fi
+else
 	@if [ $SRCDIR ne $ODBCSRCDIR ]; then rm -f template makefiles port
+endif
 
 .PHONY: standalone
 
diff --git a/src/interfaces/odbc/gpps.c b/src/interfaces/odbc/gpps.c
index 5cb4502c186..38a2e49928b 100644
--- a/src/interfaces/odbc/gpps.c
+++ b/src/interfaces/odbc/gpps.c
@@ -97,10 +97,18 @@ GetPrivateProfileString(char *theSection,	// section name
 	  /* This code makes it so that a file in the users home dir
 	   * overrides a the "default" file as passed in
 	  */
+#ifndef __CYGWIN32__
 	aFile = (FILE*)(buf ? fopen(buf, "r") : NULL);
+#else
+	aFile = (FILE*)(buf ? fopen(buf, "rb") : NULL);
+#endif
 	if(!aFile) {
 		sprintf(buf,"%s",theIniFileName);
+#ifndef __CYGWIN32__
 		aFile = (FILE*)(buf ? fopen(buf, "r") : NULL);
+#else
+		aFile = (FILE*)(buf ? fopen(buf, "rb") : NULL);
+#endif
 	}
 
 		
diff --git a/src/interfaces/odbc/misc.c b/src/interfaces/odbc/misc.c
index 60baaa63f2d..cc31c3bdf83 100644
--- a/src/interfaces/odbc/misc.c
+++ b/src/interfaces/odbc/misc.c
@@ -71,7 +71,11 @@ char filebuf[80];
 
 		if (! LOGFP) {
 			generate_filename(MYLOGDIR,MYLOGFILE,filebuf);
+#ifndef __CYGWIN32__
 			LOGFP = fopen(filebuf, "w");
+#else
+			LOGFP = fopen(filebuf, "wb");
+#endif
 			globals.mylogFP = LOGFP;
 			setbuf(LOGFP, NULL);
 		}
@@ -102,7 +106,11 @@ FILE* LOGFP = globals.qlogFP;
 
 		if (! LOGFP) {
 			generate_filename(QLOGDIR,QLOGFILE,filebuf);
+#ifndef __CYGWIN32__
 			LOGFP = fopen(filebuf, "w");
+#else
+			LOGFP = fopen(filebuf, "wb");
+#endif
 			globals.qlogFP = LOGFP;
 			setbuf(LOGFP, NULL);
 		}
diff --git a/src/lextest/Makefile b/src/lextest/Makefile
index d1cdc1a3bac..b466704a076 100644
--- a/src/lextest/Makefile
+++ b/src/lextest/Makefile
@@ -19,6 +19,6 @@ lextest: lextest.c scan.l
 	@echo "If this fails, flex is broken" | ./lextest || rm -f lextest
 
 clean:
-	rm -f lextest lex.yy.c lex.yy.o lextest.o
+	rm -f lextest$(X) lex.yy.c lex.yy.o lextest.o
 
 dep:
diff --git a/src/pl/plpgsql/src/Makefile.in b/src/pl/plpgsql/src/Makefile.in
index 637ede61920..7b3379d5520 100644
--- a/src/pl/plpgsql/src/Makefile.in
+++ b/src/pl/plpgsql/src/Makefile.in
@@ -4,7 +4,7 @@
 #    Makefile for the plpgsql shared object
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/Makefile.in,v 1.12 1998/10/30 15:05:23 tgl Exp $
+#    $Header: /cvsroot/pgsql/src/pl/plpgsql/src/Attic/Makefile.in,v 1.13 1999/01/17 06:19:53 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -24,7 +24,11 @@ LFLAGS+= -i -l
 
 OBJS=	pl_parse.o pl_handler.o pl_comp.o pl_exec.o pl_funcs.o
 
+ifeq ($(PORTNAME), win)
+SHLIB_LINK+= -L$(LIBPQDIR) -lpq
+else
 SHLIB_LINK= -L$(LIBPQDIR) -lpq
+endif
 
 # Shared library stuff, also default 'all' target
 include $(SRCDIR)/Makefile.shlib
@@ -74,3 +78,6 @@ pl.tab.h:	pl_gram.c
 clean:
 	rm -f lib$(NAME).a $(shlib)
 	rm -f *.o pl.tab.h pl_gram.c pl_scan.c
+ifeq ($(PORTNAME), win)
+	rm -f $(NAME).def
+endif
diff --git a/src/template/.similar b/src/template/.similar
index 7702fc6291f..f281e256a6e 100644
--- a/src/template/.similar
+++ b/src/template/.similar
@@ -12,6 +12,7 @@ i386-pc-solaris=solaris_i386_gcc
 i386-pc-sunos5=solaris_i386_gcc
 i386-unknown-freebsd=freebsd
 i386-unknown-netbsd=netbsd
+i386-pc-cygwin32=cygwin32
 i486-pc-linux-gnu=linux_i386
 i586-pc-linux-gnu=linux_i386
 i586-pc-sco3.2v=sco
diff --git a/src/test/regress/GNUmakefile b/src/test/regress/GNUmakefile
index e23eecdae79..7c235581390 100644
--- a/src/test/regress/GNUmakefile
+++ b/src/test/regress/GNUmakefile
@@ -7,7 +7,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/test/regress/GNUmakefile,v 1.16 1998/07/26 04:31:41 scrappy Exp $
+#    $Header: /cvsroot/pgsql/src/test/regress/GNUmakefile,v 1.17 1999/01/17 06:19:57 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -43,19 +43,37 @@ endif
 all: $(INFILES)
 	cd input; $(MAKE) all; cd ..
 	cd output; $(MAKE) all; cd ..
+#ifneq ($(PORTNAME), win)
 	$(MAKE) -C ../../../contrib/spi REFINT_VERBOSE=1 refint$(DLSUFFIX) \
 	autoinc$(DLSUFFIX)
+#else
+#	cat /dev/null > ../../../contrib/spi/refint$(DLSUFFIX)
+#	cat /dev/null > ../../../contrib/spi/autoinc$(DLSUFFIX)
+#endif
+
+#ifeq ($(PORTNAME), win)
+#regress.dll: regress.c
+#	cat /dev/null > $@
+#endif
 
 #
 # run the test
 #
 runtest: $(INFILES) 
+ifneq ($(PORTNAME), win)
+	MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \
+	$(SHELL) ./regress.sh $(PORTNAME) 2>&1 | tee regress.out
+else
 	MULTIBYTE=$(MULTIBYTE);export MULTIBYTE; \
-	$(SHELL) ./regress.sh 2>&1 | tee regress.out
+	./regress.sh $(PORTNAME) 2>&1 | tee regress.out
+endif
 	@echo "ACTUAL RESULTS OF REGRESSION TEST ARE NOW IN FILE regress.out"
 
 clean:
-	rm -f $(INFILES) regress.out
+	rm -f $(INFILES) regress.out regress.o regression.diffs
+ifeq ($(PORTNAME), win)
+	rm -f regress.def
+endif
 	$(MAKE) -C sql clean
 	$(MAKE) -C expected clean
 	$(MAKE) -C results clean
diff --git a/src/test/regress/regress.sh b/src/test/regress/regress.sh
index 8e74b0402c9..f64de5a858e 100755
--- a/src/test/regress/regress.sh
+++ b/src/test/regress/regress.sh
@@ -1,6 +1,19 @@
 #!/bin/sh
-# $Header: /cvsroot/pgsql/src/test/regress/Attic/regress.sh,v 1.21 1998/08/28 14:17:57 momjian Exp $
+# $Header: /cvsroot/pgsql/src/test/regress/Attic/regress.sh,v 1.22 1999/01/17 06:19:58 momjian Exp $
 #
+if [ $# -eq 0 ];
+then
+	echo "Syntaxe: $0 <portname>"
+	exit 1
+fi
+
+if [ $1 == "win" ];
+then
+	HOST="-h localhost"
+else
+	HOST=""
+fi
+
 if echo '\c' | grep -s c >/dev/null 2>&1
 then
 	ECHO_N="echo -n"
@@ -18,7 +31,7 @@ PGTZ="PST8PDT"; export PGTZ
 PGDATESTYLE="Postgres,US"; export PGDATESTYLE
 
 #FRONTEND=monitor
-FRONTEND="psql -n -e -q"
+FRONTEND="psql $HOST -n -e -q"
 
 SYSTEM=`uname -s`
 
@@ -31,10 +44,10 @@ echo "See regress/README for more information."
 echo ""
 
 echo "=============== destroying old regression database... ================="
-destroydb regression
+destroydb $HOST regression
 
 echo "=============== creating new regression database...   ================="
-createdb regression
+createdb $HOST regression
 if [ $? -ne 0 ]; then
      echo createdb failed
      exit 1
diff --git a/src/tools/entab/entab.c b/src/tools/entab/entab.c
index 5aa94e6abf0..b0019b30b2a 100644
--- a/src/tools/entab/entab.c
+++ b/src/tools/entab/entab.c
@@ -94,7 +94,11 @@ char	  **argv;
 			in_file = stdin;
 		else
 		{
+#ifndef __CYGWIN32__
 			if ((in_file = fopen(*argv, "r")) == NULL)
+#else
+			if ((in_file = fopen(*argv, "rb")) == NULL)
+#endif
 				halt("PERROR:  Can not open file %s\n", argv[0]);
 			argv++;
 		}
diff --git a/src/utils/Makefile b/src/utils/Makefile
index cf38bc6eeb7..46ab610f118 100644
--- a/src/utils/Makefile
+++ b/src/utils/Makefile
@@ -4,7 +4,7 @@
 #    Makefile for utils
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/utils/Attic/Makefile,v 1.5 1998/04/06 00:32:26 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/utils/Attic/Makefile,v 1.6 1999/01/17 06:20:03 momjian Exp $
 #
 # About strdup:  Some systems have strdup in their standard library, others
 # don't.  Ones that don't will use this make file to compile the strdup.c
@@ -27,6 +27,9 @@ depend dep:
 
 clean: 
 	rm -f version.o
+ifeq ($(PORTNAME), win)
+	rm -f dllinit.o
+endif
 
 ifeq (depend,$(wildcard depend))
 include depend
diff --git a/src/utils/version.c b/src/utils/version.c
index aef5de8b48a..7dafe60b313 100644
--- a/src/utils/version.c
+++ b/src/utils/version.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/utils/Attic/version.c,v 1.9 1998/04/29 12:41:29 scrappy Exp $
+ *	  $Header: /cvsroot/pgsql/src/utils/Attic/version.c,v 1.10 1999/01/17 06:20:06 momjian Exp $
  *
  * NOTES
  *		XXX eventually, should be able to handle version identifiers
@@ -68,7 +68,11 @@ ValidatePgVersion(const char *path, char **reason_p)
 
 	PathSetVersionFilePath(path, full_path);
 
+#ifndef __CYGWIN32__
 	if ((fd = open(full_path, O_RDONLY, 0)) == -1)
+#else
+	if ((fd = open(full_path, O_RDONLY | O_BINARY, 0)) == -1)
+#endif
 	{
 		*reason_p = malloc(200);
 		sprintf(*reason_p, "File '%s' does not exist or no read permission.", full_path);
@@ -123,7 +127,11 @@ SetPgVersion(const char *path, char **reason_p)
 
 	PathSetVersionFilePath(path, full_path);
 
+#ifndef __CYGWIN32__
 	fd = open(full_path, O_WRONLY | O_CREAT | O_EXCL, 0666);
+#else
+	fd = open(full_path, O_WRONLY | O_CREAT | O_EXCL | O_BINARY, 0666);
+#endif
 	if (fd < 0)
 	{
 		*reason_p = malloc(100 + strlen(full_path));
-- 
GitLab