Thread: Re: [INTERFACES] WIN32 MULTIBYTE

Re: [INTERFACES] WIN32 MULTIBYTE

From
Bruce Momjian
Date:
Tom Lane doesn't want this patch applied.  I assume he will give further
guidance.  Thanks.


> ----- Original Message -----
> From: "Bruce Momjian" <pgman@candle.pha.pa.us>
> To: "Darko Prenosil" <Darko.Prenosil@finteh.hr>
> Cc: "pgsql interfaces" <pgsql-interfaces@postgresql.org>
> Sent: Thursday, July 26, 2001 11:22 PM
> Subject: Re: [INTERFACES] WIN32 MULTIBYTE
>
>
> >
> > Sure, send the patch to the patches list.
> >
> I alsi removed definition WIN32_NON_BLOCKING_CONNECTIONS
> from fe-connect.c to win32.h.
> Ok , here are the changes:
>
> *** win32.mak Mon Jul 30 00:51:28 2001
> --- win32.mak.new Mon Jul 30 00:37:40 2001
> ***************
> *** 4,9 ****
> --- 4,36 ----
>   #        and a Win32 dynamic library (non-debug) libpq.dll with import
> library libpqdll.lib
>
>
> + !MESSAGE Building the Win32 static library...
> + !MESSAGE
> + !IF "$(CFG)" == ""
> + CFG=Release
> + !MESSAGE No configuration specified. Defaulting to Release.
> + !MESSAGE
> + !ELSE
> + !MESSAGE Configuration "$(CFG)"
> + !MESSAGE
> + !ENDIF
> +
> + !IF "$(CFG)" != "Release" && "$(CFG)" != "MultibyteRelease"
> + !MESSAGE Invalid configuration "$(CFG)" specified.
> + !MESSAGE You can specify a configuration when running NMAKE
> + !MESSAGE by defining the macro CFG on the command line. For example:
> + !MESSAGE
> + !MESSAGE NMAKE /f win32.mak CFG=[Release | MultibyteRelease ]
> + !MESSAGE
> + !MESSAGE Possible choices for configuration are:
> + !MESSAGE
> + !MESSAGE "Release" (Win32 Release DLL)
> + !MESSAGE "MultibyteRelease" (Win32 Release DLL with Multibyte support)
> + !MESSAGE
> + !ERROR An invalid configuration was specified.
> + !ENDIF
> +
> +
>   !IF "$(OS)" == "Windows_NT"
>   NULL=
>   !ELSE
> ***************
> *** 15,20 ****
> --- 42,51 ----
>
>   OUTDIR=.\Release
>   INTDIR=.\Release
> + !IF "$(CFG)" == "MultibyteRelease"
> + MULTIBYTE=1
> + !ENDIF
> +
>   # Begin Custom Macros
>   OutDir=.\Release
>   # End Custom Macros
>
>
>
> *** win32.h Mon Jul 30 00:51:28 2001
> --- win32.h.new Sun Jul 29 19:43:26 2001
> ***************
> *** 37,39 ****
> --- 37,46 ----
>   #define EWOULDBLOCK WSAEWOULDBLOCK
>   #define ECONNRESET WSAECONNRESET
>   #define EINPROGRESS WSAEINPROGRESS
> +
> + /*Windows libPq Specific*/
> + #define WIN32_NON_BLOCKING_CONNECTIONS
> + #define FRONTEND
> +
> + /*Needed for MULTIBYTE*/
> + #define FUNC_MAX_ARGS  16
>
>
> *** fe-connect.c Mon Jul 30 00:51:28 2001
> --- fe-connect.c.new Fri Jul 27 00:22:39 2001
> ***************
> *** 70,76 ****
>
>   #define NOTIFYLIST_INITIAL_SIZE 10
>   #define NOTIFYLIST_GROWBY 10
> - #define WIN32_NON_BLOCKING_CONNECTIONS
>
>   /* ----------
>    * Definition of the conninfo parameters and their fallback resources.
> --- 70,75 ----
>
>
>
>
> *** common.c Mon Jul 30 00:51:28 2001
> --- common.c.new Mon Jul 30 00:38:02 2001
> ***************
> *** 10,18 ****
>   #include "win32.h"
>   #else
>   #include <unistd.h>
>   #endif
>
> - #include "miscadmin.h"
>   #include "mb/pg_wchar.h"
>   #include "utils/builtins.h"
>
> --- 10,18 ----
>   #include "win32.h"
>   #else
>   #include <unistd.h>
> + #include "miscadmin.h"
>   #endif
>
>   #include "mb/pg_wchar.h"
>   #include "utils/builtins.h"
>
> *** dllist.c Mon Jul 30 00:51:28 2001
> --- dllist.c.new Mon Jul 30 00:38:18 2001
> ***************
> *** 16,27 ****
>
>   /* can be used in frontend or backend */
>   #ifdef FRONTEND
> ! #include "postgres_fe.h"
> ! #include <sysexits.h>
> ! /* No assert checks in frontend ... */
> ! #define Assert(condition)
>   #else
> ! #include "postgres.h"
>   #endif
>
>   #include "lib/dllist.h"
> --- 16,29 ----
>
>   /* can be used in frontend or backend */
>   #ifdef FRONTEND
> !  #include "postgres_fe.h"
> !  #ifndef WIN32
> !   #include <sysexits.h>
> !  #endif
> !  /* No assert checks in frontend ... */
> !  #define Assert(condition)
>   #else
> !  #include "postgres.h"
>   #endif
>
>   #include "lib/dllist.h"
> ***************
> *** 40,46 ****
> --- 42,50 ----
>     exit(EX_UNAVAILABLE);
>    }
>   #else
> +   #ifndef WIN32
>     elog(ERROR, "Memory exhausted in DLNewList");
> +   #endif
>   #endif
>    l->dll_head = 0;
>    l->dll_tail = 0;
> ***************
> *** 83,89 ****
> --- 87,95 ----
>     exit(EX_UNAVAILABLE);
>    }
>   #else
> +   #ifndef WIN32
>     elog(ERROR, "Memory exhausted in DLNewElem");
> +   #endif
>   #endif
>    e->dle_next = 0;
>    e->dle_prev = 0;
>
>
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

Re: Re: [INTERFACES] WIN32 MULTIBYTE

From
Tom Lane
Date:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> Tom Lane doesn't want this patch applied.  I assume he will give further
> guidance.  Thanks.

The changes to dllist.c are obviously broken; also, the multibyte
linking issue is valid across all platforms and should not be solved by
#ifdef WIN32 kluges.  I don't have a problem with the makefile changes,
though.

>> I alsi removed definition WIN32_NON_BLOCKING_CONNECTIONS
>> from fe-connect.c to win32.h.

Since this seems to work now, I'm inclined to remove both the symbol and
the #if tests on it, so that we can have some code de-cluttering instead
of increased clutter.

            regards, tom lane