Factor out handling of variables populated from the database. 14/head
authorJason S. Ninneman <jsn@mbar.us>
Sun, 28 May 2017 22:42:05 +0000 (15:42 -0700)
committerJason S. Ninneman <jsn@mbar.us>
Sun, 28 May 2017 22:42:05 +0000 (15:42 -0700)
This reorganization is a first step toward handling database compilation separately.

Makefile
actions1.c
database.c [new file with mode: 0644]
database.h [new file with mode: 0644]
funcs.h
init.c
main.c
main.h
misc.c
score.c
share.h

index 84477c8b62f9c93af575811b46e45c6cfb84493d..bd579585aba187109109487bd85c08a35ad256d0 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,26 +1,28 @@
 # Makefile for the open-source release of adventure 2.5
 
 LIBS=-lrt
-OBJS=main.o init.o actions1.o actions2.o score.o misc.o
+OBJS=main.o init.o actions1.o actions2.o score.o misc.o database.o
 SOURCES=$(OBJS:.o=.c) COPYING NEWS README TODO advent.text control
 
 .c.o:
        gcc -O $(DBX) -c $<
 
 advent:        $(OBJS)
-       gcc -std=c99 -O $(DBX) -o advent $(OBJS) $(LIBS)
+       gcc -Wall -std=c99 -O $(DBX) -o advent $(OBJS) $(LIBS)
 
-main.o:                main.h misc.h funcs.h
+main.o:                main.h misc.h funcs.h database.h
 
-init.o:                misc.h main.h share.h funcs.h
+init.o:                misc.h main.h share.h funcs.h database.h
 
-actions1.o:    misc.h main.h share.h funcs.h
+actions1.o:    misc.h main.h share.h funcs.h database.h
 
 actions2.o:    misc.h main.h share.h funcs.h
 
-score.o:       misc.h main.h share.h
+score.o:       misc.h main.h share.h database.h
 
-misc.o:                misc.h main.h
+misc.o:                misc.h main.h database.h
+
+database.o:    database.h
 
 clean:
        rm -f *.o advent advent.html advent.6 adventure.data
index 79c0ea719c497ac138efb711af7b5c68beab3243..0cf8e97d56fcae90e2d9e6189e6c640ddc435be7 100644 (file)
@@ -4,6 +4,7 @@
 #include "main.h"
 #include "share.h"
 #include "funcs.h"
+#include "database.h"
 
 /* This stuff was broken off as part of an effort to get the main program
  * to compile without running out of memory.  We're called with a number
diff --git a/database.c b/database.c
new file mode 100644 (file)
index 0000000..cacd79d
--- /dev/null
@@ -0,0 +1,36 @@
+#include "database.h"
+
+const long RTXSIZ = 277;
+const long CLSMAX = 12;
+const long LOCSIZ = 185;
+const long LINSIZ = 12500;
+const long TRNSIZ = 5;
+const long TABSIZ = 330;
+const long VRBSIZ = 35;
+long LINUSE;
+long TRVS;
+long CLSSES;
+long TRNVLS;
+long TABNDX;
+long HNTMAX;
+long PTEXT[101];
+long RTEXT[278];
+long CTEXT[13];
+long OBJSND[101];
+long OBJTXT[101];
+long STEXT[186];
+long LTEXT[186];
+long COND[186];
+long KEY[186];
+long LOCSND[186];
+long LINES[12500];
+long CVAL[13];
+long TTEXT[6];
+long TRNVAL[6];
+long TRAVEL[886];
+long KTAB[331];
+long ATAB[331];
+long PLAC[101];
+long FIXD[101];
+long ACTSPK[36];
+long HINTS[21][5];
diff --git a/database.h b/database.h
new file mode 100644 (file)
index 0000000..c9b5167
--- /dev/null
@@ -0,0 +1,34 @@
+extern const long RTXSIZ;
+extern const long CLSMAX;
+extern const long LOCSIZ;
+extern const long LINSIZ;
+extern const long TRNSIZ;
+extern const long TABSIZ;
+extern const long VRBSIZ;
+extern long LINUSE;
+extern long TRVS;
+extern long CLSSES;
+extern long TRNVLS;
+extern long TABNDX;
+extern long HNTMAX;
+extern long PTEXT[101];
+extern long RTEXT[278];
+extern long CTEXT[13];
+extern long OBJSND[101];
+extern long OBJTXT[101];
+extern long STEXT[186];
+extern long LTEXT[186];
+extern long COND[186];
+extern long KEY[186];
+extern long LOCSND[186];
+extern long LINES[12500];
+extern long CVAL[13];
+extern long TTEXT[6];
+extern long TRNVAL[6];
+extern long TRAVEL[886];
+extern long KTAB[331];
+extern long ATAB[331];
+extern long PLAC[101];
+extern long FIXD[101];
+extern long ACTSPK[36];
+extern long HINTS[21][5];
diff --git a/funcs.h b/funcs.h
index 5f7c01dbccbc819b7b11fb417e034f656ceb491f..34f69cdfc261d6c2502b890abca3539c9a20e0fc 100644 (file)
--- a/funcs.h
+++ b/funcs.h
@@ -1,4 +1,5 @@
 #include <stdbool.h>
+#include "database.h"
 
 /*  Statement functions
  *
diff --git a/init.c b/init.c
index ba49245aeaa6521a060eab0a93dacc9dd04cc642..d33dd927ea3e9543a2167adb41ec9dc011dcbb50 100644 (file)
--- a/init.c
+++ b/init.c
@@ -7,6 +7,7 @@
 #include "main.h"
 #include "share.h"
 #include "funcs.h"
+#include "database.h"
 
 /*
  * Initialisation
@@ -175,7 +176,7 @@ static void quick_io(void);
 void initialise(void) {
        if (oldstyle)
                printf("Initialising...\n");
-       if(!quick_init()){raw_init(); report(); quick_save();}
+        if(!quick_init()){raw_init(); report(); quick_save();}
        finish_init();
 }
 
diff --git a/main.c b/main.c
index d84e4f2ad85a9aa54a1d624162e273b91a401251..a72d3b55d88211a314a8253212628b42ed950887 100644 (file)
--- a/main.c
+++ b/main.c
@@ -9,37 +9,37 @@
 #include <getopt.h>
 #include <signal.h>
 #include "main.h"
-
+#include "database.h"
 #include "misc.h"
 
-long ABB[186], ATAB[331], ATLOC[186], BLKLIN = true, DFLAG,
+long ABB[186], ATLOC[186], BLKLIN = true, DFLAG,
                DLOC[7], FIXED[101], HOLDNG,
-               KTAB[331], *LINES, LINK[201], LNLENG, LNPOSN,
-               PARMS[26], PLACE[101], PTEXT[101], RTEXT[278],
-               SETUP = 0, TABSIZ = 330;
+               LINK[201], LNLENG, LNPOSN,
+               PARMS[26], PLACE[101],
+               SETUP = 0;
 signed char rawbuf[LINESIZE], INLINE[LINESIZE+1], MAP1[129], MAP2[129];
 
-long ABBNUM, ACTSPK[36], AMBER, ATTACK, AXE, BACK, BATTER, BEAR, BIRD, BLOOD, BONUS,
+long ABBNUM, AMBER, ATTACK, AXE, BACK, BATTER, BEAR, BIRD, BLOOD, BONUS,
                 BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST, CHLOC, CHLOC2,
-               CLAM, CLOCK1, CLOCK2, CLOSED, CLOSNG, CLSHNT, CLSMAX = 12, CLSSES,
-               COINS, COND[186], CONDS, CTEXT[13], CVAL[13], DALTLC, DETAIL,
+               CLAM, CLOCK1, CLOCK2, CLOSED, CLOSNG, CLSHNT,
+               COINS, CONDS, DALTLC, DETAIL,
                 DKILL, DOOR, DPRSSN, DRAGON, DSEEN[7], DTOTAL, DWARF, EGGS,
-               EMRALD, ENTER, ENTRNC, FIND, FISSUR, FIXD[101], FOOBAR, FOOD,
-               GRATE, HINT, HINTED[21], HINTLC[21], HINTS[21][5], HNTMAX,
-               HNTSIZ = 20, I, INVENT, IGO, IWEST, J, JADE, K, K2, KEY[186], KEYS, KK,
-               KNFLOC, KNIFE, KQ, L, LAMP, LIMIT, LINSIZ = 12500, LINUSE, LL,
-               LMWARN, LOC, LOCK, LOCSIZ = 185, LOCSND[186], LOOK, LTEXT[186],
+               EMRALD, ENTER, ENTRNC, FIND, FISSUR, FOOBAR, FOOD,
+               GRATE, HINT, HINTED[21], HINTLC[21],
+               HNTSIZ = 20, I, INVENT, IGO, IWEST, J, JADE, K, K2, KEYS, KK,
+               KNFLOC, KNIFE, KQ, L, LAMP, LIMIT, LL,
+               LMWARN, LOC, LOCK, LOOK,
                MAGZIN, MAXDIE, MAXTRS, MESH = 123456789,
                MESSAG, MIRROR, MXSCOR,
-               NEWLOC, NOVICE, NUGGET, NUL, NUMDIE, OBJ, OBJSND[101],
-               OBJTXT[101], ODLOC[7], OGRE, OIL, OLDLC2, OLDLOC, OLDOBJ, OYSTER,
-               PANIC, PEARL, PILLOW, PLAC[101], PLANT, PLANT2, PROP[101], PYRAM,
-               RESER, ROD, ROD2, RTXSIZ = 277, RUBY, RUG, SAPPH, SAVED, SAY,
-               SCORE, SECT, SIGN, SNAKE, SPK, STEPS, STEXT[186], STICK,
-               STREAM, TABNDX, TALLY, THRESH, THROW, TK[21], TRAVEL[886], TRIDNT,
-               TRNDEX, TRNLUZ, TRNSIZ = 5, TRNVAL[6], TRNVLS, TROLL, TROLL2, TRVS,
-                TRVSIZ = 885, TTEXT[6], TURNS, URN, V1, V2, VASE, VEND, VERB,
-               VOLCAN, VRBSIZ = 35, VRSION = 25, WATER, WD1, WD1X, WD2, WD2X,
+               NEWLOC, NOVICE, NUGGET, NUL, NUMDIE, OBJ,
+               ODLOC[7], OGRE, OIL, OLDLC2, OLDLOC, OLDOBJ, OYSTER,
+               PANIC, PEARL, PILLOW, PLANT, PLANT2, PROP[101], PYRAM,
+               RESER, ROD, ROD2, RUBY, RUG, SAPPH, SAVED, SAY,
+               SCORE, SECT, SIGN, SNAKE, SPK, STEPS, STICK,
+               STREAM, TALLY, THRESH, THROW, TK[21], TRIDNT,
+               TRNDEX, TRNLUZ, TROLL, TROLL2,
+                TRVSIZ = 885, TURNS, URN, V1, V2, VASE, VEND, VERB,
+               VOLCAN, VRSION = 25, WATER, WD1, WD1X, WD2, WD2X,
                WZDARK = false, ZZWORD;
 FILE  *logfp;
 bool oldstyle = false;
@@ -114,12 +114,6 @@ int main(int argc, char *argv[]) {
 
 /*  Read the database if we have not yet done so */
 
-       LINES = (long *)calloc(LINSIZ+1,sizeof(long));
-       if(!LINES){
-               printf("Not enough memory!\n");
-               exit(1);
-       }
-
        MAP2[1] = 0;
        if(!SETUP)initialise();
        if(SETUP > 0) goto L1;
diff --git a/main.h b/main.h
index 184aceea0a17be1a0e727614318946042001e02a..2b3373539d0dfbb22f05d259ff6275a71f33e979 100644 (file)
--- a/main.h
+++ b/main.h
@@ -7,9 +7,9 @@ typedef struct lcg_state
   unsigned long a, c, m, x;
 } lcg_state;
 
-extern long ABB[], ATAB[], ATLOC[], BLKLIN, DFLAG, DLOC[], FIXED[], HOLDNG,
-               KTAB[], *LINES, LINK[], LNLENG, LNPOSN,
-               PARMS[], PLACE[], PTEXT[], RTEXT[], TABSIZ;
+extern long ABB[], ATLOC[], BLKLIN, DFLAG, DLOC[], FIXED[], HOLDNG,
+               LINK[], LNLENG, LNPOSN,
+               PARMS[], PLACE[];
 extern signed char rawbuf[LINESIZE], INLINE[LINESIZE+1], MAP1[], MAP2[];
 extern FILE *logfp;
 extern bool oldstyle;
diff --git a/misc.c b/misc.c
index 3fded19213f8631af9a91f6e5386f62e8d979026..111848e1d5231eb7a9d00b59f3b9dfe4485e9bc4 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -6,6 +6,7 @@
 #include "share.h"     /* for SETUP */
 #include "misc.h"
 #include "funcs.h"
+#include "database.h"
 
 /* hack to ignore GCC Unused Result */
 #define IGNORE(r) do{if(r){}}while(0)
diff --git a/score.c b/score.c
index 162cc5d9dfb49d9f97103833e298143c19ccea59..4ef68adda45949738704be1b78d8fdbb8b7e8d41 100644 (file)
--- a/score.c
+++ b/score.c
@@ -2,6 +2,7 @@
 #include "misc.h"
 #include "main.h"
 #include "share.h"
+#include "database.h"
 
 /*
  * scoring and wrap-up
diff --git a/share.h b/share.h
index ff4252b3c56afe840e7f8ca62bc6021b6e6e91ce..59ef9bb45d342ac92fd2d59c069b05cd059052e5 100644 (file)
--- a/share.h
+++ b/share.h
@@ -1,24 +1,24 @@
 extern void score(long);
-extern long ABBNUM, ACTSPK[], AMBER, ATTACK, AXE, BACK, BATTER, BEAR,
+extern long ABBNUM, AMBER, ATTACK, AXE, BACK, BATTER, BEAR,
    BIRD, BLOOD, BONUS,
    BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST, CHLOC, CHLOC2,
-   CLAM, CLOCK1, CLOCK2, CLOSED, CLOSNG, CLSHNT, CLSMAX, CLSSES,
-   COINS, COND[], CONDS, CTEXT[], CVAL[], DALTLC, DETAIL,
+   CLAM, CLOCK1, CLOCK2, CLOSED, CLOSNG, CLSHNT,
+   COINS, CONDS, DALTLC, DETAIL,
    DKILL, DOOR, DPRSSN, DRAGON, DSEEN[], DTOTAL, DWARF, EGGS,
-   EMRALD, ENTER, ENTRNC, FIND, FISSUR, FIXD[], FOOBAR, FOOD,
-   GRATE, HINT, HINTED[], HINTLC[], HINTS[][5], HNTMAX,
-   HNTSIZ, I, INVENT, IGO, IWEST, J, JADE, K, K2, KEY[], KEYS, KK,
-   KNFLOC, KNIFE, KQ, L, LAMP, LIMIT, LINSIZ, LINUSE, LL,
-   LMWARN, LOC, LOCK, LOCSIZ, LOCSND[], LOOK, LTEXT[],
+   EMRALD, ENTER, ENTRNC, FIND, FISSUR, FOOBAR, FOOD,
+   GRATE, HINT, HINTED[], HINTLC[],
+   HNTSIZ, I, INVENT, IGO, IWEST, J, JADE, K, K2, KEYS, KK,
+   KNFLOC, KNIFE, KQ, L, LAMP, LIMIT, LL,
+  LMWARN, LOC, LOCK, LOOK,
    MAGZIN, MAXDIE, MAXTRS, MESH, MESSAG, MIRROR, MXSCOR,
-   NEWLOC, NOVICE, NUGGET, NUL, NUMDIE, OBJ, OBJSND[],
-   OBJTXT[], ODLOC[], OGRE, OIL, OLDLC2, OLDLOC, OLDOBJ, OYSTER,
-   PANIC, PEARL, PILLOW, PLAC[], PLANT, PLANT2, PROP[], PYRAM,
-   RESER, ROD, ROD2, RTXSIZ, RUBY, RUG, SAPPH, SAVED, SAY,
-   SCORE, SECT, SETUP, SIGN, SNAKE, SPK, STEPS, STEXT[], STICK,
-   STREAM, TABNDX, TALLY, THRESH, THROW, TK[], TRAVEL[], TRIDNT,
-   TRNDEX, TRNLUZ, TRNSIZ, TRNVAL[], TRNVLS, TROLL, TROLL2, TRVS,
-   TRVSIZ, TTEXT[], TURNS, URN, V1, V2, VASE, VEND, VERB,
-   VOLCAN, VRBSIZ, VRSION, WATER, WD1, WD1X, WD2, WD2X,
+   NEWLOC, NOVICE, NUGGET, NUL, NUMDIE, OBJ,
+   ODLOC[], OGRE, OIL, OLDLC2, OLDLOC, OLDOBJ, OYSTER,
+   PANIC, PEARL, PILLOW, PLANT, PLANT2, PROP[], PYRAM,
+   RESER, ROD, ROD2, RUBY, RUG, SAPPH, SAVED, SAY,
+   SCORE, SECT, SETUP, SIGN, SNAKE, SPK, STEPS, STICK,
+   STREAM, TALLY, THRESH, THROW, TK[], TRIDNT,
+   TRNDEX, TRNLUZ, TROLL, TROLL2,
+   TRVSIZ, TURNS, URN, V1, V2, VASE, VEND, VERB,
+   VOLCAN, VRSION, WATER, WD1, WD1X, WD2, WD2X,
    WZDARK, ZZWORD;