Commit Graph

621 Commits

Author SHA1 Message Date
Tom Lane 5c75ff2af4 Include libpq/pqcomm.h to ensure we have correct knowledge of
HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN.  Per results of pgcheckdefines.
2006-07-16 20:28:01 +00:00
Tom Lane 93120f3501 In a Windows backend, don't build src/port/pgsleep.c's version of
pg_usleep at all.  Instead call the replacement function in
port/win32/signal.c by that name.  Avoids tricky macro-redefinition
logic and suppresses a compiler warning; furthermore it ensures that
no one can accidentally use the non-signal-aware version of pg_usleep
in a Windows backend.
2006-07-16 20:17:04 +00:00
Tom Lane c743cc2ee4 Add dependency to fix parallel-make race condition. Alexander Dupuy 2006-07-14 16:45:43 +00:00
Bruce Momjian 51e8882197 Revert part of recent include patch not ready for application. 2006-07-14 04:59:30 +00:00
Bruce Momjian 03c2e5924e Add additional includes needed on some platforms. 2006-07-14 04:44:46 +00:00
Bruce Momjian 97c3fcd9b7 Move pthread-win32.h to /port, modify bcc/msvc makefiles. 2006-07-10 18:53:29 +00:00
Bruce Momjian 591e90a4d9 WIN32 fixes:
I take out patch for this as a promise. This is client-build support of
MS-VC6+.

Fix for different getaddrinfo structure ordering on Win32 for IPv6.

Hiroshi Saito
2006-07-06 02:12:32 +00:00
Bruce Momjian ecae3a9689 Add comment about the use of pg_config_paths.h. 2006-06-26 18:40:50 +00:00
Bruce Momjian e56756e94e Use Unix line endings instead of DOS ones, per Magnus. 2006-06-26 12:59:44 +00:00
Bruce Momjian d8f75d4131 Fix Win32/Cygwin problems:
After updating to the latest cvs, and also building most of the addons
(like PLs), the following patch is neededf for win32 + Visual C++.

* Switch to use the new win32 semaphore code
* Rename win32_open to pgwin32_open. win32_open collides with symbols
defined in Perl. MingW didn't detect ig, MSVC did. And it's a bit too
generic a name to export globally, imho...
* Python defines some partially broken #pragmas in the headers when
doing a debug build. Workaround.

Magnus Hagander
2006-06-25 00:18:24 +00:00
Tom Lane f3164c0200 Clean up psql's control-C handling to avoid longjmp'ing out of random
places --- that risks corrupting data structures, losing sync with the
backend, etc.  We now longjmp only from calls to readline, fgets, and
fread, which we assume are coded to protect themselves against interrupts
at undesirable times.  This requires adding explicit tests for
cancel_pressed in long-running loops, but on the whole it's far cleaner.
Martijn van Oosterhout and Tom Lane.
2006-06-14 16:49:03 +00:00
Bruce Momjian 399a36a75d Prepare code to be built by MSVC:
o  remove many WIN32_CLIENT_ONLY defines
	o  add WIN32_ONLY_COMPILER define
	o  add 3rd argument to open() for portability
	o  add include/port/win32_msvc directory for
	   system includes

Magnus Hagander
2006-06-07 22:24:46 +00:00
Bruce Momjian 3cd77da334 Build server libpgport with all non-FRONTEND object files. This is to
fix a Win32 bug where pipe.c included a file that used FRONTEND, but it
wasn't on the server-build list.
2006-05-08 02:18:50 +00:00
Bruce Momjian 83b692d9bb Darin -> Darwin. 2006-04-28 04:39:41 +00:00
Bruce Momjian 9fc69d669e Update list of platforms that have a list of exported symbols. 2006-04-28 02:59:11 +00:00
Bruce Momjian 35a0601d0a Add info on pgport linking requirements. 2006-04-28 02:52:57 +00:00
Tom Lane a3f0b3d68f Improve performance of our private version of qsort. Per recent testing,
the logic it contained to switch to insertion sort for near-sorted input was
in fact a big loss, because it could fairly easily be fooled into applying
insertion sort to large subfiles that weren't all that well ordered.  Remove
that, and instead add a simple check for already-perfectly-sorted input, as
per suggestion from Dann Corbit.  This adds at worst O(N*lgN) overhead, and
usually far less, while sometimes allowing a subfile sort to finish in O(N)
time.  Preliminary testing says this is an improvement over the basic
Bentley & McIlroy code for many nonrandom inputs, and it costs almost
nothing when the input is random.
2006-03-21 19:49:15 +00:00
Bruce Momjian f3d99d160d Add CVS tag lines to files that were lacking them. 2006-03-11 04:38:42 +00:00
Bruce Momjian f2f5b05655 Update copyright for 2006. Update scripts. 2006-03-05 15:59:11 +00:00
Bruce Momjian a4a6ee4a5d Check for "msys" so it doesn't use 'con' by checking for an evironment
variable.
2006-03-05 05:33:12 +00:00
Bruce Momjian 3bce31f613 > gettimeofday.c:35: warning: integer constant is too large for "long"
> type

Wouldn't it be better to use the UINT64CONST macro?  I realize this
file is Windows-only, but we do worry about more than one compiler
on that platform.

Kris Jurka
2006-03-04 04:44:07 +00:00
Bruce Momjian 64e7c8a951 Use DEVTTY as 'con' on Win32 as a replacement for /dev/tty. 2006-03-04 04:30:41 +00:00
Bruce Momjian 295615a6ca This patch fixes this warning.
gettimeofday.c:35: warning: integer constant is too large for "long"
type

Kris Jurka
2006-03-03 23:59:14 +00:00
Bruce Momjian ef3f7c3f74 Avoid trying to open /dev/tty on Win32. Some Win32 systems have
/dev/tty, but it isn't a device file and doesn't work as expected.

This fixes a known bug where psql does not prompt for a password on some
Win32 systems.

Backpatch to 8.1.X.

Robert Kinberg
2006-03-03 23:49:12 +00:00
Bruce Momjian 802c7aa30f Fix const cast in get_progname().
Backpatch.
2006-02-01 12:41:45 +00:00
Bruce Momjian 62a142036b Set progname early in the postmaster/postgres binary, rather than doing
it later.  This fixes a problem where EXEC_BACKEND didn't have progname
set, causing a segfault if log_min_messages was set below debug2 and our
own snprintf.c was being used.

Also alway strdup() progname.

Backpatch to 8.1.X and 8.0.X.
2006-02-01 00:31:59 +00:00
Bruce Momjian 44f9021223 Remove BEOS port. 2006-01-05 03:01:38 +00:00
Bruce Momjian a1675649e4 Remove QNX port. 2006-01-05 01:56:30 +00:00
Bruce Momjian 261114a23f I have added these macros to c.h:
#define HIGHBIT                 (0x80)
        #define IS_HIGHBIT_SET(ch)      ((unsigned char)(ch) & HIGHBIT)

and removed CSIGNBIT and mapped it uses to HIGHBIT.  I have also added
uses for IS_HIGHBIT_SET where appropriate.  This change is
purely for code clarity.
2005-12-25 02:14:19 +00:00
Tom Lane 936d43d842 Fix make_relative_path() to support cases where target_path and bin_path
differ by more than the last directory component.  Instead of insisting
that they match up to the last component, accept whatever common prefix
they have, and try to replace the non-matching part of bin_path with
the non-matching part of target_path in the actual executable's path.
In one way this is tighter than the old code, because it insists on
a match to the part of bin_path we want to substitute for, rather than
blindly stripping one directory component from the executable's path.
Per gripe from Martin Pitt and subsequent discussion.
2005-12-23 22:34:22 +00:00
Alvaro Herrera 42a24b64ba Add a note to Win32 gettimeofday() emulation, per Qingqing Zhou. 2005-12-16 21:55:27 +00:00
Peter Eisentraut a29c04a541 Allow installation into directories containing spaces in the name. 2005-12-09 21:19:36 +00:00
Bruce Momjian 7b1a7e786e Stamp libraries for 8.2 by updating minor library version numbers and
Win32 library files.
2005-12-09 02:49:09 +00:00
Bruce Momjian 4ebd4224a5 Disble some Win32-specific code in win32-client-only builds:
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.

Hiroshi Saito
2005-12-08 17:52:11 +00:00
Tom Lane 1daac8e165 Document return-value conventions used by this implementation, per
suggestion from Bruce.
2005-12-05 21:57:00 +00:00
Tom Lane 3311c7669a Fix a rather sizable number of problems in our homegrown snprintf, such as
incorrect implementation of argument reordering, arbitrary limit of output
size for sprintf and fprintf, willingness to access more bytes than "%.Ns"
specification allows, wrong formatting of LONGLONG_MIN, various field-padding
bugs and omissions.  I believe it now accurately implements a subset of
the Single Unix Spec requirements (remaining unimplemented features are
documented, too).  Bruce Momjian and Tom Lane.
2005-12-05 02:39:38 +00:00
Bruce Momjian cf17131767 Remove comment on errno=0 lines, but add mention to port/strtol.c function. 2005-12-02 02:49:11 +00:00
Bruce Momjian 436a2956d8 Re-run pgindent, fixing a problem where comment lines after a blank
comment line where output as too long, and update typedefs for /lib
directory.  Also fix case where identifiers were used as variable names
in the backend, but as typedefs in ecpg (favor the backend for
indenting).

Backpatch to 8.1.X.
2005-11-22 18:17:34 +00:00
Peter Eisentraut 07bb9f086b Message corrections 2005-10-29 00:31:52 +00:00
Bruce Momjian 1dc3498251 Standard pgindent run for 8.1. 2005-10-15 02:49:52 +00:00
Bruce Momjian 35c8983371 Fix uppercase TRUE/FALSE that are WIN32 stuffl. 2005-10-13 23:22:11 +00:00
Bruce Momjian 32e6c2a160 Use get_progname() in backend main.c, rather than port-specific hack
that is too fragile.
2005-10-13 15:37:14 +00:00
Tom Lane 4fc935a5d4 Fix problems with PGXS builds against an installation tree that was
relocated after installation.  We can't trust the installation paths
inserted into Makefile.global by configure, so instead we must get the
paths from pg_config.  This requires extending pg_config to support all
the separately-configurable path names, but that was on TODO anyway.
2005-09-27 17:39:35 +00:00
Tom Lane 3772975f30 Fix our version of strdup() to adhere to the standard semantics for
out-of-memory --- that is, return NULL rather than dumping core.
Noted by Qingqing Zhou.
2005-09-27 04:53:23 +00:00
Peter Eisentraut bfa47ddc20 Clarify some error messages 2005-09-18 09:48:24 +00:00
Tom Lane a17dbec893 libpgport routines need nonstandard palloc to work on Windows.
Propagate hack that's in dirmod.c to copydir.c.
2005-09-03 15:55:00 +00:00
Tom Lane 962a4bb69f In copy_file, use a palloc'd buffer instead of just a local char array;
a local array isn't guaranteed to have any particular alignment, and
so it could slow down the data transfer.
2005-09-02 18:55:32 +00:00
Tom Lane 8aec77fb9f Fix platform-specific test for path prefix-ness: move it into path.c where
it can be done right.  Allow explicit use of absolute DataDir path.
Per Dave Page.
2005-08-29 19:39:39 +00:00
Tom Lane 09a6c90945 Fix bogus freeaddrinfo() call in WIN32 code, extend gai_strerror to
cover more error codes.  Per Petr Jelinek.
2005-08-25 17:51:01 +00:00
Tom Lane c3bf8dee0e Add code to use Windows getaddrinfo and friends if they exist. This
has to be tested dynamically if we want to make portable executables.
Chuck McDevitt and Andrew Dunstan.
2005-08-24 22:13:23 +00:00
Tom Lane 0f455b346e Fix broken lrand48() implementation, per Merlin Moncure. 2005-08-23 13:31:11 +00:00
Tom Lane 0d1ebe0194 Fix up canonicalize_path to do the right thing in all cases (I think ...
this was harder than it seemed at first glance).  Also push code for
checking for ".." in file names into path.c where it belongs.
2005-08-12 21:07:53 +00:00
Bruce Momjian 88a2b5c10f No server version of snprintf needed, so remove Makefile rule. 2005-08-12 19:45:14 +00:00
Bruce Momjian 3b0ee862d6 Reverse out changes to canonicalize_path(), per suggestion from Tom. 2005-08-12 19:43:32 +00:00
Bruce Momjian 35379e9079 Modify canonicalize_path() so if we would return a trailing "..", throw
an error instead.
2005-08-12 19:42:45 +00:00
Bruce Momjian d95886e734 Update comments. 2005-08-12 03:07:45 +00:00
Bruce Momjian 6effc19d9c Document why we only handle trailing "..". 2005-08-12 02:48:37 +00:00
Bruce Momjian 9e4a2de844 Fix BSD fseeko to seek from the end of the file. 2005-08-11 23:05:14 +00:00
Bruce Momjian 6a60357588 Fix canonicalize_path so "../.." isn't stripped off and ignored. 2005-08-11 03:53:25 +00:00
Bruce Momjian 8bbf227ad7 Document why Win32 loops over rename/unlink are necessary. 2005-08-10 19:52:37 +00:00
Tom Lane 558730ac6b Clean up CREATE DATABASE processing to make it more robust and get rid
of special case for Windows port.  Put a PG_TRY around most of createdb()
to ensure that we remove copied subdirectories on failure, even if the
failure happens while creating the pg_database row.  (I think this explains
Oliver Siegmar's recent report.)  Having done that, there's no need for
the fragile assumption that copydir() mustn't ereport(ERROR), so simplify
its API.  Eliminate the old code that used system("cp ...") to copy
subdirectories, in favor of using copydir() on all platforms.  This not
only should allow much better error reporting, but allows us to fsync
the created files before trusting that the copy has succeeded.
2005-08-02 19:02:32 +00:00
Tom Lane 9216c8999a rmtree() reported the wrong pathname if final rmdir failed. 2005-08-02 15:14:47 +00:00
Tom Lane 06e1d62689 Fix a whole bunch of #includes that were either wrong or redundant.
The first rule of portability for us is 'thou shalt have no other gods
before c.h', and a whole lot of these files were either not including
c.h at all, or including random system headers beforehand, either of
which sins can mess up largefile support nicely.  Once you have
included c.h, there is no need to re-include what it includes, either.
2005-07-28 04:03:14 +00:00
Bruce Momjian b492c3accc Add parentheses to macros when args are used in computations. Without
them, the executation behavior could be unexpected.
2005-05-25 21:40:43 +00:00
Neil Conway 3994ffb479 Fix a few minor mistakes in header comments. From Qingqing Zhou. 2005-05-16 05:52:13 +00:00
Tom Lane b79a718fac Must count '*' characters as potential arguments. 2005-04-14 20:53:09 +00:00
Tom Lane e6befdc9d1 Kerberos fixes from Magnus Hagander --- in theory Kerberos 5 auth
should work on Windows now.  Also, rename set_noblock to pg_set_noblock;
since it is included in libpq, the former name polluted application
namespace.
2005-03-25 00:34:31 +00:00
Bruce Momjian b1f57d88f5 Change Win32 O_SYNC method to O_DSYNC because that is what the method
currently does.  This is now the default Win32 wal sync method because
we perfer o_datasync to fsync.

Also, change Win32 fsync to a new wal sync method called
fsync_writethrough because that is the behavior of _commit, which is
what is used for fsync on Win32.

Backpatch to 8.0.X.
2005-03-24 04:36:20 +00:00
Tom Lane 0ca91482fa Add missing error checking in readdir() loops. 2005-03-24 02:11:20 +00:00
Bruce Momjian 683f60da3d Add mention of why malloc() has to be used in snprintf.c. 2005-03-20 13:54:53 +00:00
Bruce Momjian 8c72526fe9 Department of second thoughts. Remove FRONTEND from snprintf.c because
snprintf is called before the memory system is started.  We have to just
malloc/free.  There are no elogs in the code so we should be fine.
2005-03-20 03:53:39 +00:00
Bruce Momjian 169adfcf74 Fix typo in Makefile. 2005-03-20 02:44:45 +00:00
Bruce Momjian 83ebbfac75 Another change for FRONTEND snprintf.c. 2005-03-20 02:40:28 +00:00
Bruce Momjian 614fcbeba7 Mark snprintf.c as a file that uses FRONTEND and needs to a version in
the server-side port library.  Somehow I missed that change when I added
memory allocation to snprintf.c.
2005-03-20 02:39:33 +00:00
Bruce Momjian 7111a14fba Factor duplicate snprintf code into functions. 2005-03-17 03:18:14 +00:00
Bruce Momjian 712f053587 Add sprintf support, that were were missing.
Add support for snprintf '+', 'h', and %* length settings.
2005-03-16 21:27:23 +00:00
Bruce Momjian ca66797308 pgindent snprintf.c for consistency. 2005-03-16 15:12:18 +00:00
Bruce Momjian 2306f63dea Fix snprintf for %*$. 2005-03-16 15:11:43 +00:00
Bruce Momjian 888271ed15 Fix snprintf to handle %$ properly by storing and reordering the
arguments.

Nicolai Tufar
2005-03-16 06:00:58 +00:00
Bruce Momjian c82f76e1ac Fix snprintf() to properly handle precision specification for %f. 2005-03-12 04:00:56 +00:00
Bruce Momjian caad817d1c Add fprintf() custom version to libpgport.
Document use of macros for pg_printf functions.

Bump major versions of all interfaces to handle movement of get_progname
from libpq to libpgport in 8.0, and probably other libpgport changes in 8.1.
2005-03-11 19:13:43 +00:00
Bruce Momjian 3bc6bdf322 Define snprintf() to call pg_snprintf() so our own snprintf-like
implementation doesn't export out via libpq and get used by a user
application.
2005-03-11 17:20:35 +00:00
Bruce Momjian 5592a6cf46 Move snprintf int64 compatibility letters into a NOT_USED block. 2005-03-02 23:56:53 +00:00
Bruce Momjian f8aca046bb Fix for %I64d snprintf. 2005-03-02 15:32:39 +00:00
Bruce Momjian 022ece2cf1 snprintf() %I64d code fix. 2005-03-02 15:07:09 +00:00
Bruce Momjian bb7a3a740c Use our own snprintf() only if NLS is enabled, and support %qd and %I64d. 2005-03-02 14:48:22 +00:00
Bruce Momjian 70d4a9343f Prevent large allocation in snprintf to hold positional parameters.
Allocated size based on format string.
2005-03-02 05:22:22 +00:00
Bruce Momjian 47ea7148e3 Fix snprintf on Win32:
*  If vsnprintf() is not before snprintf() in this file, snprintf()
 *  will call the system vsnprintf() on MinGW.
2005-03-02 03:21:52 +00:00
Bruce Momjian 9989e90490 Make port snprintf.c finally thread-safe. 2005-03-02 00:02:13 +00:00
Bruce Momjian 03b8efa540 Make snprintf() use already-defined int64/uint64 typedefs rather than
defining its own.
2005-03-01 05:47:28 +00:00
Bruce Momjian 295dd338c3 And while we are on it, I would like to submit minor
changes to make snprintf() vsnprintf() and printf()
functions in src/port/snprintf.c thread-safe.

Nicolai Tufar
2005-03-01 00:38:11 +00:00
Bruce Momjian 949ab3c9b3 snprintf.c has no sys/ioctl.h. Trivial patch below:
Magnus Hagander
2005-02-28 14:16:16 +00:00
Bruce Momjian afbc30e5d4 Allow Win32 to support the O_SYNC open flag as an wal_sync_method method.
Magnus Hagander
2005-02-27 00:53:29 +00:00
Bruce Momjian e3ebe2521e Add semicolon so snprintf.c goto has a statement to attach to:
nochar:
    /* nothing */
    ; /* semicolon required because a goto has to be attached to a statement */
2005-02-22 04:57:24 +00:00
Bruce Momjian 0542b1e2fe Use _() macro consistently rather than gettext(). Add translation
macros around strings that were missing them.
2005-02-22 04:43:23 +00:00
Bruce Momjian b4feafb6ff Add support to port/snprintf.c for position parameter specification:
+ # Determine if printf supports %1$ argument selection, e.g. %5$ selects
+ # the fifth argument after the printf print string.
+ # This is not in the C99 standard, but in the Single Unix Specification (SUS).
+ # It is used in our langauge translation strings.

Nicolai Tufar with configure changes by Bruce.
2005-02-22 03:56:22 +00:00
Bruce Momjian bb17a98e3c Print file name and errno string on rmtree failure.
Backpatch to 8.0.X.
2005-02-13 16:50:44 +00:00
Tom Lane 889f038129 Use SHGetFolderPath instead of SHGetSpecialFolderPath to find the
APPDATA directory on Windows.  Magnus Hagander
2005-01-26 19:24:03 +00:00
Bruce Momjian 31197bbdf5 Update version stamps for 8.1 as listed in RELEASE_CHANGES. 2005-01-18 05:00:35 +00:00
Tom Lane 982e998064 Add missing gettext() calls in find_my_exec(). It's probably too late
to get these strings translated, but we may as well have them be
translatable as not.
2005-01-14 17:47:49 +00:00
Tom Lane 8e4f4078d8 Un-break MSVC build, per Andrew Dunstan. 2005-01-10 00:19:51 +00:00
Tom Lane bbeeea1437 Minor mop-up for Windows home-directory stuff, per Magnus. 2005-01-06 21:41:45 +00:00
Tom Lane a3f98d5795 Adjust lookup of client-side profile files (.pgpass and so on) as per
discussion on pgsql-hackers-win32 list.  Documentation still needs to
be tweaked --- I'm not sure how to refer to the APPDATA folder in
user documentation.
2005-01-06 18:29:11 +00:00
Tom Lane d97ae8230e Make the various places that determine the user's "home directory"
consistent.  On Unix we now always consult getpwuid(); $HOME isn't used
at all.  On Windows the code currently consults $USERPROFILE, or $HOME
if that's not defined, but I expect this will change as soon as the win32
hackers come to a consensus.  Nothing done yet about changing the file
names used underneath $USERPROFILE.
2005-01-06 01:00:12 +00:00
Tom Lane a17e589046 Adjust a few more copyright notices to match the format expected by
the src/tools/copyright script.
2005-01-01 22:14:33 +00:00
Tom Lane 7e1c8ef4fc Some more missed copyright notices. Many of these look like they
should have been caught by the src/tools/copyright script ... why
weren't they?
2005-01-01 20:44:34 +00:00
PostgreSQL Daemon 2ff501590b Tag appropriate files for rc3
Also performed an initial run through of upgrading our Copyright date to
extend to 2005 ... first run here was very simple ... change everything
where: grep 1996-2004 && the word 'Copyright' ... scanned through the
generated list with 'less' first, and after, to make sure that I only
picked up the right entries ...
2004-12-31 22:04:05 +00:00
Tom Lane f0c08ae7c9 Remove 'optimization' to skip resolve_symlinks() when the found
executable file isn't itself a symlink.  We still need to run the
algorithm so that any directory symlinks in the path to the
executable are replaced by a true path.  Noticed this on seeing
pg_config give me a completely wrong answer for --pkglibdir when
I called it through a symlink to the installation bindir.
2004-12-24 16:55:43 +00:00
Tom Lane 80855ba8ca In pipe_read_line Windows code, loop to ensure we get a whole line
from the child process; fixes observed problems when the returned
version number is '8.0.0' rather than '8.0.0rc1'.  Magnus Hagander
2004-12-20 17:40:59 +00:00
Bruce Momjian 9af9320750 Add Win32 version stamps that increment each day for proper SYSTEM32
DLL pginstaller installs.
2004-12-19 02:16:31 +00:00
Peter Eisentraut 99b735cc03 Work around lack of NLS support in libpgport by making those components
who use it scan the relevant source files for their own catalog.  It
creates a bit of duplicate work for translators, but it gets the job done
for now.
2004-11-27 22:44:15 +00:00
Neil Conway 2fa36d7e41 Win32 build cleanups, from Andrew Dunstan. 2004-11-17 08:30:11 +00:00
Bruce Momjian 33be9d359a Removes duplicate slashes from the path in canonicalize_path(). It
preserve double leading slashes on Win32.

e.g.    ////a////b => /a/b
2004-11-07 02:12:17 +00:00
Tom Lane 336969e490 Add code to find_my_exec() to resolve a symbolic link down to the
actual executable location.  This allows people to continue to use
setups where, eg, postmaster is symlinked from a convenient place.
Per gripe from Josh Berkus.
2004-11-06 23:06:29 +00:00
Tom Lane bffe45a72c Simplify relative-path logic, on the assumption that compiled-in paths
won't have trivial differences in their common prefix.
2004-11-06 21:39:45 +00:00
Tom Lane d2f6c3e56c Fix sizeof(EXE) arithmetic, per Andrew Dunstan. 2004-11-06 04:24:14 +00:00
Tom Lane 4867afef7a Code cleanup in path.c and exec.c. Handle Windows drive and network specs
everywhere not just some places, get rid of . and .. when joining path
sections together.  This should eliminate most of the ugly paths like
/foo/bar/./baz that we've been generating.
2004-11-06 01:16:22 +00:00
Bruce Momjian b0830e39c3 Add comment about memory failure of get_progname exiting the postmaster:
exit(1);    /* This could exit the postmaster */
2004-11-02 03:09:06 +00:00
Bruce Momjian 584bfe3d70 Adjust use of sizeof(EXE). 2004-11-01 04:46:56 +00:00
Bruce Momjian b2b585fb2d Clarify coding of .exe patch 2004-11-01 04:25:18 +00:00
Tom Lane 5a5f34e022 Code cleanup in dirmod.c. Andrew Dunstan, some further mods by moi. 2004-10-28 22:09:31 +00:00
Bruce Momjian 3fe704209a Canonicalize Win32 path coming in from pg_ctl -D, idea from Magnus. 2004-10-27 17:17:09 +00:00
Neil Conway 3bc89ac9eb Add a missing dependency: the "install" target requires "all" to have
been built before it. Per report from Kris Jurka.
2004-10-27 11:51:40 +00:00
Tom Lane 39fccf0277 On Windows, cause get_progname to strip any .EXE suffix.
Andrew Dunstan
2004-10-24 22:08:19 +00:00
Bruce Momjian b3fe6bcafe Remove use of "miscadmin.h" in port C files and remove test for frontend
in miscadmin.h.
2004-10-18 19:08:58 +00:00
Bruce Momjian edb1ba113d Better document win32_open and its ability to allow concurrent
unlink/rename().
2004-10-17 23:53:30 +00:00
Bruce Momjian 1311667b5c Fix some typos. 2004-10-17 23:39:22 +00:00
Bruce Momjian c0c4883be3 Use native Cygwin symlinks so tablespaces work on Win95/98/ME which
don't support junction points.  Doesn't affect native Win32.
2004-10-11 22:50:48 +00:00
Bruce Momjian a5d7ba773d Adjust comments previously moved to column 1 by pgident. 2004-10-07 15:21:58 +00:00
Bruce Momjian 914ff1ea3c Add as binary mode 2004-10-07 13:59:45 +00:00
Bruce Momjian 70d344d61d re-add as binary 2004-10-07 13:59:20 +00:00
Bruce Momjian afa66ff3d3 Update win32ver.rc to 8,0,000,000. Mention it needs updating in
RELEASE_CHANGES.
2004-10-06 15:23:27 +00:00
Bruce Momjian 513e89b44b please find attached an alternate submission which addresses open item
"make pgxs install by default". It is up to the committers to chose.

(1) there is only one "install" target. no more "install-all-headers".
    it simplifies/changes several makefiles.

(2) the documentation reflects the change.

(3) a minor fix on pgxs to use a nicer patch without a double slash.

Fabien Coelho
2004-10-06 08:50:02 +00:00
Bruce Momjian da67c919d9 Add Win32 version info to client binaries.
Magnus Hagander
2004-10-05 19:30:25 +00:00
Neil Conway af7849f184 License cleanup: crypt.c and qsort.c to latest NetBSD CVS sources, to
pickup license clarification (3-clause BSD is now used). Add license
terms to memcmp.c (also from NetBSD), which previously had none.
Finally, pickup an upstream fix to crypt.c (const-ify some arrays).
2004-10-05 00:12:49 +00:00
Bruce Momjian 63dabb39cd Fix warnings from crypt.c compile. 2004-10-04 15:17:17 +00:00
Bruce Momjian f95ff4b978 Comment out unused variable. 2004-10-04 15:09:27 +00:00
Bruce Momjian 24201b4bc6 Make libpgport be front-end only and make libpgport_srv be a backend
library that uses palloc, ereport, etc.  This simplifies the makefiles
for client applications.
2004-10-04 13:43:59 +00:00
Tom Lane bb6a78829e isinf.c needs <float.h> on some platforms, per Darcy Buskermolen. 2004-09-30 16:38:39 +00:00
Bruce Momjian 1ad6878276 Revert patch that removed BUFSIZ usage. The memory has to hold the
structures plus pointers used by the structure.
2004-09-28 00:07:01 +00:00
Bruce Momjian dd67707a64 Small WIN32_CLIENT_ONLY cleanup for new build patch. 2004-09-27 23:58:09 +00:00
Bruce Momjian b534a5605f Remove use of large BUFSIZ for buffers and use the proper struct sizes.
This greatly helps threaded libpq programs.
2004-09-27 23:39:14 +00:00
Bruce Momjian e1c8b37afb Add new macro as shorthand for MS VC and Borland C++:
+ #if   defined(_MSC_VER) || defined(__BORLANDC__)
+ #define       WIN32_CLIENT_ONLY
+ #endif
2004-09-27 23:24:45 +00:00
Bruce Momjian 8efe926bfe More Win32 cleanups for Dave Page. 2004-09-27 22:11:23 +00:00
Bruce Momjian 866627f84d Make adjustment for MS VC and BCC compile of psql, from Dave Page. 2004-09-27 22:06:41 +00:00
Bruce Momjian 32b24bfa97 Remove inclusion of windows.h now that it is included in c.h, per idea
from Peter.
2004-09-27 19:16:03 +00:00
Tom Lane 00b821a11b Fix gratuitous weirdness in function prototype, per Kris Jurka. 2004-09-24 05:16:35 +00:00
Bruce Momjian 777687c6de Add mention loops over unlink/rename might not be needed. 2004-09-10 09:58:21 +00:00
Bruce Momjian e2e1a0cc71 Move undef of rename/unlink so system declarations are unmodified. 2004-09-10 09:53:08 +00:00
Bruce Momjian 8975dcfcbb Clean up Cygwin test. 2004-09-10 02:49:37 +00:00
Bruce Momjian f1d1116178 Fix Cygwin defines to be consistent. 2004-09-09 00:59:49 +00:00
Tom Lane 1e4c33b1e8 Fix getrusage() emulation on Windows. Magnus Hagander 2004-09-02 17:55:16 +00:00
Tom Lane e00896f3c6 Remove useless variable. 2004-09-02 16:42:00 +00:00
Tom Lane 50742aed68 Add WAL logging for CREATE/DROP DATABASE and CREATE/DROP TABLESPACE.
Fix TablespaceCreateDbspace() to be able to create a dummy directory
in place of a dropped tablespace's symlink.  This eliminates the open
problem of a PANIC during WAL replay when a replayed action attempts
to touch a file in a since-deleted tablespace.  It also makes for a
significant improvement in the usability of PITR replay.
2004-08-29 21:08:48 +00:00
Bruce Momjian b6b71b85bc Pgindent run for 8.0. 2004-08-29 05:07:03 +00:00
Bruce Momjian da9a8649d8 Update copyright to 2004. 2004-08-29 04:13:13 +00:00
Bruce Momjian 0476bbbc9b Several Cygwin fixes pointed out by Reini Urban. 2004-08-29 02:58:50 +00:00
Bruce Momjian f94aea9c10 Add comment on palloc use and DLLIMPORT> 2004-08-29 01:44:02 +00:00
Bruce Momjian f7587aeba8 > Am Dienstag, 17. August 2004 14:26 schrieb Fabien COELHO:
> > The patch adds missing the "libpgport.a" file to the installation under
> > "install-all-headers". It is needed by some contribs. I install the
> > library in "pkglibdir", but I was wondering whether it should be "libdir"?

Please find attached a small patch against current CVS head that fixes
pgport library installation so that it goes to libdir instead of
pkglibdir. It works for me.

Fabien Coelho
2004-08-28 22:55:06 +00:00
Tom Lane 3e3f70a28a Fix Windows emulation of kill(pid, 0). This will now succeed, but only
if the target PID is a PG postmaster or backend --- for our purposes that
is actually better than the Unix behavior.  Per Dave Page and Andrew Dunstan.
2004-08-27 18:31:48 +00:00
Bruce Momjian ee85595d46 > Please find enclose a submission to fix these problems.
>
> The patch adds missing the "libpgport.a" file to the installation under
> "install-all-headers". It is needed by some contribs. I install the
> library in "pkglibdir", but I was wondering whether it should be "libdir"?
> I was wondering also whether it would make sense to have a "libpgport.so"?
>
> It fixes various macros which are used by contrib makefiles, especially
> libpq_*dir and LDFLAGS when used under PGXS. It seems to me that they are
> needed to
>
> It adds the ability to test and use PGXS with contribs, with "make
> USE_PGXS=1". Without the macro, this is exactly as before, there should be
> no difference, esp. wrt the vpath feature that seemed broken by previous
> submission. So it should not harm anybody, and it is useful at least to me.
>
> It fixes some inconsistencies in various contrib makefiles
> (useless override, ":=" instead of "=").

Fabien COELHO
2004-08-20 20:13:10 +00:00
Bruce Momjian 1abf13db3c Add get_home_path() to use USERPROFILE on Win32 and HOME on Unix. 2004-08-18 02:59:12 +00:00
Bruce Momjian 23717760d1 Fix for adding \n for zero-length win32 read_pipe return 2004-08-16 02:46:36 +00:00
Bruce Momjian c7ae53a6b4 Clarify need for \r\n -> \n translation in version checking code. 2004-08-16 01:26:31 +00:00
Tom Lane 79f9ee9d15 Fix core dumps, inability to count, etc associated with canonicalize_path
patches.
2004-08-13 14:47:23 +00:00
Bruce Momjian 10249abfa1 Cleanup Win32 COPY handling, and move archive examples to SGML. 2004-08-12 19:03:44 +00:00
Bruce Momjian 6525b42b10 Add make_native_path() because Win32 COPY is an internal CMD.EXE command
and doesn't process forward slashes in the same way as external
commands.  Quoting the first argument to COPY does not convert forward
to backward slashes, but COPY does properly process quoted forward
slashes in the second argument.

Win32 COPY works with quoted forward slashes in the first argument only if the
current directory is the same as the directory of the first argument.
2004-08-12 18:32:52 +00:00
Tom Lane b06c907645 Path-mangling logic was failing to account for paths containing mentions
of '.' or '..'.  Extend canonicalize_path() to trim off trailing occurrences
of these things, and use it to fix up paths where needed (which I think is
only after places where we trim the last path component, but maybe some
others will turn up).  Fixes Josh's complaint that './initdb' does not
work.
2004-08-09 20:20:47 +00:00
Bruce Momjian 3d642ae7d9 Fix Win32 pg_dumpall check. 2004-08-09 03:12:38 +00:00
Bruce Momjian 7ee3c35152 Allow libpgport to call memory allocation routines even though
CurrentMemoryContext is DLLIMPORT on Win32.  Work around that by
creating stubs in the backend for palloc/pstrdup.

Also fix pg_dumpall to do proper quoting on Win32.
2004-08-08 06:44:36 +00:00
Bruce Momjian e81cbc21fc Adjust defines to be consistent. 2004-08-08 05:04:41 +00:00
Bruce Momjian dc94d4ab57 Remove xstrdup and friends who were only called once. Replace with
#ifdef calls.
2004-08-08 03:51:20 +00:00
Bruce Momjian fd62065fa6 Fix Win32 pg_dumpall, with help from Claudio. 2004-08-08 03:21:39 +00:00
Bruce Momjian 2732932de4 Improve comment. 2004-08-08 02:22:55 +00:00
Bruce Momjian 5e01aa7ad1 Fixups for Win32 symlinks. 2004-08-08 01:31:15 +00:00
Bruce Momjian 53e8bec717 The attached patch implements a symlink for win32 using junctions, and
uses that for win32 tablespaces.

Andreas Pflug
2004-08-07 21:48:09 +00:00
Bruce Momjian cc07f8cfe7 Create a C version of pg_config.
Andrew Dunstan
2004-08-01 06:56:39 +00:00
Bruce Momjian ca9540d34f Add docs for initdb --auth. 2004-08-01 06:19:26 +00:00
Bruce Momjian 5b2f4afffe Here is a patch that fixes the pipes used in find_other_exec() when
running as a service on windows <= 2000. Required to make the pg_ctl
service wrapper to work at all.

Magnus Hagander
2004-07-26 01:48:00 +00:00
Bruce Momjian 15c8fd70e8 Add blank line to new canonicalize_path file, which handles "a b\" properly. 2004-07-12 19:27:31 +00:00
Bruce Momjian a4c71af2c0 Put back canonicalization of PGDATA environment variable. 2004-07-12 19:15:14 +00:00
Bruce Momjian 7b0f060d54 Use canonicalize_path for -D, GUC paths, and paths coming in from
environment variables.
2004-07-11 21:34:04 +00:00
Bruce Momjian ff2fbacc42 Fix trim_trailing_separator() to not trim c:\ nor \\network\ on Win32. 2004-07-11 02:59:42 +00:00
Tom Lane b9f698eccb Fix BSD-only coding in port.c (passing a local variable to putenv).
Also a quick but half-baked attempt to make trim_trailing_separator
do the right thing with path consisting only of '/' --- still needs
work for Windows I think.
2004-07-10 22:58:42 +00:00
Tom Lane 4c9aa572fa Revert mistaken #include change, per Merlin Moncure. 2004-06-30 15:30:41 +00:00
Tom Lane fd786668ea Include c.h instead of postgres.h in files that need to be usable in
both frontend and backend.  Per Andreas Pflug.
2004-06-24 18:53:48 +00:00
Bruce Momjian 2597056cc3 Use sizeof() rather than strlen() in array size. 2004-06-11 17:09:13 +00:00
Bruce Momjian a28d04e6ee This patch updates pgpipe() on win32 to log exactly which part of the
call fails when it does. (As it is now, there is no way to figure out
the point of error). Shouldn't be a problem since it's most defintily
not a performance-critical path (only called on pgstat startup ATM).

This should help us debug the pipe error message that's on the win32
status page (which I myself have never been able to reproduce, and thus
haven't figured out a better way to debug yet)

Magnus Hagander
2004-06-11 03:48:35 +00:00
Bruce Momjian 6cc4175b25 Attached is a patch that takes care of the PATHSEP issue. I made a more
extensive change then what was suggested. I found the file path.c that
contained a lot of "Unix/Windows" agnostic functions so I added a function
there instead and removed the PATHSEP declaration in exec.c altogether. All
to keep things from scattering all over the code.

I also took the liberty of changing the name of the functions
"first_path_sep" and "last_path_sep". Where I come from (and I'm apparently
not alone given the former macro name PATHSEP), they should be called
"first_dir_sep" and "last_dir_sep". The new function I introduced, that
actually finds path separators, is now the "first_path_sep". The patch
contains changes on all affected places of course.

I also changed the documentation on dynamic_library_path to reflect the
chagnes.

Thomas Hallgren
2004-06-10 22:26:24 +00:00
Bruce Momjian cd8b0fc5f1 Change PGETC to PGSYSCONFDIR and PGLOCALE to PGLOCALEDIR, per Peter. 2004-06-08 13:49:23 +00:00
Bruce Momjian b2a17038d7 Have strerror_r return "Unknown error". 2004-06-08 01:45:50 +00:00
Bruce Momjian a63d2168e9 Fix strerror_r by checking return type from configure. 2004-06-07 22:39:45 +00:00
Bruce Momjian 6870843339 Add PGETC (for pg_service.conf) and PGLOCALE (for locale dir)
environment variable processing to libpq.

The patch also adds code to our client apps so we set the environment
variable directly based on our binary location, unless it is already
set. This will allow our applications to emit proper locale messages
that are generated in libpq.
2004-06-03 00:07:38 +00:00
Bruce Momjian bf65d730de Add thread library to libpgport creation. 2004-05-30 14:07:47 +00:00
Bruce Momjian 6f21f4adaa Move pgkill out into /port so pg_ctl can use it on Win32. 2004-05-27 13:08:57 +00:00
Bruce Momjian 437063bdc4 Move setlocale() outside of NLS-only defines. 2004-05-26 19:00:31 +00:00
Bruce Momjian 2a70ec1bdf Allow relative paths as long as the hardcoded path matches the bin path
up to the last bin directory name.
2004-05-25 20:47:41 +00:00
Bruce Momjian c826991dd7 Fix set_pglocale to properly pass my_exec_path to get_locale_path instead of argv0. 2004-05-25 18:18:29 +00:00
Bruce Momjian 88ca65d76b Skip settting LC_ALL in the backend. 2004-05-25 01:42:08 +00:00
Bruce Momjian 228897774c Make the locale location relocatable.
Adjust get_*_path functions to be limited to MAXPGPATH.
2004-05-25 01:00:30 +00:00
Bruce Momjian 244ee0c0f2 Remove pstrdup() call from exec.c because DLLIMPORT flag on
CurrentMemoryContext caused compile problems.

Recode to not make a copy of the PATH but copy parts out into MAXPGPATH
variables.
2004-05-24 22:35:37 +00:00
Bruce Momjian fcbc95b9a2 Make validate_exec take a const char *, for gcc 3.4, which is more
strict.
2004-05-24 20:23:50 +00:00
Tom Lane b1ea9811b3 Fix for vpath builds. 2004-05-22 02:15:08 +00:00
Tom Lane 13f96c4b6b Put path configuration information into a .h file instead of cluttering
several different module Makefiles with it.  Also, do any adjustment
of installation paths during configure, rather than every time Makefile.global
is read.
2004-05-21 20:56:50 +00:00
Tom Lane ff0b706b13 Fix random breakage in exec.c for platforms where strdup is a macro. 2004-05-21 16:06:23 +00:00
Tom Lane 63bd0db121 Integrate src/timezone library for all platforms. There is more we can
and should do now that we control our own destiny for timezone handling,
but this commit gets the bulk of the picayune diffs in place.
Magnus Hagander and Tom Lane.
2004-05-21 05:08:06 +00:00
Bruce Momjian 3255851e6a Small variable rename in exec.c. 2004-05-20 15:38:11 +00:00
Bruce Momjian ceceeffe1e Clean up find_my_exec to work cleaner.
Add Win32 code to look in the current directory before the path.

Add code so memory is allocated using palloc in backend object files.
2004-05-20 15:35:41 +00:00
Bruce Momjian ecc198bd39 Re-add elog() to exec.c, per Tom. 2004-05-19 17:15:21 +00:00
Bruce Momjian dbb9aa224e Supress verbose stderr messages while trying to find my exec path.
Per report from Christopher.
2004-05-19 04:36:33 +00:00
Bruce Momjian f16874c23d Win32 can't have the same function coming from two library object files,
so we make is_absolute_path a macro so libpq doesn't use path.o.
2004-05-19 04:21:49 +00:00
Bruce Momjian a9fad44372 Move find_my_exec() way up into main.c so it is available to the
timezone code and other places.

Remove elog() calls from find_my_exec;  do fprintf(stderr) instead.  We
can then remove the exec.c handling in the makefile because it doesn't
have to be built to suppress elog calls.
2004-05-18 20:18:59 +00:00
Bruce Momjian 3b382d1ae3 Clean up some relative path install issues with Claudio's help. 2004-05-18 03:36:45 +00:00
Bruce Momjian 3febb477e6 Reorganize code to allow path-relative installs.
Create new get_* functions to access compiled-in paths and adjust if
relative installs are to be used.

Clean up substitute_libpath_macro() code.
2004-05-17 14:35:34 +00:00
Bruce Momjian 9f944f0443 Adjust find_my_exec/find_other_exec() so that the return parameter is
last, not first.  This fits our style better.
2004-05-14 17:04:48 +00:00
Bruce Momjian f69ecb4f8c Reorganize backend code to more cleanly manage executable names and
backend startup.
2004-05-13 22:45:04 +00:00
Bruce Momjian c2e8386440 Fix Win32 bug with missing errno for strerror(). 2004-05-13 01:47:12 +00:00
Bruce Momjian b1ffacddfc Rename find_my_binary/find_other_binary to
find_my_exec/find_other_exec().  Remove passing of progname to these
functions as they can find that out from argv[0], which they already
have.

Make get_progname return const char *, and update all progname variables
to be const char *.
2004-05-12 13:38:49 +00:00
Bruce Momjian fda15b351a As part of the work for making relocatable installs, I have re-factored
all the code that looks for other binaries.  I move FindExec into
port/exec.c (and renamed it to find_my_binary()).  I also added
find_other_binary that looks for another binary in the same directory as
the calling program, and checks the version string.

The only behavior change was that initdb and pg_dump would look in the
hard-coded bindir directory if it can't find the requested binary in the
same directory as the caller.  The new code throws an error.  The old
behavior seemed too error prone for version mismatches.
2004-05-11 21:57:15 +00:00
Tom Lane 0bd61548ab Solve the 'Turkish problem' with undesirable locale behavior for case
conversion of basic ASCII letters.  Remove all uses of strcasecmp and
strncasecmp in favor of new functions pg_strcasecmp and pg_strncasecmp;
remove most but not all direct uses of toupper and tolower in favor of
pg_toupper and pg_tolower.  These functions use the same notions of
case folding already developed for identifier case conversion.  I left
the straight locale-based folding in place for situations where we are
just manipulating user data and not trying to match it to built-in
strings --- for example, the SQL upper() function is still locale
dependent.  Perhaps this will prove not to be what's wanted, but at
the moment we can initdb and pass regression tests in Turkish locale.
2004-05-07 00:24:59 +00:00
Tom Lane 9e16195f3f Second try at a portable unsetenv(). 2004-05-05 21:18:29 +00:00
Bruce Momjian 7a66015e98 Add new auto-detection of thread flags.
Allow additional thread flags to be added via port templates.

Change thread flag names to PTHREAD_CFLAGS and PTHREAD_LIBS to match new
configure script.
2004-04-23 18:15:55 +00:00
Bruce Momjian 31338352bd * Most changes are to fix warnings issued when compiling win32
* removed a few redundant defines
* get_user_name safe under win32
* rationalized pipe read EOF for win32 (UPDATED PATCH USED)
* changed all backend instances of sleep() to pg_usleep

    - except for the SLEEP_ON_ASSERT in assert.c, as it would exceed a
32-bit long [Note to patcher: If a SLEEP_ON_ASSERT of 2000 seconds is
acceptable, please replace with pg_usleep(2000000000L)]

I added a comment to that part of the code:

    /*
     *  It would be nice to use pg_usleep() here, but only does 2000 sec
     *  or 33 minutes, which seems too short.
     */
    sleep(1000000);

Claudio Natoli
2004-04-19 17:42:59 +00:00
Bruce Momjian a4c40f140d Here's an attempt at new socket and signal code for win32.
It works on the principle of turning sockets into non-blocking, and then
emulate blocking behaviour on top of that, while allowing signals to
run. Signals are now implemented using an event instead of APCs, thus
getting rid of the issue of APCs not being compatible with "old style"
sockets functions.

It also moves the win32 specific code away from pqsignal.h/c into
port/win32, and also removes the "thread style workaround" of the APC
issue previously in place.

In order to make things work, a few things are also changed in pgstat.c:

1) There is now a separate pipe to the collector and the bufferer. This
is required because the pipe will otherwise only be signalled in one of
the processes when the postmaster goes down. The MS winsock code for
select() must have some kind of workaround for this behaviour, but I
have found no stable way of doing that. You really are not supposed to
use the same socket from more than one process (unless you use
WSADuplicateSocket(), in which case the docs specifically say that only
one will be flagged).

2) The check for "postmaster death" is moved into a separate select()
call after the main loop. The previous behaviour select():ed on the
postmaster pipe, while later explicitly saying "we do NOT check for
postmaster exit inside the loop".
The issue was that the code relies on the same select() call seeing both
the postmaster pipe *and* the pgstat pipe go away. This does not always
happen, and it appears that useing WSAEventSelect() makes it even more
common that it does not.
Since it's only called when the process exits, I don't think using a
separate select() call will have any significant impact on how the stats
collector works.

Magnus Hagander
2004-04-12 16:19:18 +00:00
Bruce Momjian b8fd6756e2 Allow unlink/rename of files open by another process on Win32, using a
special Win32 open flag FILE_SHARE_DELETE.

Claudio Natoli
2004-03-24 03:54:16 +00:00
Bruce Momjian ee455f81a5 fflush() FILE buffer to descriptor so stat call gets proper size in fseeko.c.
Fixed problem with pg_dump tar backups.  Only happens on platforms that
use our port/fseeko.c, which is currently BSD/OS and NetBSD.
2004-03-23 05:26:53 +00:00
Bruce Momjian 5688e45979 Fix getpwuid_r call:
*result = getpwuid_r(uid, resultbuf, buffer, buflen);
2004-03-23 02:03:55 +00:00
Bruce Momjian aaf54d99f0 Handle draft version of getpwuid_r() that accepts only four arguments.
Backpatch to 7.4.X.  Required for Solaris 7 & 8.
2004-03-20 15:39:27 +00:00
Bruce Momjian b76c536e2e > (I also see some post-7.4.1 changes in src/template/solaris, so you
> possibly should look there too.)
[snip]
>

I think I have the fix for part of it, but this remains...

    gcc -O2 -fno-strict-aliasing -Wall -Wmissing-prototypes
    -Wmissing-declarations -fPIC -I. -I../../../src/include
    -D_POSIX_PTHREAD_SEMANTICS -DFRONTEND
    -DSYSCONFDIR='"/usr/local/pgsql/etc"'  -c -o thread.o thread.c
    thread.c: In function `pqGethostbyname':
    thread.c:189: error: `resbuf' undeclared (first use in this
function)

Looking at src/port/thread.c, line 189, it looks like somebody typo'd.
Looks like that second parameter should be "resultbuf", not "resbuf"?

Jim Seymour
2004-03-14 14:01:43 +00:00
Bruce Momjian 60a068b389 Move non-blocking code into its own /port file, for code clarity. 2004-03-10 21:12:49 +00:00
Bruce Momjian f0f4e82f45 The win32 port backend will require the functionality provided by
canonicalize_path. Patch moves it from initdb.c to port/path.c.

Claudio Natoli
2004-03-09 04:49:02 +00:00
Bruce Momjian 24262be5f9 Add missing checks for Borland C compiler.
L J Bayuk
2004-03-02 18:35:59 +00:00
Bruce Momjian 8878f4aee7 For immediate application to HEAD.
Corrects bit-rot of recently applied patch. win32/cygwin only.

Claudio Natoli
2004-02-26 02:59:26 +00:00
Bruce Momjian c672aa823b For application to HEAD, following community review.
* Changes incorrect CYGWIN defines to __CYGWIN__

* Some localtime returns NULL checks (when unchecked cause SEGVs under
Win32
regression tests)

* Rationalized CreateSharedMemoryAndSemaphores and
AttachSharedMemoryAndSemaphores (Bruce, I finally remembered to do it);
requires attention.

Claudio Natoli
2004-02-25 19:41:23 +00:00
Tom Lane 7a57a67278 Replace opendir/closedir calls throughout the backend with AllocateDir
and FreeDir routines modeled on the existing AllocateFile/FreeFile.
Like the latter, these routines will avoid failing on EMFILE/ENFILE
conditions whenever possible, and will prevent leakage of directory
descriptors if an elog() occurs while one is open.
Also, reduce PANIC to ERROR in MoveOfflineLogs() --- this is not
critical code and there is no reason to force a DB restart on failure.
All per recent trouble report from Olivier Hubaut.
2004-02-23 23:03:10 +00:00
Bruce Momjian c6f0559371 Check and set thread-safe functions separately, rather than as a single
variable.

Remove thread locking for non-thread-safe functions, instead throw a
compile error.

Platforms will have to re-run tools/thread to record their thread
safety.
2004-02-11 21:44:06 +00:00
Tom Lane d1587f1f5b Looks like we need <unistd.h> for select() on Darwin. 2004-02-10 04:23:03 +00:00
Tom Lane 58f337a343 Centralize implementation of delay code by creating a pg_usleep()
subroutine in src/port/pgsleep.c.  Remove platform dependencies from
miscadmin.h and put them in port.h where they belong.  Extend recent
vacuum cost-based-delay patch to apply to VACUUM FULL, ANALYZE, and
non-btree index vacuuming.

By the way, where is the documentation for the cost-based-delay patch?
2004-02-10 03:42:45 +00:00
Bruce Momjian 9dac52649d Win32 adjustments for dirmod and configure/configure.in. 2004-02-02 22:20:33 +00:00
Bruce Momjian d9d2ca8e8e Adjust rename on Win32 to only link to temp name while holding lock,
then release locks and loop over renaming to active file name.
2004-02-02 00:17:23 +00:00
Bruce Momjian e5e5a323ca Briefly,
* configure + Makefile changes
 * shared memory attaching in EXEC_BACKEND case (+ minor fix for apparent
cygwin bug under cygwin/EXEC_BACKEND case only)
 * PATH env var separator differences
 * missing win32 rand functions added
 * placeholder replacements for sync etc under port.h


To those who are really interested, and there are a few of you: the attached
patch + file will allow the source base to be compiled (and, for some
definition, "run") under MingW, with the following caveats (I wanted to
first properly fix all but the last of these, but y'all won't quit asking
for a patch :-):

        * child death: SIGCHLD not yet sent, so as a minimum, you'll need to
put in some sort of delay after StartupDatabase, and handle setting
StartupPID to 0 etc (ie. the stuff the reaper() signal function is supposed
to do)

        * dirmod.c: comment out the elog calls

        * dfmgr.c: some hackage required to substitute_libpath_macro

        * slru/xact.c: comment out the errno checking after the readdir
(fixed by next version of MingW)

Again, this is only if you *really* want to see postgres compile and start,
and is a nice leg-up for working on the other Win32 TODO list items. Just
don't expect too much else from it at this point...


Claudio Natoli
2004-02-02 00:11:31 +00:00
Bruce Momjian ee7fbb1eaa Add WIN32 pipe implementation that uses sockets.
Claudio Natoli
2004-01-09 04:58:09 +00:00
Bruce Momjian 49c534fccb Throw compile error if our non-thread-safe snprintf is used. 2004-01-08 17:15:54 +00:00
PostgreSQL Daemon 55b113257c make sure the $Id tags are converted to $PostgreSQL as well ... 2003-11-29 22:41:33 +00:00
PostgreSQL Daemon 969685ad44 $Header: -> $PostgreSQL Changes ... 2003-11-29 19:52:15 +00:00
Peter Eisentraut 8878cc4cd7 Rename USE_THREADS to ENABLE_THREAD_SAFETY to avoid name clash with Perl.
Fixes compilation failure with --enable-thread-safety --with-perl and Perl
5.6.1.
2003-11-24 13:16:22 +00:00
Bruce Momjian 018cf0f76e Update /port C header descriptions. 2003-11-11 23:52:45 +00:00
Bruce Momjian b80b384b78 Allow win32 client compiles with MSC.
Hiroshi Saito
2003-10-26 04:29:15 +00:00
Bruce Momjian cded27cacd Don't reference pthread.h unless we have threads enabled, per Peter. 2003-10-24 20:48:10 +00:00
Peter Eisentraut 2034a87a53 Use AROPT, not hard-coded flags. 2003-10-24 20:31:43 +00:00
Bruce Momjian d7c971ab7d Change Win32 rename/unlink timeout to 3 seconds. 2003-10-10 03:27:58 +00:00
Bruce Momjian 3e4b208285 Update docs that point to thread test program. 2003-09-29 03:32:05 +00:00
Bruce Momjian 227dd9b427 Rename thread compile flag. Move thread test program to tools/thread,
and improve tests.
2003-09-27 15:32:48 +00:00
Bruce Momjian 72ed916a1f Add errno value for thread *_r function call buffer too small. Improve
thread comments.
2003-09-15 02:30:29 +00:00
Bruce Momjian b041d3e3a1 Attempt threading in this order:
*      use non-*_r function names if they are all thread-safe
 *          (NEED_REENTRANT_FUNCS=no)
 *      use *_r functions if they exist (configure test)
 *      do our own locking and copying of non-threadsafe functions

New to this patch is the last option.
2003-09-13 14:49:51 +00:00
Tom Lane 336ebee2c0 copydir() is supposed to return on failure, not elog(ERROR). Reduce
ERROR to WARNING so we keep control.
2003-09-10 20:12:01 +00:00
Bruce Momjian e26af972b5 ifdef out pqGetpwuid() because Win32 doesn't have struct passwd.
Needed for libpq builds, not just for native Win32 port, and probably
for cygwin too.
2003-09-05 17:43:40 +00:00
Bruce Momjian 4cc247f74b Add test for thread-safeness of libc functions. 2003-09-03 19:30:31 +00:00
Bruce Momjian edc999b09a Make NEED_REENTRANT_FUNC_NAMES _require_ *_r functions, and add tests to
configure to report if they are not found.
2003-08-16 15:35:51 +00:00
Bruce Momjian 8e97f45f88 Document threading status.
Update to POSIX getpwuid_r() function.
2003-08-14 05:27:18 +00:00
Bruce Momjian c090b053fe I'm quite fond of doing VPATH builds, i.e. building outside the source
tree. This also catches lots of little Makefile bugs, so here's a small
patch for one of them (replacing an explicit reference to thread.c with
a reference to it as the first prerequsite of the rule makes make look
for it in the place where it was found (the source tree) rather than in
the build tree. (using GNU make 3.79.1)

John Gray
2003-08-13 03:12:04 +00:00
Bruce Momjian 63c4d156e0 Move simple_prompt()/sprompt.c into /port. 2003-08-08 04:52:22 +00:00
Bruce Momjian 71b9be4d56 Typo cleanup. 2003-08-08 03:09:56 +00:00
Bruce Momjian 30c63f460a More threading cleanups. 2003-08-08 02:55:08 +00:00
Bruce Momjian e4cbb982b0 threads.c -> thread.c, be consistent. 2003-08-08 02:46:40 +00:00
Bruce Momjian f3c3deb7d0 Update copyrights to 2003. 2003-08-04 02:40:20 +00:00
Bruce Momjian 089003fb46 pgindent run. 2003-08-04 00:43:34 +00:00
Tom Lane 81b5c8a136 A visit from the message-style police ... 2003-07-28 00:09:16 +00:00
Tom Lane e8db9b26d0 elog mop-up. 2003-07-27 17:10:07 +00:00
Tom Lane df63503dc2 Have a go at fixing various outstanding portability issues in code that
was modified for IPv6.  Use a robust definition of struct sockaddr_storage,
do a proper configure test to see if ss_len exists, don't assume that
getnameinfo() will handle AF_UNIX sockets, don't trust getaddrinfo to
return the protocol we ask for, etc.  This incorporates several outstanding
patches from Kurt Roeckx, but I'm to blame for anything that doesn't
work ...
2003-07-23 23:30:41 +00:00
Bruce Momjian 99308891ef Remove references to sa_family_t, except when SOCKADDR_STORAGE requires
it.

Also handle __ss_family as a synonym for ss_family.

Kurt Roeckx
2003-06-23 23:52:00 +00:00
Bruce Momjian 467839df26 Handle threading in two more gethostbyname calls. 2003-06-14 18:20:33 +00:00
Bruce Momjian 62b532b736 Add thread.c for libpq threading, and hook it into libpq/configure. 2003-06-14 14:35:42 +00:00
Bruce Momjian b14295cfe4 Attached is the complete diff against current CVS.
Compiles on BCC 5.5 and VC++ 6.0 (with warnings).

Karl Waclawek
2003-06-12 08:15:29 +00:00
Bruce Momjian dc4ee8a833 Back out patch that got bundled into another patch. 2003-06-12 08:11:07 +00:00
Bruce Momjian a647e30ba3 New patch with corrected README attached.
Also quickly added mention that it may be a qualified schema name.

Rod Taylor
2003-06-12 08:02:57 +00:00
Bruce Momjian b4cea00a1f IPv6 cleanups.
Kurt Roeckx
Andrew Dunstan
2003-06-12 07:36:51 +00:00
Bruce Momjian c42581eba3 Allow interfaces to compile under MingGW/Win32 by adding _P to symbols
in ecpg.
2003-05-16 04:59:24 +00:00
Bruce Momjian ec5e0ef791 Reorganize Win32 includes to only include <port.h> after system includes
under Win32.  Also fix other compile issues.
2003-05-16 01:57:52 +00:00
Bruce Momjian 09aad5a3a6 Add copydir() function because xcopy doesn't work in XP without a
window.
2003-05-15 17:59:17 +00:00
Bruce Momjian 12c9423832 Allow Win32 to compile under MinGW. Major changes are:
Win32 port is now called 'win32' rather than 'win'
        add -lwsock32 on Win32
        make gethostname() be only used when kerberos4 is enabled
        use /port/getopt.c
        new /port/opendir.c routines
        disable GUC unix_socket_group on Win32
        convert some keywords.c symbols to KEYWORD_P to prevent conflict
        create new FCNTL_NONBLOCK macro to turn off socket blocking
        create new /include/port.h file that has /port prototypes, move
          out of c.h
        new /include/port/win32_include dir to hold missing include files
        work around ERROR being defined in Win32 includes
2003-05-15 16:35:30 +00:00
Bruce Momjian 199f24e19d More crypt() cleanup. 2003-05-10 04:06:55 +00:00
Bruce Momjian 37627eb571 Remove HPUX 9 rint() test.
Cleanup new crypt() source code.
2003-05-10 04:03:37 +00:00
Bruce Momjian 66e0a8cb39 Add crypt() to /port for Win32. 2003-05-09 16:52:11 +00:00
Bruce Momjian 0afe5417d7 Add rint() to /port, remove from qnx/. 2003-05-09 16:26:29 +00:00
Bruce Momjian 4207d6bf30 Add opendir/readdir/closedir() for Win32.
Keep SRA copyright on file because it contains BSD license clause.
2003-05-09 01:16:29 +00:00
Tom Lane d08007ae77 Make getaddrinfo's behavior with NULL node parameter agree with the
Linux man page for it.  This error was preventing CVS tip from accepting
remote connections.
2003-04-27 23:56:53 +00:00
Bruce Momjian 3126c78b1a Add comments to replace/unlink Win32 functions. 2003-04-24 16:40:17 +00:00
Bruce Momjian b952f0ef9b Add Win32 unlink/rename file. 2003-04-22 02:18:48 +00:00
Bruce Momjian d46e643822 Add Win32 path handling for / vs. \ and drive letters. 2003-04-04 20:42:13 +00:00
Tom Lane 1da6eb7fda Whack getaddrinfo() patch around until it works, more or less, on
machines without IPv6.  Or at least it works on HPUX 10.20 ...
2003-04-02 00:49:28 +00:00
Peter Eisentraut 82a91eb54e Simplify the socket handling code by supplying a replacement getaddrinfo()
function if the OS doesn't provide one.
2003-03-29 11:31:52 +00:00
Bruce Momjian bb6652552a Back out flockfile change for NetBSD. Giles Lean reports they are not
supported.
2003-01-11 19:38:23 +00:00
Peter Eisentraut 939a59ffc6 Use our own version of getopt_long() if the OS doesn't have one. 2003-01-06 18:53:25 +00:00
Bruce Momjian 7e4d4354bc flockfile/funlockfile is POSIX, so NetBSD has them too --- use them. 2003-01-02 23:22:49 +00:00
Bruce Momjian 2f86f146d9 Fix BSD/OS thread file locking bug in new fseeko code.
Backpatch to 7.3.X.
2003-01-02 06:00:33 +00:00
Bruce Momjian 972c7b8690 Update comments. 2002-10-29 04:24:30 +00:00
Bruce Momjian 87a3e39e7c Re-add getopt.c for MSWin psql. 2002-10-29 04:22:37 +00:00
Bruce Momjian 323e03aed4 fseeko NetBSD fix. 2002-10-28 00:00:25 +00:00
Bruce Momjian b171f5956e Fix include for NetBSD. 2002-10-24 04:48:08 +00:00
Bruce Momjian 68214218be Add prototype include to fseeko.c. 2002-10-24 04:33:46 +00:00
Bruce Momjian 4668d54f0b Add fseeko for NetBSD. 2002-10-24 03:11:05 +00:00
Bruce Momjian 586510f774 Improve coding style of new function. 2002-10-23 21:39:27 +00:00
Bruce Momjian 6b9d496988 Make BSD/OS fseeko thread-safe. 2002-10-23 21:16:17 +00:00
Bruce Momjian dc4d18e056 Add fseeko/ftello using fsetpos/fgetpos for BSD/OS. 2002-10-23 20:56:24 +00:00
Bruce Momjian e50f52a074 pgindent run. 2002-09-04 20:31:48 +00:00
Bruce Momjian 97ac103289 Remove sys/types.h in files that include postgres.h, and hence c.h,
because c.h has sys/types.h.
2002-09-02 02:47:07 +00:00
Tom Lane c024fa4cb5 Remove use of __P so that <sys/cdefs.h> is not needed. Per suggestion
from Martin Renters.
2002-08-12 15:24:07 +00:00
Peter Eisentraut b0c3c48eb3 Assemble portability modules into libpgport library.
Some makefile simplifications.
2002-07-27 20:10:05 +00:00
Bruce Momjian 33b3c95200 Complete TODO item:
* -Add BSD-licensed qsort() for Solaris
2002-07-19 17:35:11 +00:00
Bruce Momjian 404e9a12a5 Move libc replacement files from src/backend/port to src/port. 2002-07-18 04:13:59 +00:00
Marc G. Fournier 9956fa056a remove the port related .h files from the top level directory.
Moved to include/port
1997-04-12 10:20:20 +00:00
Marc G. Fournier 986bfc5053 Misc port related issues 1997-04-01 09:27:11 +00:00
Marc G. Fournier c2e73db87a Various patches for shared libraries under i386-solaris by:
Christoph Kaesling <ck@dog.pfalz.sub.de>
1997-03-25 09:21:59 +00:00
Marc G. Fournier d2a386d6e3 MOre univel port patches/files from:
"Michael P. Snyder" <msnyder@hawkeye.huntersmoon.com>
1997-03-25 07:54:53 +00:00
Marc G. Fournier 7fae43654b Needs USE_POSIX_SIGNALS
Pointed out by Dan McGuirk
1997-03-25 00:52:12 +00:00
Marc G. Fournier bf872f0aff From: "D'Arcy J.M. Cain" <darcy@druid.net>
Subject: [HACKERS] libpq/pqcomm stuff and Solaris byte order

I decided to go ahead with the required changes since no one else seems
to.  I don't guarantee that it is perfect but with these changes the
package actually compiles.  While I was at it I added to the Sparc
Solaris header to define the byte order.  Note that NetBSD sets this
in the system headers so it wasn't required there.

In particular, someone may want to check whether I removed the correct
84 lines from backend/libpq/pqcomprim.c.
1997-03-20 18:23:33 +00:00
Marc G. Fournier d62267c707 Improvements to the ultrix port, in particular a bunch of compiler
quieting prototyping in port/ultrix4.h

Submitted by: Erik Bertelsen <erik@sockdev.uni-c.dk>
1997-02-13 09:54:14 +00:00
Marc G. Fournier a5494a2d92 Various patches for nextstep by GregorHoffleit
Replaced NEED_STRDUP by !HAVE_STRDUP
1997-02-13 08:32:20 +00:00
Marc G. Fournier 5d9f146c64 What looks like some *major* improvements to btree indexing...
Patches from: aoki@CS.Berkeley.EDU (Paul M. Aoki)

i gave jolly my btree bulkload code a long, long time ago but never
gave him a bunch of my bugfixes.  here's a diff against the 6.0
baseline.

for some reason, this code has slowed down somewhat relative to the
insertion-build code on very small tables.  don't know why -- it used
to be within about 10%.  anyway, here are some (highly unscientific!)
timings on a dec 3000/300 for synthetic tables with 10k, 100k and
1000k tuples (basically, 1mb, 10mb and 100mb heaps).  'c' means
clustered (pre-sorted) inputs and 'u' means unclustered (randomly
ordered) inputs.  the 10k table basically fits in the buffer pool, but
the 100k and 1000k tables don't.  as you can see, insertion build is
fine if you've sorted your heaps on your index key or if your heap
fits in core, but is absolutely horrible on unordered data (yes,
that's 7.5 hours to index 100mb of data...) because of the zillions of
random i/os.

if it doesn't work for you for whatever reason, you can always turn it
back off by flipping the FastBuild flag in nbtree.c.  i don't have
time to maintain it.

good luck!

baseline code:

time psql -c 'create index c10 on k10 using btree (c int4_ops)' bttest
real   8.6
time psql -c 'create index u10 on k10 using btree (b int4_ops)' bttest
real   9.1
time psql -c 'create index c100 on k100 using btree (c int4_ops)' bttest
real   59.2
time psql -c 'create index u100 on k100 using btree (b int4_ops)' bttest
real   652.4
time psql -c 'create index c1000 on k1000 using btree (c int4_ops)' bttest
real   636.1
time psql -c 'create index u1000 on k1000 using btree (b int4_ops)' bttest
real   26772.9

bulkloading code:

time psql -c 'create index c10 on k10 using btree (c int4_ops)' bttest
real   11.3
time psql -c 'create index u10 on k10 using btree (b int4_ops)' bttest
real   10.4
time psql -c 'create index c100 on k100 using btree (c int4_ops)' bttest
real   59.5
time psql -c 'create index u100 on k100 using btree (b int4_ops)' bttest
real   63.5
time psql -c 'create index c1000 on k1000 using btree (c int4_ops)' bttest
real   636.9
time psql -c 'create index u1000 on k1000 using btree (b int4_ops)' bttest
real   701.0
1997-02-12 05:04:52 +00:00
Marc G. Fournier e7c767b477 Try to further reduce the PORT dependencies.
Essentially, config.h now includes an 'os.h', which is created via
configure by linking a "port.h" file from the port directory to the
include directory.

Going to try to merge backend/port in similar ways
1997-02-09 04:34:07 +00:00