Re: problem in MS-VC6 environment. - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: problem in MS-VC6 environment.
Date
Msg-id 200512081751.jB8HpCt19907@candle.pha.pa.us
Whole thread Raw
In response to problem in MS-VC6 environment.  ("Hiroshi Saito" <saito@inetrt.skcapi.co.jp>)
List pgsql-patches
Patch applied to CVS HEAD and 8.1.X.  Thanks.

I used WIN32_CLIENT_ONLY rather than _MSC_VER because that covers both
MSC and Borland C.  Updated patch attached.

---------------------------------------------------------------------------


Hiroshi Saito wrote:
> Hi Dave-san and Bruce-san.
>
> I have the problem, when building by MS-VC6.
> An error occurs in the 8.1.0 present source codes.
>
> nmake -f win32.mak
> ..\..\port\getaddrinfo.c(244) : error C2065: 'WSA_NOT_ENOUGH_MEMORY'
> ..\..\port\getaddrinfo.c(342) : error C2065: 'WSATYPE_NOT_FOUND'
>
> This is used by winsock2.h. However, Construction of a windows base is winsock.h.
> Then, Since MinGW has special environment, this is right. but, it is not found in VC6.
> Furthermore, in getaddrinfo.c, IPV6-API is used by LoadLibraryA("ws2_32");
> Referring to of dll the external memory generates this violation by VC6 specification.
>
> I considered whether the whole should have been converted into winsock2.
> However, Now, DLL of MinGW creation operates wonderfully as it is.
> That's right, it has pliability by replacement of simple DLL.
> Then, I propose the system using winsock(non IPV6) in construction of VC6.
>
> By this patch, the construction by VC6 finished obediently.
>
> I may have some misapprehensions.Therefore, your suggestion is desired.
> Thank you in advance for your understanding.
>
> Regards,
> Hiroshi Saito
>

[ Attachment, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
>                http://www.postgresql.org/docs/faq

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/bin/pg_config/win32.mak
===================================================================
RCS file: /cvsroot/pgsql/src/bin/pg_config/win32.mak,v
retrieving revision 1.3
diff -c -c -r1.3 win32.mak
*** src/bin/pg_config/win32.mak    27 Sep 2005 17:39:33 -0000    1.3
--- src/bin/pg_config/win32.mak    8 Dec 2005 17:47:49 -0000
***************
*** 55,61 ****

  LINK32=link.exe
  LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
!  advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
   odbccp32.lib wsock32.lib /nologo /subsystem:console /incremental:no\
   /pdb:"$(OUTDIR)\pg_config.pdb" /machine:I386 $(LOPT) /out:"$(OUTDIR)\pg_config.exe"
  LINK32_OBJS= \
--- 55,61 ----

  LINK32=link.exe
  LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
!  advapi32.lib shell32.lib shfolder.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
   odbccp32.lib wsock32.lib /nologo /subsystem:console /incremental:no\
   /pdb:"$(OUTDIR)\pg_config.pdb" /machine:I386 $(LOPT) /out:"$(OUTDIR)\pg_config.exe"
  LINK32_OBJS= \
Index: src/include/getaddrinfo.h
===================================================================
RCS file: /cvsroot/pgsql/src/include/getaddrinfo.h,v
retrieving revision 1.17
diff -c -c -r1.17 getaddrinfo.h
*** src/include/getaddrinfo.h    15 Oct 2005 02:49:41 -0000    1.17
--- src/include/getaddrinfo.h    8 Dec 2005 17:47:49 -0000
***************
*** 42,47 ****
--- 42,51 ----
  #define EAI_MEMORY        (-10)
  #define EAI_SYSTEM        (-11)
  #else                            /* WIN32 */
+ #if defined(WIN32_CLIENT_ONLY)
+ #define WSA_NOT_ENOUGH_MEMORY   (WSAENOBUFS)
+ #define WSATYPE_NOT_FOUND       (WSABASEERR+109)
+ #endif
  #define EAI_AGAIN        WSATRY_AGAIN
  #define EAI_BADFLAGS    WSAEINVAL
  #define EAI_FAIL        WSANO_RECOVERY
Index: src/port/getaddrinfo.c
===================================================================
RCS file: /cvsroot/pgsql/src/port/getaddrinfo.c,v
retrieving revision 1.21
diff -c -c -r1.21 getaddrinfo.c
*** src/port/getaddrinfo.c    15 Oct 2005 02:49:51 -0000    1.21
--- src/port/getaddrinfo.c    8 Dec 2005 17:47:50 -0000
***************
*** 40,45 ****
--- 40,46 ----

  #include <windows.h>

+ #if !defined(WIN32_CLIENT_ONLY)
  /*
   * The native routines may or may not exist on the Windows platform we are on,
   * so we dynamically look up the routines, and call them via function pointers.
***************
*** 129,134 ****
--- 130,136 ----
      return (getaddrinfo_ptr != NULL);
  }
  #endif
+ #endif


  /*
***************
*** 149,155 ****
                 *psin;
      struct addrinfo hints;

! #ifdef WIN32

      /*
       * If Windows has native IPv6 support, use the native Windows routine.
--- 151,157 ----
                 *psin;
      struct addrinfo hints;

! #if defined(WIN32) && !defined(WIN32_CLIENT_ONLY)

      /*
       * If Windows has native IPv6 support, use the native Windows routine.
***************
*** 272,278 ****
  {
      if (res)
      {
! #ifdef WIN32

          /*
           * If Windows has native IPv6 support, use the native Windows routine.
--- 274,280 ----
  {
      if (res)
      {
! #if defined(WIN32) && !defined(WIN32_CLIENT_ONLY)

          /*
           * If Windows has native IPv6 support, use the native Windows routine.
***************
*** 364,370 ****
              char *node, int nodelen,
              char *service, int servicelen, int flags)
  {
! #ifdef WIN32

      /*
       * If Windows has native IPv6 support, use the native Windows routine.
--- 366,372 ----
              char *node, int nodelen,
              char *service, int servicelen, int flags)
  {
! #if defined(WIN32) && !defined(WIN32_CLIENT_ONLY)

      /*
       * If Windows has native IPv6 support, use the native Windows routine.

pgsql-patches by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: implement prepared queries in plperl
Next
From: Bruce Momjian
Date:
Subject: Re: [DOCS] pl/pgSQL doco patch