mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-23 19:39:53 +08:00
Hi!
Here is a patch to bring both libpq and psql to a state where it compiles on win32 (native) again. A lot of things have changed, and I have not been able to keep up with them all, so it has been broken for quite a while. After this patch, at least it compiles. It also talks "basic talk" to the server, but I have not yet tested all things. Sending queries, and using e.g. \d or \dt works fine. The rest will have to be tested further. It also bumps the version on libpq.dll to 7.0. Everything should be enclosed in #ifdef WIN32, unless I have missed something. Except for one or maybe two places where I have moved a #include that should not be used on win32 from the "global area" into a "#ifndef WIN32 area". //Magnus
This commit is contained in:
parent
2eebcddeaa
commit
0cb6bc70ce
@ -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);
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
#ifdef WIN32
|
||||
#include <io.h>
|
||||
#include <window.h>
|
||||
#include <windows.h>
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#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
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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 <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
@ -26,6 +25,7 @@
|
||||
#ifdef WIN32
|
||||
#include "win32.h"
|
||||
#else
|
||||
#include <sys/socket.h>
|
||||
#include <unistd.h>
|
||||
#include <netdb.h>
|
||||
#include <netinet/tcp.h>
|
||||
@ -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. */
|
||||
|
@ -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 <sys/time.h>
|
||||
#include <errno.h>
|
||||
#include <signal.h>
|
||||
#include <time.h>
|
||||
@ -43,6 +42,7 @@
|
||||
#include "win32.h"
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_SELECT_H
|
||||
|
@ -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 <termios.h>
|
||||
#else
|
||||
#ifndef WIN32
|
||||
#include <sys/termios.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef MULTIBYTE
|
||||
#include "mb/pg_wchar.h"
|
||||
|
@ -1,8 +1,8 @@
|
||||
#include <winver.h>
|
||||
|
||||
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"
|
||||
|
@ -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
|
||||
|
@ -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 <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include "win32.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* createPQExpBuffer
|
||||
*
|
||||
|
@ -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 ..
|
Loading…
Reference in New Issue
Block a user