diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 0df4bf264146fbd5d604b3454fdd8a7a7a1f41c5..a7fb1ed3a3f42855f87a6e2ba04125fe5aa53482 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.59 1999/03/17 22:53:19 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.60 1999/05/22 19:49:42 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -612,22 +612,12 @@ ProcessUtility(Node *parsetree,
 		case T_LoadStmt:
 			{
 				LoadStmt   *stmt = (LoadStmt *) parsetree;
-				FILE	   *fp;
-				char	   *filename;
 
 				PS_SET_STATUS(commandTag = "LOAD");
 				CHECK_IF_ABORTED();
 
-				filename = stmt->filename;
-				closeAllVfds();
-#ifndef __CYGWIN32__
-				if ((fp = AllocateFile(filename, "r")) == NULL)
-#else
-				if ((fp = AllocateFile(filename, "rb")) == NULL)
-#endif
-					elog(ERROR, "LOAD: could not open file '%s'", filename);
-				FreeFile(fp);
-				load_file(filename);
+				closeAllVfds();	/* probably not necessary... */
+				load_file(stmt->filename);
 			}
 			break;
 
diff --git a/src/backend/utils/fmgr/dfmgr.c b/src/backend/utils/fmgr/dfmgr.c
index 29949caad2afea04eb595b2c341f2146a832aacd..4b625bfc7c5250b9b4b8c85ea6eb5dcf2f9e187b 100644
--- a/src/backend/utils/fmgr/dfmgr.c
+++ b/src/backend/utils/fmgr/dfmgr.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.24 1999/05/10 00:46:13 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.25 1999/05/22 19:49:41 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -148,7 +148,7 @@ handle_load(char *filename, char *funcname)
 		if (file_scanner == (DynamicFileList *) NULL)
 		{
 			if (stat(filename, &stat_buf) == -1)
-				elog(ERROR, "stat failed on file %s", filename);
+				elog(ERROR, "stat failed on file '%s': %m", filename);
 
 			for (file_scanner = file_list;
 				 file_scanner != (DynamicFileList *) NULL
@@ -237,13 +237,17 @@ void
 load_file(char *filename)
 {
 	DynamicFileList *file_scanner,
-			   *p;
+				   *p;
 	struct stat stat_buf;
-
 	int			done = 0;
 
+	/*
+	 * We need to do stat() in order to determine whether this is the
+	 * same file as a previously loaded file; it's also handy so as to
+	 * give a good error message if bogus file name given.
+	 */
 	if (stat(filename, &stat_buf) == -1)
-		elog(ERROR, "stat failed on file %s", filename);
+		elog(ERROR, "LOAD: could not open file '%s': %m", filename);
 
 	if (file_list != (DynamicFileList *) NULL
 		&& !NOT_EQUAL(stat_buf, *file_list))