Обсуждение: pgsql: Incorporate strerror_r() into src/port/snprintf.c, too.

Поиск
Список
Период
Сортировка

pgsql: Incorporate strerror_r() into src/port/snprintf.c, too.

От
Tom Lane
Дата:
Incorporate strerror_r() into src/port/snprintf.c, too.

This provides the features that used to exist in useful_strerror()
for users of strerror_r(), too.  Also, standardize on the GNU convention
that strerror_r returns a char pointer that may not be NULL.

I notice that libpq's win32.c contains a variant version of strerror_r
that probably ought to be folded into strerror.c.  But lacking a
Windows environment, I should leave that to somebody else.

Discussion: https://postgr.es/m/2975.1526862605@sss.pgh.pa.us

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/758ce9b7794845f95473c569155d29fcf0e2751b

Modified Files
--------------
src/include/port.h                       |  7 ++-
src/interfaces/libpq/fe-auth.c           |  6 +--
src/interfaces/libpq/fe-connect.c        | 18 +++----
src/interfaces/libpq/fe-lobj.c           | 14 +++---
src/interfaces/libpq/fe-misc.c           |  2 +-
src/interfaces/libpq/fe-secure-openssl.c | 12 ++---
src/interfaces/libpq/fe-secure.c         |  4 +-
src/interfaces/libpq/libpq-int.h         |  2 +-
src/port/strerror.c                      | 85 +++++++++++++++++++++++---------
src/port/thread.c                        | 27 ----------
src/test/thread/thread_test.c            |  5 +-
11 files changed, 99 insertions(+), 83 deletions(-)


Re: pgsql: Incorporate strerror_r() into src/port/snprintf.c, too.

От
Peter Eisentraut
Дата:
On 26/09/2018 18:36, Tom Lane wrote:
> Incorporate strerror_r() into src/port/snprintf.c, too.
> 
> This provides the features that used to exist in useful_strerror()
> for users of strerror_r(), too.  Also, standardize on the GNU convention
> that strerror_r returns a char pointer that may not be NULL.

Somehow, this is not working for me:

Undefined symbols for architecture x86_64:
  "_libintl_gettext", referenced from:
      _pg_strerror_r in strerror.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[4]: *** [../../../../src/Makefile.shlib:303: libpgtypes.3.12.dylib]
Error 1

It works if I don't use --enable-nls.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Re: pgsql: Incorporate strerror_r() into src/port/snprintf.c, too.

От
Tom Lane
Дата:
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
> Somehow, this is not working for me:

> Undefined symbols for architecture x86_64:
>   "_libintl_gettext", referenced from:
>       _pg_strerror_r in strerror.o
> ld: symbol(s) not found for architecture x86_64
> collect2: error: ld returned 1 exit status
> make[4]: *** [../../../../src/Makefile.shlib:303: libpgtypes.3.12.dylib]
> Error 1

> It works if I don't use --enable-nls.

More context please?  I'm guessing this is on macOS?  Where did you get
libintl from?  Is it, as it looks, getting through libpq and failing in
ecpg?

My first bet would be that ecpg for some reason lacks needed NLS
infrastructure ... have we ever tried to internationalize it?
Right now might not be the best time to try --- perhaps the path
of least resistance is to defeat strerror.c's NLS support when
it's being compiled in ecpg.

            regards, tom lane


Re: pgsql: Incorporate strerror_r() into src/port/snprintf.c, too.

От
Tom Lane
Дата:
I wrote:
> My first bet would be that ecpg for some reason lacks needed NLS
> infrastructure ... have we ever tried to internationalize it?

Oh, I see the problem: for some reason pgtypeslib fails to pull in
-lintl, unlike its siblings.  Please try that again.

            regards, tom lane


Re: pgsql: Incorporate strerror_r() into src/port/snprintf.c, too.

От
Peter Eisentraut
Дата:
On 26/09/2018 22:49, Tom Lane wrote:
> I wrote:
>> My first bet would be that ecpg for some reason lacks needed NLS
>> infrastructure ... have we ever tried to internationalize it?
> 
> Oh, I see the problem: for some reason pgtypeslib fails to pull in
> -lintl, unlike its siblings.  Please try that again.

Works now, thanks.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services