mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-27 08:39:28 +08:00
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.
This commit is contained in:
parent
f7d9874415
commit
18cbc7aefc
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
|
* 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"
|
#include "postgres_fe.h"
|
||||||
|
|
||||||
@ -26,6 +26,15 @@ static bool useReadline;
|
|||||||
static bool useHistory;
|
static bool useHistory;
|
||||||
char *psql_history;
|
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
|
enum histcontrol
|
||||||
{
|
{
|
||||||
@ -213,7 +222,7 @@ static void encode_history()
|
|||||||
cur_hist; cur_hist = next_history())
|
cur_hist; cur_hist = next_history())
|
||||||
for (cur_ptr = cur_hist->line; *cur_ptr; cur_ptr++)
|
for (cur_ptr = cur_hist->line; *cur_ptr; cur_ptr++)
|
||||||
if (*cur_ptr == '\n')
|
if (*cur_ptr == '\n')
|
||||||
*cur_ptr = '\0';
|
*cur_ptr = NL_IN_HISTORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void decode_history()
|
static void decode_history()
|
||||||
@ -224,7 +233,7 @@ static void decode_history()
|
|||||||
for (history_set_pos(0), cur_hist = current_history();
|
for (history_set_pos(0), cur_hist = current_history();
|
||||||
cur_hist; cur_hist = next_history())
|
cur_hist; cur_hist = next_history())
|
||||||
for (cur_ptr = cur_hist->line; *cur_ptr; cur_ptr++)
|
for (cur_ptr = cur_hist->line; *cur_ptr; cur_ptr++)
|
||||||
if (*cur_ptr == '\0')
|
if (*cur_ptr == NL_IN_HISTORY)
|
||||||
*cur_ptr = '\n';
|
*cur_ptr = '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user