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.
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;