diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 6f1bc1b66d..4ed0280c89 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -28,6 +28,7 @@ #include "variables.h" #ifdef WIN32 +#include "../../interfaces/libpq/win32.h" #define popen(x,y) _popen(x,y) #define pclose(x) _pclose(x) #endif @@ -849,7 +850,11 @@ unescape(const char *source, int encoding) unsigned int len; char *copy; const char *value; +#ifndef WIN32 void *new; +#else + char *new; +#endif len = strcspn(p + 2, "}"); copy = xstrdup(p + 2); diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index 8133faa467..b1241bd53d 100644 --- a/src/bin/psql/common.c +++ b/src/bin/psql/common.c @@ -111,10 +111,12 @@ setQFout(const char *fname) } /* Direct signals */ +#ifndef WIN32 if (pset.queryFoutPipe) pqsignal(SIGPIPE, SIG_IGN); else pqsignal(SIGPIPE, SIG_DFL); +#endif return status; } @@ -252,11 +254,15 @@ PSQLexec(const char *query) return NULL; cancelConn = pset.db; +#ifndef WIN32 pqsignal(SIGINT, handle_sigint); /* control-C => cancel */ +#endif res = PQexec(pset.db, query); +#ifndef WIN32 pqsignal(SIGINT, SIG_DFL); /* now control-C is back to normal */ +#endif if (PQstatus(pset.db) == CONNECTION_BAD) { @@ -345,11 +351,15 @@ SendQuery(const char *query) } cancelConn = pset.db; +#ifndef WIN32 pqsignal(SIGINT, handle_sigint); +#endif results = PQexec(pset.db, query); +#ifndef WIN32 pqsignal(SIGINT, SIG_DFL); +#endif if (results == NULL) { diff --git a/src/bin/psql/help.c b/src/bin/psql/help.c index 47fc0d8fc5..18f41e84fc 100644 --- a/src/bin/psql/help.c +++ b/src/bin/psql/help.c @@ -176,7 +176,9 @@ slashUsage(void) (fout = popen(pagerenv, "w"))) { usePipe = true; +#ifndef WIN32 pqsignal(SIGPIPE, SIG_IGN); +#endif } else fout = stdout; @@ -220,7 +222,9 @@ slashUsage(void) if (usePipe) { pclose(fout); +#ifndef WIN32 pqsignal(SIGPIPE, SIG_DFL); +#endif } } diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c index 156cdf6c65..4676d4b506 100644 --- a/src/bin/psql/print.c +++ b/src/bin/psql/print.c @@ -922,7 +922,9 @@ printTable(const char *title, if (pager) { output = pager; +#ifndef WIN32 pqsignal(SIGPIPE, SIG_IGN); +#endif } else output = fout; @@ -963,7 +965,10 @@ printTable(const char *title, if (pager) { pclose(pager); +#ifndef WIN32 pqsignal(SIGPIPE, SIG_DFL); +#endif + } } diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index 2b2a1db3d4..c1e9fa0219 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -10,7 +10,7 @@ #ifdef WIN32 #include -#include +#include #else #include #endif @@ -223,7 +223,8 @@ main(int argc, char **argv) #ifdef WIN32 /* getopt is not in the standard includes on Win32 */ int getopt(int, char *const[], const char *); - +/* And it requires progname to be set */ +char *__progname = "psql"; #endif static void diff --git a/src/bin/psql/win32.mak b/src/bin/psql/win32.mak index 0b0228f3f6..0365a00311 100644 --- a/src/bin/psql/win32.mak +++ b/src/bin/psql/win32.mak @@ -17,8 +17,20 @@ OutDir=.\Release ALL : "$(OUTDIR)\psql.exe" CLEAN : - -@erase "$(INTDIR)\psql.obj" + -@erase "$(INTDIR)\command.obj" + -@erase "$(INTDIR)\common.obj" + -@erase "$(INTDIR)\help.obj" + -@erase "$(INTDIR)\input.obj" -@erase "$(INTDIR)\stringutils.obj" + -@erase "$(INTDIR)\mainloop.obj" + -@erase "$(INTDIR)\copy.obj" + -@erase "$(INTDIR)\startup.obj" + -@erase "$(INTDIR)\prompt.obj" + -@erase "$(INTDIR)\variables.obj" + -@erase "$(INTDIR)\large_obj.obj" + -@erase "$(INTDIR)\print.obj" + -@erase "$(INTDIR)\describe.obj" + -@erase "$(INTDIR)\tab-complete.obj" -@erase "$(INTDIR)\getopt.obj" -@erase "$(INTDIR)\vc50.idb" -@erase "$(OUTDIR)\psql.exe" @@ -46,8 +58,20 @@ LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ odbccp32.lib wsock32.lib /nologo /subsystem:console /incremental:no\ /pdb:"$(OUTDIR)\psql.pdb" /machine:I386 /out:"$(OUTDIR)\psql.exe" LINK32_OBJS= \ - "$(INTDIR)\psql.obj" \ + "$(INTDIR)\command.obj" \ + "$(INTDIR)\common.obj" \ + "$(INTDIR)\help.obj" \ + "$(INTDIR)\input.obj" \ "$(INTDIR)\stringutils.obj" \ + "$(INTDIR)\mainloop.obj" \ + "$(INTDIR)\copy.obj" \ + "$(INTDIR)\startup.obj" \ + "$(INTDIR)\prompt.obj" \ + "$(INTDIR)\variables.obj" \ + "$(INTDIR)\large_obj.obj" \ + "$(INTDIR)\print.obj" \ + "$(INTDIR)\describe.obj" \ + "$(INTDIR)\tab-complete.obj" \ "$(INTDIR)\getopt.obj" \ "..\..\interfaces\libpq\Release\libpqdll.lib" diff --git a/src/interfaces/libpq/fe-auth.c b/src/interfaces/libpq/fe-auth.c index fe92bd6964..53d29a59d3 100644 --- a/src/interfaces/libpq/fe-auth.c +++ b/src/interfaces/libpq/fe-auth.c @@ -9,7 +9,7 @@ * exceed INITIAL_EXPBUFFER_SIZE (currently 256 bytes). * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.34 1999/10/25 03:08:00 tgl Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.35 2000/01/18 19:05:31 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -27,7 +27,9 @@ * */ +#ifndef WIN32 #include "postgres.h" +#endif #include "libpq-fe.h" #include "libpq-int.h" #include "fe-auth.h" diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 818b85f0ea..a444e5bd7a 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -7,13 +7,12 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.112 2000/01/18 06:09:24 momjian Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.113 2000/01/18 19:05:31 momjian Exp $ * *------------------------------------------------------------------------- */ #include -#include #include #include #include @@ -26,6 +25,7 @@ #ifdef WIN32 #include "win32.h" #else +#include #include #include #include @@ -43,6 +43,16 @@ #include "mb/pg_wchar.h" #endif +#ifdef WIN32 +static int inet_aton(const char *cp, struct in_addr *inp) { + unsigned long a = inet_addr(cp); + if (a == -1) + return 0; + inp->s_addr = a; + return 1; +} +#endif + /* ---------- * pg_setenv_state * A struct used when polling a setenv request. This is referred to externally @@ -842,7 +852,11 @@ connectDBStart(PGconn *conn) */ if (connect(conn->sock, &conn->raddr.sa, conn->raddr_len) < 0) { +#ifndef WIN32 if (errno == EINPROGRESS) +#else + if (WSAGetLastError() == WSAEINPROGRESS) +#endif { /* This is fine - we're in non-blocking mode, and the * connection is in progress. */ @@ -1036,8 +1050,12 @@ PQconnectPoll(PGconn *conn) case CONNECTION_STARTED: { SOCKET_SIZE_TYPE laddrlen; +#ifndef WIN32 int optval; - int optlen = sizeof(int); +#else + char optval; +#endif + int optlen = sizeof(optval); /* Write ready, since we've made it here, so the connection * has been made. */ diff --git a/src/interfaces/libpq/fe-misc.c b/src/interfaces/libpq/fe-misc.c index a936e93742..b87ab4df98 100644 --- a/src/interfaces/libpq/fe-misc.c +++ b/src/interfaces/libpq/fe-misc.c @@ -24,12 +24,11 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.34 2000/01/18 06:09:24 momjian Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.35 2000/01/18 19:05:31 momjian Exp $ * *------------------------------------------------------------------------- */ -#include #include #include #include @@ -43,6 +42,7 @@ #include "win32.h" #else #include +#include #endif #ifdef HAVE_SYS_SELECT_H diff --git a/src/interfaces/libpq/fe-print.c b/src/interfaces/libpq/fe-print.c index d6f952d32b..7a73a8669b 100644 --- a/src/interfaces/libpq/fe-print.c +++ b/src/interfaces/libpq/fe-print.c @@ -9,7 +9,7 @@ * didn't really belong there. * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-print.c,v 1.29 2000/01/15 05:37:21 ishii Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-print.c,v 1.30 2000/01/18 19:05:31 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -30,8 +30,10 @@ #ifdef HAVE_TERMIOS_H #include #else +#ifndef WIN32 #include #endif +#endif #ifdef MULTIBYTE #include "mb/pg_wchar.h" diff --git a/src/interfaces/libpq/libpq.rc b/src/interfaces/libpq/libpq.rc index 9bf68cb19a..5a6ada372a 100644 --- a/src/interfaces/libpq/libpq.rc +++ b/src/interfaces/libpq/libpq.rc @@ -1,8 +1,8 @@ #include VS_VERSION_INFO VERSIONINFO - FILEVERSION 6,6,0,0 - PRODUCTVERSION 6,6,0,0 + FILEVERSION 7,0,0,0 + PRODUCTVERSION 7,0,0,0 FILEFLAGSMASK 0x3fL FILEFLAGS 0 FILEOS VOS__WINDOWS32 @@ -15,13 +15,13 @@ BEGIN BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "PostgreSQL Access Library\0" - VALUE "FileVersion", "6, 6, 0, 0\0" + VALUE "FileVersion", "7, 0, 0, 0\0" VALUE "InternalName", "libpq\0" - VALUE "LegalCopyright", "Copyright (C) 1999\0" + VALUE "LegalCopyright", "Copyright (C) 2000\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "libpq.dll\0" VALUE "ProductName", "PostgreSQL\0" - VALUE "ProductVersion", "6, 6, 0, 0\0" + VALUE "ProductVersion", "7, 0, 0, 0\0" END END BLOCK "VarFileInfo" diff --git a/src/interfaces/libpq/libpqdll.def b/src/interfaces/libpq/libpqdll.def index d83bdfafd4..dc33dc0ee9 100644 --- a/src/interfaces/libpq/libpqdll.def +++ b/src/interfaces/libpq/libpqdll.def @@ -67,3 +67,14 @@ EXPORTS PQmblen @ 64 PQresultErrorMessage @ 65 PQresStatus @ 66 + termPQExpBuffer @ 67 + appendPQExpBufferChar @ 68 + initPQExpBuffer @ 69 + resetPQExpBuffer @ 70 + PQoidValue @ 71 + PQclientencoding @ 72 + PQenv2encoding @ 73 + appendBinaryPQExpBuffer @ 74 + appendPQExpBufferStr @ 75 + destroyPQExpBuffer @ 76 + createPQExpBuffer @ 77 diff --git a/src/interfaces/libpq/pqexpbuffer.c b/src/interfaces/libpq/pqexpbuffer.c index bedf456b3c..6850a80c5b 100644 --- a/src/interfaces/libpq/pqexpbuffer.c +++ b/src/interfaces/libpq/pqexpbuffer.c @@ -16,7 +16,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Header: /cvsroot/pgsql/src/interfaces/libpq/pqexpbuffer.c,v 1.2 2000/01/17 02:59:46 tgl Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/pqexpbuffer.c,v 1.3 2000/01/18 19:05:31 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -24,6 +24,12 @@ #include "postgres.h" #include "pqexpbuffer.h" +#ifdef WIN32 +#include +#include +#include "win32.h" +#endif + /* * createPQExpBuffer * diff --git a/src/win32.mak b/src/win32.mak index a7264acf54..86d9ee8216 100644 --- a/src/win32.mak +++ b/src/win32.mak @@ -15,9 +15,25 @@ MAKEMACRO = "MULTIBYTE=$(MULTIBYTE)" !ENDIF ALL: + cd include + if not exist config.h copy config.h.win32 config.h + cd .. cd interfaces\libpq nmake /f win32.mak $(MAKEMACRO) cd ..\..\bin\psql nmake /f win32.mak $(MAKEMACRO) cd ..\.. echo All Win32 parts have been built! + +CLEAN: + cd interfaces\libpq + nmake /f win32.mak CLEAN + cd ..\..\bin\psql + nmake /f win32.mak CLEAN + cd ..\.. + echo All Win32 parts have been cleaned! + +DISTCLEAN: CLEAN + cd include + del config.h + cd .. \ No newline at end of file