Address GitLab issue #10: Spurious '>' characters appearing in console output
authorEric S. Raymond <esr@thyrsus.com>
Tue, 13 Jun 2017 12:03:27 +0000 (08:03 -0400)
committerEric S. Raymond <esr@thyrsus.com>
Tue, 13 Jun 2017 12:03:27 +0000 (08:03 -0400)
The prompt logic has become unpleasantly complicated.

misc.c
tests/breakvase.chk
tests/pirate.chk
tests/trident.chk
tests/weirdbird.chk
tests/weirddwarf.chk
tests/wittsend.chk

diff --git a/misc.c b/misc.c
index 3960347f36bc77bcc10d30a86f8d307569f1611d..752bc8ee2cd3f483f5994abf0e5f750a24331ea6 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -640,14 +640,14 @@ bool MAPLIN(FILE *fp)
      *  and is not changed thereafter unless the routines on this page choose
      *  to do so. */
 
-    if (prompt)
-       fputs("> ", stdout);
     do {
        if (!editline) {
+           if (prompt)
+               fputs("> ", stdout);
            IGNORE(fgets(rawbuf,sizeof(rawbuf)-1,fp));
            eof = (feof(fp));
        } else {
-           char *cp = linenoise(prompt ? "> ": "");
+           char *cp = linenoise("> ");
            eof = (cp == NULL);
            if (!eof) {
                strncpy(rawbuf, cp, sizeof(rawbuf)-1);
@@ -663,10 +663,17 @@ bool MAPLIN(FILE *fp)
            fclose(logfp);
        return false;
     } else {
+       FILE *efp = NULL;
        if (logfp && fp == stdin)
-           IGNORE(fputs(rawbuf, logfp));
+           efp = logfp;
        else if (!isatty(0))
-           IGNORE(fputs(rawbuf, stdout));
+           efp = stdout;
+       if (efp != NULL)
+       {
+           if (prompt)
+               fputs("> ", efp);
+           IGNORE(fputs(rawbuf, efp));
+       }
        strcpy(INLINE+1, rawbuf);
        LNLENG=0;
        for (i=1; i<=(long)sizeof(INLINE) && INLINE[i]!=0; i++) {
index 306a902aa07b174239aed88075400617da686364..012d7f39b2e2e13cc1e7e17d53fd59a40243ff1e 100644 (file)
@@ -1298,7 +1298,7 @@ OK
 
 You have taken the vase and hurled it delicately to the ground.
 
-> 
+
 You scored 139 out of a possible 430, using 210 turns.
 
 You have achieved the rating: "Experienced Adventurer".
index 116d92255c064fe042ddb5be27835a436d72252c..9600c7a6deae69d3632238e3300bbf6679569512 100644 (file)
@@ -1772,7 +1772,7 @@ There is a large nest here, full of golden eggs!
 
 OK
 
-> 
+
 You scored 219 out of a possible 430, using 293 turns.
 
 You may now consider yourself a "Seasoned Adventurer".
index fb0fa87c4122c8d77f0fd5c6abfe49a6ad1dd1f3..d8bf747f00529d03ea6f6ecd1b7276e3bd2030a6 100644 (file)
@@ -1415,7 +1415,7 @@ Your lamp is now on.
 
 You're at "Y2".
 
-> 
+
 You scored 167 out of a possible 430, using 230 turns.
 
 You have achieved the rating: "Experienced Adventurer".
index e9f807763f00628540a8a0bdfcd3962d8c7952fd..01b116803a37068b5a33731e97bde3b40d240331 100644 (file)
@@ -132,7 +132,7 @@ have no bird seed.
 
 The little bird is now dead.  Its body disappears.
 
-> 
+
 You scored 32 out of a possible 430, using 22 turns.
 
 You are obviously a rank amateur.  Better luck next time.
index d2d93d3532bc7c84c2c3038fe0ccbf79882b44bd..23adae3c2bead3e7d831245ff12f189146c04579 100644 (file)
@@ -505,7 +505,7 @@ With what?  Your bare hands?
 
 Feed what?
 
-> 
+
 You scored 103 out of a possible 430, using 86 turns.
 
 Your score qualifies you as a novice class adventurer.
index f5d90feca9a17a47c047e988f41a6fc6e36d38c1..597eed9066fe8de9d613a41ec28faa74c7b3888b 100644 (file)
@@ -2627,7 +2627,7 @@ It is now pitch dark.  If you proceed you will likely fall into a pit.
 
 You're in Plover Room.
 
-> 
+
 You scored 342 out of a possible 430, using 423 turns.
 
 Your score puts you in Master Adventurer Class C.