提交 b6d2faaf 编写于 作者: B Bruce Momjian

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
上级 1430271e
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
* exceed INITIAL_EXPBUFFER_SIZE (currently 256 bytes). * exceed INITIAL_EXPBUFFER_SIZE (currently 256 bytes).
* *
* IDENTIFICATION * 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) ...@@ -714,7 +714,7 @@ fe_getauthname(char *PQerrormsg)
char username[128]; char username[128];
DWORD namesize = sizeof(username) - 1; DWORD namesize = sizeof(username) - 1;
if (GetUserNameFromId(username, &namesize)) if (GetUserName(username, &namesize))
name = username; name = username;
#else #else
struct passwd *pw = getpwuid(geteuid()); struct passwd *pw = getpwuid(geteuid());
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * 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) ...@@ -2717,6 +2717,9 @@ PQclientEncoding(const PGconn *conn)
int int
PQsetClientEncoding(PGconn *conn, const char *encoding) PQsetClientEncoding(PGconn *conn, const char *encoding)
{ {
#ifdef MULTIBYTE
char qbuf[128]; char qbuf[128];
static char query[] = "set client_encoding to '%s'"; static char query[] = "set client_encoding to '%s'";
PGresult *res; PGresult *res;
...@@ -2748,6 +2751,9 @@ PQsetClientEncoding(PGconn *conn, const char *encoding) ...@@ -2748,6 +2751,9 @@ PQsetClientEncoding(PGconn *conn, const char *encoding)
} }
PQclear(res); PQclear(res);
return (status); return (status);
#else
return -1; /* Multibyte support isn't compiled in */
#endif
} }
void void
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
* *
* *
* IDENTIFICATION * 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 * NOTES
* The client *requires* a valid server certificate. Since * The client *requires* a valid server certificate. Since
...@@ -110,7 +110,9 @@ ...@@ -110,7 +110,9 @@
#include "strdup.h" #include "strdup.h"
#endif #endif
#ifndef WIN32
#include <pwd.h> #include <pwd.h>
#endif
#include <sys/stat.h> #include <sys/stat.h>
#ifdef USE_SSL #ifdef USE_SSL
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * 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 @@ ...@@ -20,6 +20,10 @@
#ifndef LIBPQ_INT_H #ifndef LIBPQ_INT_H
#define 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. */ /* We assume libpq-fe.h has already been included. */
#include "postgres_fe.h" #include "postgres_fe.h"
......
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
#include <winsock.h>
#include <windows.h> #include <windows.h>
#include "win32.h" #include "win32.h"
......
...@@ -17,7 +17,14 @@ ...@@ -17,7 +17,14 @@
* *
*/ */
/* Make stuff compile faster by excluding not used stuff */
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
#define WIN32_EXTRA_LEAN
#define VC_EXTRALEAN
#define NOGDI
#define NOCRYPT
#include <windows.h> #include <windows.h>
#include <winsock.h> #include <winsock.h>
#include <stdio.h> #include <stdio.h>
......
#include <winsock.h> #ifndef __win32_h_included
#define __win32_h_included
/* /*
* strcasecmp() is not in Windows, stricmp is, though * strcasecmp() is not in Windows, stricmp is, though
...@@ -34,3 +35,6 @@ ...@@ -34,3 +35,6 @@
* support for handling Windows Socket errors * support for handling Windows Socket errors
*/ */
extern const char *winsock_strerror(int eno); extern const char *winsock_strerror(int eno);
#endif
...@@ -30,6 +30,15 @@ CFG=Release ...@@ -30,6 +30,15 @@ CFG=Release
!ERROR An invalid configuration was specified. !ERROR An invalid configuration was specified.
!ENDIF !ENDIF
!IFDEF DEBUG
OPT=/Od
LOPT=/debug
DEBUGDEF=/D _DEBUG
!ELSE
OPT=/O2
LOPT=
DEBUGDEF=/D NDEBUG
!ENDIF
!IF "$(OS)" == "Windows_NT" !IF "$(OS)" == "Windows_NT"
NULL= NULL=
...@@ -62,6 +71,7 @@ CLEAN : ...@@ -62,6 +71,7 @@ CLEAN :
-@erase "$(INTDIR)\fe-lobj.obj" -@erase "$(INTDIR)\fe-lobj.obj"
-@erase "$(INTDIR)\fe-misc.obj" -@erase "$(INTDIR)\fe-misc.obj"
-@erase "$(INTDIR)\fe-print.obj" -@erase "$(INTDIR)\fe-print.obj"
-@erase "$(INTDIR)\fe-secure.obj"
-@erase "$(INTDIR)\pqexpbuffer.obj" -@erase "$(INTDIR)\pqexpbuffer.obj"
-@erase "$(OUTDIR)\libpqdll.obj" -@erase "$(OUTDIR)\libpqdll.obj"
-@erase "$(OUTDIR)\win32.obj" -@erase "$(OUTDIR)\win32.obj"
...@@ -80,7 +90,7 @@ CLEAN : ...@@ -80,7 +90,7 @@ CLEAN :
"$(OUTDIR)" : "$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(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\ "WIN32" /D "_WINDOWS" /Fp"$(INTDIR)\libpq.pch" /YX\
/Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c /D "HAVE_VSNPRINTF" /D "HAVE_STRDUP" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c /D "HAVE_VSNPRINTF" /D "HAVE_STRDUP"
...@@ -95,7 +105,7 @@ CPP_OBJS=.\Release/ ...@@ -95,7 +105,7 @@ CPP_OBJS=.\Release/
CPP_SBRS=. CPP_SBRS=.
LIB32=link.exe -lib LIB32=link.exe -lib
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libpq.lib" LIB32_FLAGS=$(LOPT) /nologo /out:"$(OUTDIR)\libpq.lib"
LIB32_OBJS= \ LIB32_OBJS= \
"$(OUTDIR)\win32.obj" \ "$(OUTDIR)\win32.obj" \
"$(INTDIR)\dllist.obj" \ "$(INTDIR)\dllist.obj" \
...@@ -106,6 +116,7 @@ LIB32_OBJS= \ ...@@ -106,6 +116,7 @@ LIB32_OBJS= \
"$(INTDIR)\fe-lobj.obj" \ "$(INTDIR)\fe-lobj.obj" \
"$(INTDIR)\fe-misc.obj" \ "$(INTDIR)\fe-misc.obj" \
"$(INTDIR)\fe-print.obj" \ "$(INTDIR)\fe-print.obj" \
"$(INTDIR)\fe-secure.obj" \
"$(INTDIR)\pqexpbuffer.obj" "$(INTDIR)\pqexpbuffer.obj"
!IFDEF MULTIBYTE !IFDEF MULTIBYTE
...@@ -116,7 +127,7 @@ RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libpq.res" ...@@ -116,7 +127,7 @@ RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libpq.res"
LINK32=link.exe LINK32=link.exe
LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib wsock32.lib\ 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"\ /pdb:"$(OUTDIR)\libpqdll.pdb" /machine:I386 /out:"$(OUTDIR)\libpq.dll"\
/implib:"$(OUTDIR)\libpqdll.lib" /def:libpqdll.def /implib:"$(OUTDIR)\libpqdll.lib" /def:libpqdll.def
LINK32_OBJS= \ LINK32_OBJS= \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册