From 2fe38c1acb90bf39934715c9bf581ccbcfb8001e Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 13 Dec 2015 09:30:49 +0100 Subject: [PATCH] client: Enable history file by default unless -r Make -H take an argument. Default it to ~/.empire_history, except in -r restricted mode, where history is off unless you specify -H. That's because restricted mode restricts the player's access to the local system, and that includes the history file. If you want to grant access to a history file, you have to do so explicitly. Thanks to the previous commit, there is no need to suppress saving to ~/.empire_history in the test suite. Signed-off-by: Markus Armbruster --- man/empire.6 | 13 ++++++++----- src/client/main.c | 16 +++++++++------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/man/empire.6 b/man/empire.6 index 5db053d7..ff6a6875 100644 --- a/man/empire.6 +++ b/man/empire.6 @@ -3,8 +3,9 @@ empire \- Empire client .SH SYNOPSIS .B empire -[\fB\-hHkruv\fP] +[\fB\-hkruv\fP] [\fB\-2\fP \fIoutfile\fP] +[\fB\-H\fP \fIhistfile\fP] [\fB\-s\fP \fI[host:]port\fP] [\fIcountry\fP [\fIpassword\fP]] @@ -24,8 +25,10 @@ the thin veneer of civilization that hides the maniac within. .B \-h Help. Print brief usage information and exit. .TP -.B \-H -Save readline command history to file. +.BI \-H " histfile" +Load command history from \fIhistfile\fP, and save it back. Default +is '~/.empire_history' without \fB\-r\fP, and none with \fB-r\fP. You +might want to protect your history file from prying eyes. .IP Only available when compiled the GNU \fBreadline\fP library. .TP @@ -85,8 +88,8 @@ The filename for the \fBreadline\fP startup file, overriding the default of \fI~/.inputrc\fP (see \fBREADLINE\fP below). .SH READLINE When compiled with the GNU \fBreadline\fP library, the client supports -fancy line editing and, with option \fB-H\fP, persistent history. See -the readline documentation for details. +fancy line editing and persistent history. See the readline +documentation for details. .SH "SEE ALSO" \fIemp_server\fR(6), \fIreadline\fR(3). .SH FILES diff --git a/src/client/main.c b/src/client/main.c index aaa54e9d..190380b7 100644 --- a/src/client/main.c +++ b/src/client/main.c @@ -77,7 +77,8 @@ print_usage(char *program_name) " -s [HOST:]PORT Specify server HOST and PORT\n" " -u Use UTF-8\n" #ifdef HAVE_LIBREADLINE - " -H Save readline command history to file\n" + " -H FILE Load and save command history from FILE\n" + " (default ~/.empire_history with -r, none without -r)\n" #endif /* HAVE_LIBREADLINE */ " -h display this help and exit\n" " -v display version information and exit\n", @@ -89,7 +90,7 @@ main(int argc, char **argv) { int opt; char *auxfname = NULL; - int use_history_file = 0; + char *history_file = NULL; int send_kill = 0; char *host = NULL; char *port = NULL; @@ -101,16 +102,15 @@ main(int argc, char **argv) char *udir; char *colon; int sock; - char *history_file; - while ((opt = getopt(argc, argv, "2:Hkrs:uhv")) != EOF) { + while ((opt = getopt(argc, argv, "2:H:krs:uhv")) != EOF) { switch (opt) { case '2': auxfname = optarg; break; #ifdef HAVE_LIBREADLINE case 'H': - use_history_file = 1; + history_file = optarg; break; #endif /* HAVE_LIBREADLINE */ case 'k': @@ -191,8 +191,10 @@ main(int argc, char **argv) sock = tcp_connect(host, port); - if (use_history_file) - history_file = fnameat(".empire_history", udir); + if (!restricted && !history_file) + history_file = ".empire_history"; + if (history_file) + history_file = fnameat(history_file, udir); if (!login(sock, uname, country, passwd, send_kill, utf8)) exit(1);