Re: [HACKERS] PostgreSQL libraries - PThread Support, but - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: [HACKERS] PostgreSQL libraries - PThread Support, but
Date
Msg-id 200306131552.h5DFqfT15360@candle.pha.pa.us
Whole thread Raw
In response to Re: [HACKERS] PostgreSQL libraries - PThread Support, but  (Lee Kindness <lkindness@csl.co.uk>)
Responses Re: [HACKERS] PostgreSQL libraries - PThread Support, but  (Lee Kindness <lkindness@csl.co.uk>)
Re: [HACKERS] PostgreSQL libraries - PThread Support, but  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-patches
Lee, I have a question about this code:

    char *pqStrerror(int errnum, char *strerrbuf, size_t buflen)
    {
    #if defined HAVE_STRERROR_R
      /* reentrant strerror_r is available */
      strerror_r(errnum, strerrbuf, buflen);
      return strerrbuf;
    #elif defined HAVE_NONPOSIX_STRERROR_R
      /* broken (well early POSIX draft) strerror_r() which returns 'char *' */
      return strerror_r(errnum, strerrbuf, buflen);
    #else
      /* no strerror_r() available, just use strerror */
      return strerror(errnum);
    #endif
    }

Why do we have to care about HAVE_NONPOSIX_STRERROR_R?  Can't we just
use the HAVE_STRERROR_R code in all cases?

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

Lee Kindness wrote:
Content-Description: message body text

> Patch attached, along with new libpq-reentrant.c and libpq-reentrant.h
> files for src/interfaces/libpq.
>
> Also at http://services.csl.co.uk/postgresql/
>
> Thanks, Lee.
>
> Lee Kindness writes:
>  > Ok guys, I propose that the new libpq diff and 2 source files which
>  > i'll soon send to pgsql-patches is applied to the source. This diff is
>  > a cleaned up version of the previous version with the wrapper
>  > functions moved out into their own file and more comments added. Also
>  > the use of crypt_r() has been removed (not worth the effort), the
>  > cpp defines have been renamed to be consistent with each other and
>  > Tom's concerns with loose #defines has been partly addressed.
>  >
>  > This diff does not include any configure changes. I plan to tackle
>  > this separately ASAP, and hopefully produce something more acceptable.
>  >
>  > I will add checks for appropriate compiler thread flags (for compiling
>  > libpq, and alow the removal of #defines in libpq-reentrant.h), and
>  > link flags & libs (for a planned threaded libpq test program and
>  > renentrant ecpg library). If a thread environment is found then check
>  > for the reentrant functions will be done.
>  >
>  > Looking at various open source projects configure.in files there seems
>  > to be little commonality in the thread test macros (telp gratefully
>  > accepted!), I currently think that something like the approach used by
>  > glib is most suitable (switch on OS).
>  >
>  > All sound acceptable?
>  >
>  > Thanks, Lee.
>  >
>  > Peter Eisentraut writes:
>  >  > Lee Kindness writes:
>  >  >
>  >  > > Patches attached to make libpq thread-safe, now uses strerror_r(),
>  >  > > gethostbyname_r(), getpwuid_r() and crypt_r() where available. Where
>  >  > > strtok() was previously used strchr() is now used.
>  >  >
>  >  > AC_TRY_RUN tests are prohibited.  Also, try to factor out some of these
>  >  > huge tests into separate macros and put them into config/c-library.m4.
>  >  > And it would be nice if there was some documentation about what was
>  >  > checked for.  If you just want to check whether gethostbyname_r() has 5 or
>  >  > 6 arguments you can do that in half the space.
>

[ Attachment, skipping... ]

[ Attachment, skipping... ]

[ Attachment, skipping... ]

--
  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

pgsql-patches by date:

Previous
From: Rod Taylor
Date:
Subject: Re: LIKE (second attempt)
Next
From: Lee Kindness
Date:
Subject: Re: [HACKERS] PostgreSQL libraries - PThread Support, but