*
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/input.c,v 1.43 2005/01/06 18:29:09 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/input.c,v 1.44 2005/06/10 15:34:26 momjian Exp $
*/
#include "postgres_fe.h"
#ifdef USE_READLINE
static bool useReadline;
static bool useHistory;
+char *psql_history;
+
enum histcontrol
{
if (GetVariable(pset.vars, "HISTSIZE") == NULL)
SetVariable(pset.vars, "HISTSIZE", "500");
using_history();
- if (get_home_path(home))
+
+ if (GetVariable(pset.vars, "HISTFILE") == NULL)
+ {
+ if (get_home_path(home))
+ {
+ psql_history = pg_malloc(strlen(home) + 1 +
+ strlen(PSQLHISTORY) + 1);
+ snprintf(psql_history, MAXPGPATH, "%s/%s", home, PSQLHISTORY);
+ }
+ }
+ else
{
- char *psql_history;
+ psql_history = pg_strdup(GetVariable(pset.vars, "HISTFILE"));
+ expand_tilde(&psql_history);
+ }
- psql_history = pg_malloc(strlen(home) + 1 +
- strlen(PSQLHISTORY) + 1);
- sprintf(psql_history, "%s/%s", home, PSQLHISTORY);
+ if (psql_history)
read_history(psql_history);
- free(psql_history);
- }
}
#endif
#endif
{
#ifdef USE_READLINE
- if (useHistory)
+ if (useHistory && psql_history)
{
- char home[MAXPGPATH];
+ int hist_size;
- if (get_home_path(home))
- {
- char *psql_history;
- int hist_size;
-
- hist_size = GetVariableNum(pset.vars, "HISTSIZE", -1, -1, true);
- if (hist_size >= 0)
- stifle_history(hist_size);
-
- psql_history = pg_malloc(strlen(home) + 1 +
- strlen(PSQLHISTORY) + 1);
- sprintf(psql_history, "%s/%s", home, PSQLHISTORY);
- write_history(psql_history);
- free(psql_history);
- }
+ hist_size = GetVariableNum(pset.vars, "HISTSIZE", -1, -1, true);
+ if (hist_size >= 0)
+ stifle_history(hist_size);
+
+ write_history(psql_history);
+ free(psql_history);
+ psql_history = NULL;
}
#endif
}