aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2006-02-12 05:24:38 +0000
committerBruce Momjian <bruce@momjian.us>2006-02-12 05:24:38 +0000
commit18cbc7aefc8265a4f8347be8dfefeb40f7b19656 (patch)
tree54cf3548a8a7144b2133af6487a5fafbd8ab7bbc /src
parentf7d9874415314641462cfbbf042b6535b78b0b3e (diff)
downloadpostgresql-18cbc7aefc8265a4f8347be8dfefeb40f7b19656.tar.gz
postgresql-18cbc7aefc8265a4f8347be8dfefeb40f7b19656.zip
Use 0x01 for newlines in saved history. It was determined to be not
used by multi-byte sequences, but futher invesetigation might prove this to be false.
Diffstat (limited to 'src')
-rw-r--r--src/bin/psql/input.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/bin/psql/input.c b/src/bin/psql/input.c
index 1b6e48cff3c..6b1f78af0a4 100644
--- a/src/bin/psql/input.c
+++ b/src/bin/psql/input.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/input.c,v 1.47 2006/02/11 21:55:35 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/input.c,v 1.48 2006/02/12 05:24:38 momjian Exp $
*/
#include "postgres_fe.h"
@@ -26,6 +26,15 @@ static bool useReadline;
static bool useHistory;
char *psql_history;
+/*
+ * Preserve newlines in saved queries by mapping '\n' to NL_IN_HISTORY
+ *
+ * It is assumed NL_IN_HISTORY will never be entered by the user
+ * nor appear inside a multi-byte string. 0x00 is not properly
+ * handled by the readline routines so it can not be used
+ * for this purpose.
+ */
+#define NL_IN_HISTORY 0x01
enum histcontrol
{
@@ -213,7 +222,7 @@ static void encode_history()
cur_hist; cur_hist = next_history())
for (cur_ptr = cur_hist->line; *cur_ptr; cur_ptr++)
if (*cur_ptr == '\n')
- *cur_ptr = '\0';
+ *cur_ptr = NL_IN_HISTORY;
}
static void decode_history()
@@ -224,7 +233,7 @@ static void decode_history()
for (history_set_pos(0), cur_hist = current_history();
cur_hist; cur_hist = next_history())
for (cur_ptr = cur_hist->line; *cur_ptr; cur_ptr++)
- if (*cur_ptr == '\0')
+ if (*cur_ptr == NL_IN_HISTORY)
*cur_ptr = '\n';
}