postgresql/src/port
Tom Lane a65e086453 Remove support for Unix systems without the POSIX signal APIs.
Remove configure's checks for HAVE_POSIX_SIGNALS, HAVE_SIGPROCMASK, and
HAVE_SIGSETJMP.  These APIs are required by the Single Unix Spec v2
(POSIX 1997), which we generally consider to define our minimum required
set of Unix APIs.  Moreover, no buildfarm member has reported not having
them since 2012 or before, which means that even if the code is still live
somewhere, it's untested --- and we've made plenty of signal-handling
changes of late.  So just take these APIs as given and save the cycles for
configure probes for them.

However, we can't remove as much C code as I'd hoped, because the Windows
port evidently still uses the non-POSIX code paths for signal masking.
Since we're largely emulating these BSD-style APIs for Windows anyway, it
might be a good thing to switch over to POSIX-like notation and thereby
remove a few more #ifdefs.  But I'm not in a position to code or test that.
In the meantime, we can at least make things a bit more transparent by
testing for WIN32 explicitly in these places.
2015-08-31 12:56:10 -04:00
..
.gitignore Convert cvsignore to gitignore, and add .gitignore for build targets. 2010-09-22 12:57:04 +02:00
Makefile Revert error-throwing wrappers for the printf family of functions. 2015-05-19 18:19:38 -04:00
README Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
chklocale.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
crypt.c Suppress dead, unportable src/port/crypt.c code. 2014-10-12 23:27:06 -04:00
dirent.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
dirmod.c Use FLEXIBLE_ARRAY_MEMBER in Windows-specific code. 2015-02-21 16:49:35 -05:00
erand48.c Redesign tablesample method API, and do extensive code review. 2015-07-25 14:39:00 -04:00
fls.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
fseeko.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
getaddrinfo.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
getopt.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
getopt_long.c Add support for optional_argument to our own getopt_long() implementation. 2014-09-10 17:21:50 +02:00
getpeereid.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
getrusage.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
gettimeofday.c pgindent run for 9.5 2015-05-23 21:35:49 -04:00
inet_aton.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
inet_net_ntop.c Pgindent run before 9.1 beta2. 2011-06-09 14:32:50 -04:00
isinf.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
kill.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
mkdtemp.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
noblock.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
open.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
path.c Fix libpq's behavior when /etc/passwd isn't readable. 2015-01-11 12:35:44 -05:00
pg_crc32c_choose.c pgindent run for 9.5 2015-05-23 21:35:49 -04:00
pg_crc32c_sb8.c Reorganize our CRC source files again. 2015-04-14 17:03:42 +03:00
pg_crc32c_sse42.c pgindent run for 9.5 2015-05-23 21:35:49 -04:00
pgcheckdir.c Improve pg_check_dir code and comments. 2015-02-17 10:19:30 -05:00
pgmkdirp.c Fix various typos and grammar errors in comments. 2015-04-26 18:42:31 +02:00
pgsleep.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
pgstrcasecmp.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
pqsignal.c Remove support for Unix systems without the POSIX signal APIs. 2015-08-31 12:56:10 -04:00
pthread-win32.h Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
qsort.c Fix a low-probability crash in our qsort implementation. 2015-07-16 22:57:46 -04:00
qsort_arg.c Fix a low-probability crash in our qsort implementation. 2015-07-16 22:57:46 -04:00
quotes.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
random.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
rint.c Upgrade src/port/rint.c to be POSIX-compliant. 2015-03-25 15:54:18 -04:00
snprintf.c Revert error-throwing wrappers for the printf family of functions. 2015-05-19 18:19:38 -04:00
sprompt.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
srandom.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
strerror.c Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
strlcat.c pgindent run for 9.4 2014-05-06 12:12:18 -04:00
strlcpy.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
system.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
tar.c Truncate strings in tarCreateHeader() with strlcpy(), not sprintf(). 2015-06-21 20:04:36 -04:00
thread.c Remove configure test for nonstandard variants of getpwuid_r(). 2015-01-11 12:52:37 -05:00
unsetenv.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
win32.ico Revert binary change in copyright year adjustment. 2012-01-01 19:40:13 -05:00
win32env.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
win32error.c Update copyright for 2015 2015-01-06 11:43:47 -05:00
win32setlocale.c pgindent run for 9.5 2015-05-23 21:35:49 -04:00
win32ver.rc Stamp HEAD as 9.6devel. 2015-06-30 14:01:15 -04:00

README

src/port/README

libpgport
=========

libpgport must have special behavior.  It supplies functions to both
libraries and applications.  However, there are two complexities:

1)  Libraries need to use object files that are compiled with exactly
the same flags as the library.  libpgport might not use the same flags,
so it is necessary to recompile the object files for individual
libraries.  This is done by removing -lpgport from the link line:

        # Need to recompile any libpgport object files
        LIBS := $(filter-out -lpgport, $(LIBS))

and adding infrastructure to recompile the object files:

        OBJS= execute.o typename.o descriptor.o data.o error.o prepare.o memory.o \
                connect.o misc.o path.o exec.o \
                $(filter snprintf.o, $(LIBOBJS))

The problem is that there is no testing of which object files need to be
added, but missing functions usually show up when linking user
applications.

2) For applications, we use -lpgport before -lpq, so the static files
from libpgport are linked first.  This avoids having applications
dependent on symbols that are _used_ by libpq, but not intended to be
exported by libpq.  libpq's libpgport usage changes over time, so such a
dependency is a problem.  Win32, Linux, and Darwin use an export list to
control the symbols exported by libpq.