Make GETTXT() a bit closer to actual C.
authorJason S. Ninneman <jsn@mbar.us>
Sat, 3 Jun 2017 17:55:48 +0000 (10:55 -0700)
committerJason S. Ninneman <jsn@mbar.us>
Sat, 3 Jun 2017 18:30:56 +0000 (11:30 -0700)
misc.c

diff --git a/misc.c b/misc.c
index 7dfa74298e79c5264884520329fd7f4e9bc6d43d..1224bc0cf4e56ad4ad669b5d83a644fd11737aa2 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -257,44 +257,53 @@ L42:      NUMBER=NUMBER*SIGN;
 }
 
 long GETTXT(long SKIP,long ONEWRD, long UPPER) {
-long CHAR, TEXT, I; static long SPLITTING = -1;
-
 /*  Take characters from an input line and pack them into 30-bit words.
  *  Skip says to skip leading blanks.  ONEWRD says stop if we come to a
  *  blank.  UPPER says to map all letters to uppercase.  If we reach the
  *  end of the line, the word is filled up with blanks (which encode as 0's).
  *  If we're already at end of line when TEXT is called, we return -1. */
 
-       if(LNPOSN != SPLITTING)SPLITTING = -1;
-       TEXT= -1;
-L10:   if(LNPOSN > LNLENG)return(TEXT);
-       if((!SKIP) || INLINE[LNPOSN] != 0) goto L11;
-       LNPOSN=LNPOSN+1;
-        goto L10;
-
-L11:   TEXT=0;
-       /* 15 */ for (I=1; I<=5; I++) {
-       TEXT=TEXT*64;
-       if(LNPOSN > LNLENG || (ONEWRD && INLINE[LNPOSN] == 0)) goto L15;
-       CHAR=INLINE[LNPOSN];
-       if(CHAR >= 63) goto L12;
-       SPLITTING = -1;
-       if(UPPER && CHAR >= 37)CHAR=CHAR-26;
-       TEXT=TEXT+CHAR;
-        goto L14;
-
-L12:   if(SPLITTING == LNPOSN) goto L13;
-       TEXT=TEXT+63;
-       SPLITTING = LNPOSN;
-        goto L15;
-
-L13:   TEXT=TEXT+CHAR-63;
-       SPLITTING = -1;
-L14:   LNPOSN=LNPOSN+1;
-L15:   /*etc*/ ;
-       } /* end loop */
-
-       return(TEXT);
+  long CHAR;
+  long TEXT;
+  static long SPLITTING = -1;
+
+  if(LNPOSN != SPLITTING)
+    SPLITTING = -1;
+  TEXT= -1;
+  while (true) {
+    if(LNPOSN > LNLENG)
+      return(TEXT);
+    if((!SKIP) || INLINE[LNPOSN] != 0)
+      break;
+    LNPOSN=LNPOSN+1;
+  }
+
+  TEXT=0;
+  for (int I=1; I<=5; I++) {
+    TEXT=TEXT*64;
+    if(LNPOSN > LNLENG || (ONEWRD && INLINE[LNPOSN] == 0))
+      continue;
+    CHAR=INLINE[LNPOSN];
+    if(CHAR < 63) {
+      SPLITTING = -1;
+      if(UPPER && CHAR >= 37)
+        CHAR=CHAR-26;
+      TEXT=TEXT+CHAR;
+      LNPOSN=LNPOSN+1;
+      continue;
+    }
+    if(SPLITTING != LNPOSN) {
+      TEXT=TEXT+63;
+      SPLITTING = LNPOSN;
+      continue;
+    }
+
+    TEXT=TEXT+CHAR-63;
+    SPLITTING = -1;
+    LNPOSN=LNPOSN+1;
+  }
+
+  return(TEXT);
 }
 
 long MAKEWD(long LETTRS) {