]> git.pond.sub.org Git - empserver/commitdiff
client: Enable history file by default unless -r
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 13 Dec 2015 08:30:49 +0000 (09:30 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 6 Aug 2017 09:22:30 +0000 (11:22 +0200)
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 <armbru@pond.sub.org>
man/empire.6
src/client/main.c

index 5db053d726b04f4a47a58af664c251e43900aaa0..ff6a68756c03419be9d6ffe745c2618e63fe4491 100644 (file)
@@ -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
index aaa54e9df63e23c8aa9822665173466cd9be50af..190380b7982b406a878fb802c80f4684f93d7c62 100644 (file)
@@ -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);