diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 1eb0ff95c29f6fcb2cbe94efcaac61ce8ce5f7f2..3d8eb7b1ff069bad1d9ca3db3d1a10952b0ebe29 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -22,7 +22,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.203 2001/04/22 21:34:13 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.204 2001/04/23 23:36:33 tgl Exp $
  *
  * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
  *
@@ -948,6 +948,19 @@ main(int argc, char **argv)
 		exit(1);
 	}
 
+	/* Get the target database name */
+	if (optind < argc)
+		dbname = argv[optind];
+	else
+		dbname = getenv("PGDATABASE");
+	if (!dbname)
+	{
+		fprintf(stderr,
+				"%s: no database name specified\n",
+				progname);
+		exit(1);
+	}
+
 	if (dataOnly && schemaOnly)
 	{
 		fprintf(stderr,
@@ -1022,8 +1035,6 @@ main(int argc, char **argv)
 	/* Let the archiver know how noisy to be */
 	g_fout->verbose = g_verbose;
 
-	dbname = argv[optind];
-
 	/*
 	 * Open the database using the Archiver, so it knows about it. Errors
 	 * mean death