From f023fc6689bae02908e73c4cd7cf6e98c09ce9d7 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Tue, 2 Aug 2005 15:17:24 +0000
Subject: [PATCH] Use ReadDir() not readdir() so as to have some modicum of
 error checking.

---
 src/backend/utils/adt/dbsize.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c
index 57b72fe15cc..e86f828f559 100644
--- a/src/backend/utils/adt/dbsize.c
+++ b/src/backend/utils/adt/dbsize.c
@@ -1,11 +1,11 @@
 /*
  * dbsize.c
- * object size functions
+ *		object size functions
  *
  * Copyright (c) 2002-2005, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/adt/dbsize.c,v 1.2 2005/08/02 14:07:27 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/adt/dbsize.c,v 1.3 2005/08/02 15:17:24 tgl Exp $
  *
  */
 
@@ -40,7 +40,7 @@ db_dir_size(const char *path)
 	if (!dirdesc)
 	    return 0;
 
-	while ((direntry = readdir(dirdesc)) != NULL)
+	while ((direntry = ReadDir(dirdesc, path)) != NULL)
 	{
 	    struct stat fst;
 
@@ -71,6 +71,7 @@ calculate_database_size(Oid dbOid)
 	int64		totalsize = 0;
 	DIR         *dirdesc;
     struct dirent *direntry;
+	char dirpath[MAXPGPATH];
 	char pathname[MAXPGPATH];
 
 	/* Shared storage in pg_global is not counted */
@@ -80,15 +81,15 @@ calculate_database_size(Oid dbOid)
 	totalsize += db_dir_size(pathname);
 
 	/* Scan the non-default tablespaces */
-	snprintf(pathname, MAXPGPATH, "%s/pg_tblspc", DataDir);
-	dirdesc = AllocateDir(pathname);
+	snprintf(dirpath, MAXPGPATH, "%s/pg_tblspc", DataDir);
+	dirdesc = AllocateDir(dirpath);
 	if (!dirdesc)
 	    ereport(ERROR,
 				(errcode_for_file_access(),
 				 errmsg("could not open tablespace directory \"%s\": %m",
-						pathname)));
+						dirpath)));
 
-	while ((direntry = readdir(dirdesc)) != NULL)
+	while ((direntry = ReadDir(dirdesc, dirpath)) != NULL)
 	{
 	    if (strcmp(direntry->d_name, ".") == 0 ||
 			strcmp(direntry->d_name, "..") == 0)
@@ -161,7 +162,7 @@ calculate_tablespace_size(Oid tblspcOid)
 				 errmsg("could not open tablespace directory \"%s\": %m",
 						tblspcPath)));
 
-	while ((direntry = readdir(dirdesc)) != NULL)
+	while ((direntry = ReadDir(dirdesc, tblspcPath)) != NULL)
 	{
 	    struct stat fst;
 
-- 
GitLab