Commit Graph

393 Commits

Author SHA1 Message Date
Bruce Momjian 208ae0c290 When system() fails in Win32, report it as an exception, print the
exception value in hex, and give a URL where the value can be looked-up.
2007-01-22 18:31:51 +00:00
Alvaro Herrera 5b4a08896b Change the sed rules in the regression test for pg_regress hackery to create
the generated files, to help Visual C++ to run these tests.  The tests still
pass in VPATH and normal builds.

Patch from Magnus Hagander, editorialized by me.
2007-01-19 16:42:24 +00:00
Bruce Momjian 29dccf5fe0 Update CVS HEAD for 2007 copyright. Back branches are typically not
back-stamped for this.
2007-01-05 22:20:05 +00:00
Bruce Momjian 1c3b43cddd Stamp major release 8.3.0, and increment library version numbers. 2007-01-05 20:54:43 +00:00
Bruce Momjian 1e22e60505 Patch of Win32 Encoding problem for server messages using
FormatMessage() (This should have been in 8.2.0, patched to 8.2.X and
HEAD):

I think this problem to be complex....
http://archives.postgresql.org/pgsql-hackers/2006-11/msg00042.php

FormatMessage of windows cannot consider the encoding of the database.
However, I should try the solution now. It is necessary to clear the
problem.

Multi character-code exists together in message and log. It doesn't
consider
the data base encoding that the user intended....

The user in multi-byte country can try this.
http://inet.winpg.jp/~saito/pg_bug/MessageCheck.c

That is, it is likely to become it in this manner.(Japanese)
http://inet.winpg.jp/~saito/pg_bug/FormatMessage998.png

Hiroshi Saito
2006-12-04 22:23:40 +00:00
Andrew Dunstan 796a3f373a protect vfprintf from hijacking by Windows gettext just like other members of the *printf family. 2006-11-28 01:12:34 +00:00
Tom Lane dcbdf9b1d4 Change Windows rename and unlink substitutes so that they time out after
30 seconds instead of retrying forever.  Also modify xlog.c so that if
it fails to rename an old xlog segment up to a future slot, it will
unlink the segment instead.  Per discussion of bug #2712, in which it
became apparent that Windows can handle unlinking a file that's being
held open, but not renaming it.
2006-11-08 20:12:05 +00:00
Tom Lane 4887f5f979 Rename our substitute qsort to pg_qsort at the link-symbol level (but
provide a macro so code can still just say qsort).  Avoids linker warnings
on pickier platforms such as Darwin, and outright failure on MSVC.
2006-10-19 20:56:22 +00:00
Tom Lane b38900c767 Use Min() instead of min() in qsort, for consistency and to avoid
redefined-macro warnings on some platforms.  Per gripe from Hiroshi Saito.
2006-10-12 15:04:55 +00:00
Tom Lane 953893822b Fix thinko in comment. 2006-10-07 21:48:43 +00:00
Bruce Momjian f99a569a2e pgindent run for 8.2. 2006-10-04 00:30:14 +00:00
Tom Lane 6edd2b4a91 Switch over to using our own qsort() all the time, as has been proposed
repeatedly.  Now that we don't have to worry about memory leaks from
glibc's qsort, we can safely put CHECK_FOR_INTERRUPTS into the tuplesort
comparators, as was requested a couple months ago.  Also, get rid of
non-reentrancy and an extra level of function call in tuplesort.c by
providing a variant qsort_arg() API that passes an extra void * argument
through to the comparison routine.  (We might want to use that in other
places too, I didn't look yet.)
2006-10-03 22:18:23 +00:00
Bruce Momjian e15ce612b5 Cleanup pgwin32_open() 'if' test, and avoid possible error. 2006-10-03 20:44:18 +00:00
Bruce Momjian b65b2cead5 Add URL about strlcpy() creation history. 2006-10-02 23:58:59 +00:00
Tom Lane c92f7e258e Replace strncpy with strlcpy in selected places that seem possibly relevant
to performance.  (A wholesale effort to get rid of strncpy should be
undertaken sometime, but not during beta.)  This commit also fixes dynahash.c
to correctly truncate overlength string keys for hashtables, so that its
callers don't have to anymore.
2006-09-27 18:40:10 +00:00
Tom Lane 996b203e62 Add strlcpy() to the set of functions supported by src/port/ when not
available directly on the platform.  Per discussion, this function is
sufficiently widely recognized to be treated as standard.
2006-09-27 16:29:46 +00:00
Tom Lane 9ba4065312 Remove separate strdup.h header file; it's redundant with port.h. 2006-09-27 15:41:24 +00:00
Tom Lane 1d0969041e Fix incorrect mapping of fopen mode 'a' in recently-added code to
make fopen work safely on Windows.  Magnus
2006-09-24 17:19:53 +00:00
Tom Lane beca984e5f Fix bugs in plpgsql and ecpg caused by assuming that isspace() would only
return true for exactly the characters treated as whitespace by their flex
scanners.  Per report from Victor Snezhko and subsequent investigation.

Also fix a passel of unsafe usages of <ctype.h> functions, that is, ye olde
char-vs-unsigned-char issue.  I won't miss <ctype.h> when we are finally
able to stop using it.
2006-09-22 21:39:58 +00:00
Tom Lane 568b80168f Move set_pglocale_pgservice() from path.c to exec.c, so that pulling in
path.c does not in itself force linking of both exec.c and libintl.
Should fix current ecpglib build failure on pickier platforms.
2006-09-11 20:10:30 +00:00
Tom Lane 3a6e2ff08a Fix things so that fopen's, not only open's, pass FILE_SHARE_DELETE
and other special flags on Windows.  May fix intermittent 'Permission
denied' errors.  Magnus Hagander
2006-08-30 18:06:27 +00:00
Tom Lane 88295244be copydir() and rmtree() need to use lstat, not stat, to behave as expected
with symlinks.  Noted while trying to use rmtree in new C-code pg_regress.
2006-07-18 22:36:46 +00:00
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