From 7b077af5000cb94b8547b62ee45697cf6bf806ef Mon Sep 17 00:00:00 2001
From: Joe Conway <mail@joeconway.com>
Date: Mon, 7 Mar 2016 15:14:20 -0800
Subject: [PATCH] Make get_controlfile() error logging consistent with
 src/common

As originally committed, get_controlfile() used a non-standard approach
to error logging. Make it consistent with the majority of error logging
done in src/common.

Applies to master only.
---
 src/common/controldata_utils.c | 40 +++++++++++++++++++---------------
 1 file changed, 23 insertions(+), 17 deletions(-)

diff --git a/src/common/controldata_utils.c b/src/common/controldata_utils.c
index b6d0a128f7f..6867c03bee5 100644
--- a/src/common/controldata_utils.c
+++ b/src/common/controldata_utils.c
@@ -28,19 +28,6 @@
 #include "common/controldata_utils.h"
 #include "port/pg_crc32c.h"
 
-#ifndef FRONTEND
-/* NOTE: caller must provide gettext call around the format string */
-#define log_error(...)	\
-	elog(ERROR, __VA_ARGS__)
-#else
-#define log_error(...)	\
-	do { \
-			char *buf = psprintf(__VA_ARGS__); \
-			fprintf(stderr, "%s: %s\n", progname, buf); \
-			exit(2); \
-	} while (0)
-#endif
-
 /*
  * get_controlfile(char *DataDir, const char *progname)
  *
@@ -59,12 +46,31 @@ get_controlfile(char *DataDir, const char *progname)
 	snprintf(ControlFilePath, MAXPGPATH, "%s/global/pg_control", DataDir);
 
 	if ((fd = open(ControlFilePath, O_RDONLY | PG_BINARY, 0)) == -1)
-		log_error(_("could not open file \"%s\" for reading: %s"),
-				  ControlFilePath, strerror(errno));
+#ifndef FRONTEND
+		ereport(ERROR,
+				(errcode_for_file_access(),
+				errmsg("could not open file \"%s\" for reading: %m",
+					   ControlFilePath)));
+#else
+	{
+		fprintf(stderr, _("%s: could not open file \"%s\" for reading: %s\n"),
+				progname, ControlFilePath, strerror(errno));
+		exit(EXIT_FAILURE);
+	}
+#endif
 
 	if (read(fd, ControlFile, sizeof(ControlFileData)) != sizeof(ControlFileData))
-		log_error(_("could not read file \"%s\": %s"),
-				  ControlFilePath, strerror(errno));
+#ifndef FRONTEND
+		ereport(ERROR,
+				(errcode_for_file_access(),
+				errmsg("could not read file \"%s\": %m", ControlFilePath)));
+#else
+	{
+		fprintf(stderr, _("%s: could not read file \"%s\": %s\n"),
+				progname, ControlFilePath, strerror(errno));
+		exit(EXIT_FAILURE);
+	}
+#endif
 
 	close(fd);
 
-- 
GitLab