From b6d2faaf24cb7f39c66667d2c1d1472f3c9ab4f8 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Sat, 20 Jul 2002 05:43:31 +0000 Subject: [PATCH] Hello, i noticed that win32 native stopped working/compiling after the SSL merge . So i took the opportunity to fix some stuff: 1. Made the thing compile (typos & needed definitions) with the new pqsecure_* s tuff, and added fe-secure.c to the win32.mak makefile. 2. Fixed some MULTIBYTE compile errors (when building without MB support). 3. Made it do that you can build with debug info: "nmake -f win32.mak DEBUG=1". 4. Misc small compiler speedup changes. The resulting .dll has been tested in production, and everything seems ok. I CC:ed -hackers because i'm not sure about two things: 1. In libpq-int.h I typedef ssize_t as an int because Visual C (v6.0) doesn't de fine ssize_t. Is that ok, or is there any standard about what type should be use d for ssize_t? 2. To keep the .dll api consistent regarding MULTIBYTE I just return -1 in fe-connect.c:PQsetClientEncoding() instead of taking away the whole function. I wonder if i should do any compares with the conn->client_encoding and return 0 if not hing would have changed (if so how do i check that?). Regards Magnus Naeslund --- src/interfaces/libpq/fe-auth.c | 4 ++-- src/interfaces/libpq/fe-connect.c | 8 +++++++- src/interfaces/libpq/fe-secure.c | 4 +++- src/interfaces/libpq/libpq-int.h | 6 +++++- src/interfaces/libpq/libpqdll.c | 1 + src/interfaces/libpq/win32.c | 7 +++++++ src/interfaces/libpq/win32.h | 6 +++++- src/interfaces/libpq/win32.mak | 17 ++++++++++++++--- 8 files changed, 44 insertions(+), 9 deletions(-) diff --git a/src/interfaces/libpq/fe-auth.c b/src/interfaces/libpq/fe-auth.c index 63e573d5c2..cd5cd7dce5 100644 --- a/src/interfaces/libpq/fe-auth.c +++ b/src/interfaces/libpq/fe-auth.c @@ -10,7 +10,7 @@ * exceed INITIAL_EXPBUFFER_SIZE (currently 256 bytes). * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.67 2002/06/20 20:29:53 momjian Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-auth.c,v 1.68 2002/07/20 05:43:31 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -714,7 +714,7 @@ fe_getauthname(char *PQerrormsg) char username[128]; DWORD namesize = sizeof(username) - 1; - if (GetUserNameFromId(username, &namesize)) + if (GetUserName(username, &namesize)) name = username; #else struct passwd *pw = getpwuid(geteuid()); diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 630141ed54..19805db981 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.189 2002/07/18 02:02:30 ishii Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.190 2002/07/20 05:43:31 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -2717,6 +2717,9 @@ PQclientEncoding(const PGconn *conn) int PQsetClientEncoding(PGconn *conn, const char *encoding) { + +#ifdef MULTIBYTE + char qbuf[128]; static char query[] = "set client_encoding to '%s'"; PGresult *res; @@ -2748,6 +2751,9 @@ PQsetClientEncoding(PGconn *conn, const char *encoding) } PQclear(res); return (status); +#else + return -1; /* Multibyte support isn't compiled in */ +#endif } void diff --git a/src/interfaces/libpq/fe-secure.c b/src/interfaces/libpq/fe-secure.c index 32d56948fa..1ef5d62e1b 100644 --- a/src/interfaces/libpq/fe-secure.c +++ b/src/interfaces/libpq/fe-secure.c @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-secure.c,v 1.9 2002/06/23 20:30:48 momjian Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-secure.c,v 1.10 2002/07/20 05:43:31 momjian Exp $ * * NOTES * The client *requires* a valid server certificate. Since @@ -110,7 +110,9 @@ #include "strdup.h" #endif +#ifndef WIN32 #include +#endif #include #ifdef USE_SSL diff --git a/src/interfaces/libpq/libpq-int.h b/src/interfaces/libpq/libpq-int.h index 07cbe20d56..aee2fce13c 100644 --- a/src/interfaces/libpq/libpq-int.h +++ b/src/interfaces/libpq/libpq-int.h @@ -12,7 +12,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: libpq-int.h,v 1.51 2002/06/20 20:29:54 momjian Exp $ + * $Id: libpq-int.h,v 1.52 2002/07/20 05:43:31 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -20,6 +20,10 @@ #ifndef LIBPQ_INT_H #define LIBPQ_INT_H +#if defined(WIN32) && (!defined(ssize_t)) + typedef int ssize_t; /* ssize_t doesn't exist in VC (atleast not VC6) */ +#endif + /* We assume libpq-fe.h has already been included. */ #include "postgres_fe.h" diff --git a/src/interfaces/libpq/libpqdll.c b/src/interfaces/libpq/libpqdll.c index 2fd6cfc7de..f145d3e0e4 100644 --- a/src/interfaces/libpq/libpqdll.c +++ b/src/interfaces/libpq/libpqdll.c @@ -1,4 +1,5 @@ #define WIN32_LEAN_AND_MEAN +#include #include #include "win32.h" diff --git a/src/interfaces/libpq/win32.c b/src/interfaces/libpq/win32.c index 2e90c3dad3..4b577e3bfc 100644 --- a/src/interfaces/libpq/win32.c +++ b/src/interfaces/libpq/win32.c @@ -17,7 +17,14 @@ * */ +/* Make stuff compile faster by excluding not used stuff */ + #define WIN32_LEAN_AND_MEAN +#define WIN32_EXTRA_LEAN +#define VC_EXTRALEAN +#define NOGDI +#define NOCRYPT + #include #include #include diff --git a/src/interfaces/libpq/win32.h b/src/interfaces/libpq/win32.h index bf6d01b7ca..db1aa53b24 100644 --- a/src/interfaces/libpq/win32.h +++ b/src/interfaces/libpq/win32.h @@ -1,4 +1,5 @@ -#include +#ifndef __win32_h_included +#define __win32_h_included /* * strcasecmp() is not in Windows, stricmp is, though @@ -34,3 +35,6 @@ * support for handling Windows Socket errors */ extern const char *winsock_strerror(int eno); + + +#endif diff --git a/src/interfaces/libpq/win32.mak b/src/interfaces/libpq/win32.mak index 98b4e986ef..766d33ce08 100644 --- a/src/interfaces/libpq/win32.mak +++ b/src/interfaces/libpq/win32.mak @@ -30,6 +30,15 @@ CFG=Release !ERROR An invalid configuration was specified. !ENDIF +!IFDEF DEBUG +OPT=/Od +LOPT=/debug +DEBUGDEF=/D _DEBUG +!ELSE +OPT=/O2 +LOPT= +DEBUGDEF=/D NDEBUG +!ENDIF !IF "$(OS)" == "Windows_NT" NULL= @@ -62,6 +71,7 @@ CLEAN : -@erase "$(INTDIR)\fe-lobj.obj" -@erase "$(INTDIR)\fe-misc.obj" -@erase "$(INTDIR)\fe-print.obj" + -@erase "$(INTDIR)\fe-secure.obj" -@erase "$(INTDIR)\pqexpbuffer.obj" -@erase "$(OUTDIR)\libpqdll.obj" -@erase "$(OUTDIR)\win32.obj" @@ -80,7 +90,7 @@ CLEAN : "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" -CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /D "FRONTEND" /D "NDEBUG" /D\ +CPP_PROJ=/nologo /MD /W3 /GX $(OPT) /I "..\..\include" /D "FRONTEND" $(DEBUGDEF) /D\ "WIN32" /D "_WINDOWS" /Fp"$(INTDIR)\libpq.pch" /YX\ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c /D "HAVE_VSNPRINTF" /D "HAVE_STRDUP" @@ -95,7 +105,7 @@ CPP_OBJS=.\Release/ CPP_SBRS=. LIB32=link.exe -lib -LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libpq.lib" +LIB32_FLAGS=$(LOPT) /nologo /out:"$(OUTDIR)\libpq.lib" LIB32_OBJS= \ "$(OUTDIR)\win32.obj" \ "$(INTDIR)\dllist.obj" \ @@ -106,6 +116,7 @@ LIB32_OBJS= \ "$(INTDIR)\fe-lobj.obj" \ "$(INTDIR)\fe-misc.obj" \ "$(INTDIR)\fe-print.obj" \ + "$(INTDIR)\fe-secure.obj" \ "$(INTDIR)\pqexpbuffer.obj" !IFDEF MULTIBYTE @@ -116,7 +127,7 @@ RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libpq.res" LINK32=link.exe LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib wsock32.lib\ - /nologo /subsystem:windows /dll /incremental:no\ + /nologo /subsystem:windows /dll $(LOPT) /incremental:no\ /pdb:"$(OUTDIR)\libpqdll.pdb" /machine:I386 /out:"$(OUTDIR)\libpq.dll"\ /implib:"$(OUTDIR)\libpqdll.lib" /def:libpqdll.def LINK32_OBJS= \ -- 2.11.0