From fbcc0d69e81ce679a29182cbecc9ffa09b9cf239 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Mon, 18 Feb 2002 05:48:45 +0000
Subject: [PATCH] Fix param handling of create* admin scripts as described
 months ago. Properly handles default values.

---
 doc/src/sgml/ref/vacuumdb.sgml |  6 +++---
 src/bin/scripts/createdb       | 16 +++++++++++-----
 src/bin/scripts/createlang.sh  |  7 ++++++-
 src/bin/scripts/createuser     |  7 ++++++-
 src/bin/scripts/dropdb         |  7 ++++++-
 src/bin/scripts/droplang       |  7 ++++++-
 src/bin/scripts/dropuser       |  7 ++++++-
 src/bin/scripts/vacuumdb       | 16 ++++++++++++----
 8 files changed, 56 insertions(+), 17 deletions(-)

diff --git a/doc/src/sgml/ref/vacuumdb.sgml b/doc/src/sgml/ref/vacuumdb.sgml
index 57420d6f518..b1c3cab01a8 100644
--- a/doc/src/sgml/ref/vacuumdb.sgml
+++ b/doc/src/sgml/ref/vacuumdb.sgml
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/vacuumdb.sgml,v 1.20 2001/12/08 03:24:40 thomas Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/vacuumdb.sgml,v 1.21 2002/02/18 05:48:43 momjian Exp $
 PostgreSQL documentation
 -->
 
@@ -23,13 +23,13 @@ PostgreSQL documentation
   <cmdsynopsis>
    <command>vacuumdb</command>
    <arg rep="repeat"><replaceable>connection-options</replaceable></arg>
-   <arg><arg>-d</arg> <replaceable>dbname</replaceable></arg>
    <group><arg>--full</arg><arg>-f</arg></group>
    <group><arg>--verbose</arg><arg>-v</arg></group>
    <group><arg>--analyze</arg><arg>-z</arg></group>
-   <arg>--table '<replaceable>table</replaceable>
+   <arg>--table | -t '<replaceable>table</replaceable>
     <arg>( <replaceable class="parameter">column</replaceable> [,...] )</arg>'
    </arg>
+   <arg><replaceable>dbname</replaceable></arg>
    <sbr>
    <command>vacuumdb</command>
    <arg rep="repeat"><replaceable>connection-options</replaceable></arg>
diff --git a/src/bin/scripts/createdb b/src/bin/scripts/createdb
index 95e8c12d757..34562440461 100644
--- a/src/bin/scripts/createdb
+++ b/src/bin/scripts/createdb
@@ -12,7 +12,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createdb,v 1.18 2001/09/30 22:17:51 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createdb,v 1.19 2002/02/18 05:48:44 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -104,11 +104,17 @@ do
 		exit 1
 		;;
 	*)
-		if [ -z "$dbname" ]; then
-			dbname="$1"
-		else
+		dbname="$1"
+		if [ "$2" ]
+		then
+			shift
 			dbcomment="$1"
 		fi
+		if [ "$#" -ne 1 ]; then
+			echo "$CMDNAME: invalid option: $2" 1>&2
+	                echo "Try '$CMDNAME --help' for more information." 1>&2
+			exit 1
+		fi
 		;;
     esac
     shift
@@ -118,7 +124,7 @@ if [ "$usage" ]; then
         echo "$CMDNAME creates a PostgreSQL database."
         echo
 	echo "Usage:"
-        echo "  $CMDNAME [options] dbname [description]"
+        echo "  $CMDNAME [options] [dbname] [description]"
         echo
 	echo "Options:"
 	echo "  -D, --location=PATH             Alternative place to store the database"
diff --git a/src/bin/scripts/createlang.sh b/src/bin/scripts/createlang.sh
index 881257157bc..5034f65cbe6 100644
--- a/src/bin/scripts/createlang.sh
+++ b/src/bin/scripts/createlang.sh
@@ -7,7 +7,7 @@
 # Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createlang.sh,v 1.32 2002/01/03 05:30:04 momjian Exp $
+# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createlang.sh,v 1.33 2002/02/18 05:48:44 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -116,6 +116,11 @@ do
 			fi
 		else	dbname="$1"
 		fi
+		if [ "$#" -ne 1 ]; then
+			echo "$CMDNAME: invalid option: $2" 1>&2
+	                echo "Try '$CMDNAME --help' for more information." 1>&2
+			exit 1
+		fi
                 ;;
     esac
     shift
diff --git a/src/bin/scripts/createuser b/src/bin/scripts/createuser
index fa20aa101cf..02e97c58c42 100644
--- a/src/bin/scripts/createuser
+++ b/src/bin/scripts/createuser
@@ -9,7 +9,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createuser,v 1.22 2001/09/30 22:17:51 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createuser,v 1.23 2002/02/18 05:48:44 momjian Exp $
 #
 # Note - this should NOT be setuid.
 #
@@ -123,6 +123,11 @@ do
 		;;
          *)
 		NewUser="$1"
+		if [ "$#" -ne 1 ]; then
+			echo "$CMDNAME: invalid option: $2" 1>&2
+	                echo "Try '$CMDNAME --help' for more information." 1>&2
+			exit 1
+		fi
 		;;
     esac
     shift;
diff --git a/src/bin/scripts/dropdb b/src/bin/scripts/dropdb
index 75ad3cea762..42ff00a0a15 100644
--- a/src/bin/scripts/dropdb
+++ b/src/bin/scripts/dropdb
@@ -11,7 +11,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/dropdb,v 1.13 2001/09/30 22:17:51 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/dropdb,v 1.14 2002/02/18 05:48:44 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -89,6 +89,11 @@ do
 		;;
 	 *)
 		dbname="$1"
+		if [ "$#" -ne 1 ]; then
+			echo "$CMDNAME: invalid option: $2" 1>&2
+	                echo "Try '$CMDNAME --help' for more information." 1>&2
+			exit 1
+		fi
 		;;
     esac
     shift
diff --git a/src/bin/scripts/droplang b/src/bin/scripts/droplang
index b56d73ec354..579c570cf72 100644
--- a/src/bin/scripts/droplang
+++ b/src/bin/scripts/droplang
@@ -7,7 +7,7 @@
 # Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/droplang,v 1.20 2002/01/03 08:53:00 momjian Exp $
+# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/droplang,v 1.21 2002/02/18 05:48:44 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -105,6 +105,11 @@ do
 			fi
 		else	dbname="$1"
 		fi
+		if [ "$#" -ne 1 ]; then
+			echo "$CMDNAME: invalid option: $2" 1>&2
+	                echo "Try '$CMDNAME --help' for more information." 1>&2
+			exit 1
+		fi
                 ;;
     esac
     shift
diff --git a/src/bin/scripts/dropuser b/src/bin/scripts/dropuser
index ed95ec6c739..298710ee3b7 100644
--- a/src/bin/scripts/dropuser
+++ b/src/bin/scripts/dropuser
@@ -9,7 +9,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/dropuser,v 1.14 2001/09/30 22:17:51 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/dropuser,v 1.15 2002/02/18 05:48:45 momjian Exp $
 #
 # Note - this should NOT be setuid.
 #
@@ -91,6 +91,11 @@ do
 		;;
          *)
 		DelUser="$1"
+		if [ "$#" -ne 1 ]; then
+			echo "$CMDNAME: invalid option: $2" 1>&2
+	                echo "Try '$CMDNAME --help' for more information." 1>&2
+			exit 1
+		fi
 		;;
     esac
     shift;
diff --git a/src/bin/scripts/vacuumdb b/src/bin/scripts/vacuumdb
index 35c8cc4b3bd..b14991d178d 100644
--- a/src/bin/scripts/vacuumdb
+++ b/src/bin/scripts/vacuumdb
@@ -12,7 +12,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/vacuumdb,v 1.19 2001/09/30 22:17:51 momjian Exp $
+#    $Header: /cvsroot/pgsql/src/bin/scripts/Attic/vacuumdb,v 1.20 2002/02/18 05:48:45 momjian Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -112,6 +112,11 @@ do
 		;;
 	*)
 		dbname="$1"
+		if [ "$#" -ne 1 ]; then
+			echo "$CMDNAME: invalid option: $2" 1>&2
+	                echo "Try '$CMDNAME --help' for more information." 1>&2
+			exit 1
+		fi
 		;;
     esac
     shift
@@ -151,9 +156,12 @@ if [ "$alldb" ]; then
 	dbname=`${PATHNAME}psql $PSQLOPT -q -t -A -d template1 -c 'SELECT datname FROM pg_database WHERE datallowconn'`
 
 elif [ -z "$dbname" ]; then
-	echo "$CMDNAME: missing required argument: database name" 1>&2
-        echo "Try '$CMDNAME -?' for help." 1>&2
-	exit 1
+        if [ "$PGUSER" ]; then
+                dbname="$PGUSER"
+        else
+                dbname=`${PATHNAME}pg_id -u -n`
+        fi
+        [ "$?" -ne 0 ] && exit 1
 fi
 
 for db in $dbname
-- 
GitLab