From 39c1b4db81e73490a9a6b8062bc404d3feb52375 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sat, 10 Jun 2017 19:08:58 -0400 Subject: [PATCH] Resolve a goto. --- main.c | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/main.c b/main.c index dd29c92..0e934ba 100644 --- a/main.c +++ b/main.c @@ -510,27 +510,28 @@ static bool playermove(FILE *cmdin, token_t verb) if (K == game.loc)K2=91; if (CNDBIT(game.loc,4))K2=274; if (K2 == 0) { - L21: - LL=MOD((labs(TRAVEL[KK])/1000),1000); - if (LL != K) { - if (LL <= 300) { - if (FORCED(LL) && MOD((labs(TRAVEL[KEY[LL]])/1000),1000) == K) - K2=KK; - } - if (TRAVEL[KK] >= 0) { - ++KK; - goto L21; - } - KK=K2; - if (KK == 0) { - RSPEAK(140); - return true; + for (;;) { + LL=MOD((labs(TRAVEL[KK])/1000),1000); + if (LL != K) { + if (LL <= 300) { + if (FORCED(LL) && MOD((labs(TRAVEL[KEY[LL]])/1000),1000) == K) + K2=KK; + } + if (TRAVEL[KK] >= 0) { + ++KK; + continue; + } + KK=K2; + if (KK == 0) { + RSPEAK(140); + return true; + } } - } - K=MOD(labs(TRAVEL[KK]),1000); - KK=KEY[game.loc]; - goto L9; + K=MOD(labs(TRAVEL[KK]),1000); + KK=KEY[game.loc]; + break; /* fall through to ordinary travel */ + } } else { RSPEAK(K2); return true; @@ -551,10 +552,13 @@ static bool playermove(FILE *cmdin, token_t verb) RSPEAK((OUTSID(game.loc) && game.loc != 8) ? 57 : 58); return true; } - game.oldlc2=game.oldloc; - game.oldloc=game.loc; + else { + /* none of the specials */ + game.oldlc2=game.oldloc; + game.oldloc=game.loc; + } -L9: + /* ordinary travel */ for (;;) { LL=labs(TRAVEL[KK]); if (MOD(LL,1000) == 1 || MOD(LL,1000) == K) -- 2.31.1