From 162e8f1fd53eb485e0b7c22331444f245420d3ba Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sun, 27 Aug 2006 15:05:20 +0000
Subject: [PATCH] Make saveHistory work properly on OS X when HISTFILE is set
 to /dev/null. Per discussion with Martin Atukunda.

---
 src/bin/psql/input.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/bin/psql/input.c b/src/bin/psql/input.c
index 4041177e4f1..3441d7813e2 100644
--- a/src/bin/psql/input.c
+++ b/src/bin/psql/input.c
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 2000-2006, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/psql/input.c,v 1.57 2006/07/14 14:52:26 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/input.c,v 1.58 2006/08/27 15:05:20 tgl Exp $
  */
 #include "postgres_fe.h"
 
@@ -340,7 +340,14 @@ bool
 saveHistory(char *fname, bool encodeFlag)
 {
 #ifdef USE_READLINE
-	if (useHistory && fname)
+	/*
+	 * Suppressing the write attempt when HISTFILE is set to /dev/null
+	 * may look like a negligible optimization, but it's necessary on e.g.
+	 * Darwin, where write_history will fail because it tries to chmod
+	 * the target file.
+	 */
+	if (useHistory && fname &&
+		strcmp(fname, DEVNULL) != 0)
 	{
 		if (encodeFlag)
 			encode_history();
-- 
GitLab