]> git.pond.sub.org Git - empserver/commitdiff
Update and report status even after empty command
authorMarkus Armbruster <armbru@pond.sub.org>
Fri, 1 Jul 2011 17:05:16 +0000 (19:05 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 9 Jul 2011 13:12:47 +0000 (15:12 +0200)
When getcommand() reads an empty string, it prints another prompt and
reads another line, without running status().  That's bad:

* nat_timeused is not updated.  Affects the player's prompt, deities'
  nat selector timeused, and commands edit, players, xdump nat.

* Mortal player isn't logged off for game hours, game down, and time
  limit.

* Notifications are delayed: going broke, becoming solvent, new
  telegrams (toggle inform off only), new announcements, capital lost.

Fix by removing the loop.  Callers handle empty input just fine since
4.2.2.

Side effect: empty commands are now recorded in player_commands[].
That's okay.

src/lib/player/empdis.c

index 7c886b388db26a9e5e8e73220e79f26f3df0a06e..94e9c7d8dc2999b9b7135c2cab7b64b3839261c4 100644 (file)
@@ -77,13 +77,9 @@ getcommand(char *combufp)
     sprintf(player_commands[player_commands_index], "%3d %3d [prompt]",
            player_commands_index, player->cnum);
 
-    do {
-       prprompt(natp->nat_timeused / 60, natp->nat_btu);
-       buf[0] = 0;
-       if (recvclient(buf, sizeof(buf)) < 0) {
-           return -1;
-       }
-    } while (buf[0] == 0);
+    prprompt(natp->nat_timeused / 60, natp->nat_btu);
+    if (recvclient(buf, sizeof(buf)) < 0)
+       return -1;
 
     if (++player_commands_index >= KEEP_COMMANDS)
        player_commands_index = 0;