History clarification.
[open-adventure.git] / misc.c
diff --git a/misc.c b/misc.c
index 40bb1b91e0519a81ec922b8e03092c331b3ecb82..93dce3b073b51f87dfcd0192b26a0b15fc2f75ad 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -2,11 +2,12 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include <sys/time.h>
 #include "main.h"
 #include "share.h"     /* for SETUP */
 #include "misc.h"
 #include "funcs.h"
-#include "database/database.h"
+#include "database.h"
 
 /* hack to ignore GCC Unused Result */
 #define IGNORE(r) do{if(r){}}while(0)
@@ -777,31 +778,33 @@ long randrange(long range)
 
 #undef RNDVOC
 long fRNDVOC(long CHAR, long FORCE) {
-long DIV, I, J, RNDVOC;
-
 /*  Searches the vocabulary for a word whose second character is char, and
  *  changes that word such that each of the other four characters is a
  *  random letter.  If force is non-zero, it is used as the new word.
  *  Returns the new word. */
 
+       long RNDVOC;
 
        RNDVOC=FORCE;
-       if(RNDVOC != 0) goto L3;
-       for (I=1; I<=5; I++) {
-       J=11+randrange(26);
-       if(I == 2)J=CHAR;
-       RNDVOC=RNDVOC*64+J;
-       } /* end loop */
-L3:    J=10000;
-       DIV=64L*64L*64L;
-       for (I=1; I<=TABSIZ; I++) {
-       J=J+7;
-       if(MOD((ATAB[I]-J*J)/DIV,64L) == CHAR) goto L8;
-       /*etc*/ ;
-       } /* end loop */
-       BUG(5);
 
-L8:    ATAB[I]=RNDVOC+J*J;
+       if (RNDVOC == 0) {
+         for (int I = 1; I <= 5; I++) {
+           long J = 11 + randrange(26);
+           if (I == 2)
+             J = CHAR;
+           RNDVOC = RNDVOC * 64 + J;
+         }
+       }
+
+       long DIV = 64L * 64L * 64L;
+       for (int I = 1; I <= TABSIZ; I++) {
+         if (MOD(ATAB[I]/DIV, 64L) == CHAR)
+           {
+             ATAB[I] = RNDVOC;
+             break;
+           }
+       }
+
        return(RNDVOC);
 }
 
@@ -1002,5 +1005,11 @@ L30:     if(IN)IGNORE(fread(ARR,sizeof(long),250,F));
 
 
 
+void DATIME(long* D, long* T) {
+  struct timeval tv;
+  gettimeofday(&tv, NULL);
+  *D = (long) tv.tv_sec;
+  *T = (long) tv.tv_usec;
+}
 long fIABS(N)long N; {return(N<0? -N : N);}
 long fMOD(N,M)long N, M; {return(N%M);}