]> granicus.if.org Git - postgresql/commitdiff
From: Tom Lane <tgl@sss.pgh.pa.us>
authorMarc G. Fournier <scrappy@hub.org>
Thu, 9 Jul 1998 03:35:39 +0000 (03:35 +0000)
committerMarc G. Fournier <scrappy@hub.org>
Thu, 9 Jul 1998 03:35:39 +0000 (03:35 +0000)
I see someone missed an ancient bit of shell-scripting lore:
on some older shells, if your script's argument list is empty,
then "$@" generates an empty-string word rather than no word
at all.  You need to write ${1+"$@"} to get the latter behavior.
(Read your shell man page to see exactly how that works,
but it does the Right Thing on every Bourne shell.)

In particular, pg_dumpall fails when invoked without any switches
on HPUX 9.*, because pg_dump gets an empty-string argument that it
thinks is the name of the database to dump.  I expect this bug
also affects some other OSes, but couldn't tell you just which ones.
Patch attached.

src/bin/pg_dump/pg_dumpall

index 4651987b80d26a9dbaf21278d0f99583ba98055a..48e313afec89cef98fe60252c21439b5871abbc3 100644 (file)
@@ -58,7 +58,7 @@ do
        echo "${BS}connect template1 $POSTGRES_USER"
        echo "create database $DATABASE;"
        echo "${BS}connect $DATABASE $POSTGRES_USER"
-       pg_dump "$@" $DATABASE
+       pg_dump ${1+"$@"} $DATABASE
        if [ "$?" -ne 0 ]
        then    echo "pg_dump failed on $DATABASE, exiting" 1>&2
                exit 1