-/* $NetBSD: hdr.h,v 1.2 1995/03/21 12:05:02 cgd Exp $ */
+/* $NetBSD: hdr.h,v 1.10 2003/08/07 09:36:50 agc Exp $ */
/*-
* Copyright (c) 1991, 1993
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
*
* The data file distributed with the fortran source is assumed to be called
* "glorkz" in the directory where the program is first run.
+ *
+ * The original FORTRAN version can be found at
+ * <URL:ftp://ftp.gmd.de/if-archive/games/source/advent-original.tar.gz>.
*/
/* hdr.h: included by c advent files */
-int datfd; /* message file descriptor */
-int delhit;
-int yea;
-extern char data_file[]; /* Virtual data file */
+#include <signal.h>
+
+extern int datfd; /* message file descriptor */
+extern volatile sig_atomic_t delhit;
+extern int yea;
+extern char data_file[]; /* Virtual data file */
#define TAB 011
#define LF 012
-#define FLUSHLINE while (getchar()!='\n')
+#define FLUSHLINE do { int flushline_ch; while ((flushline_ch = getchar()) != EOF && flushline_ch != '\n'); } while (0)
#define FLUSHLF while (next()!=LF)
-int loc,newloc,oldloc,oldlc2,wzdark,gaveup,kq,k,k2;
-char *wd1,*wd2; /* the complete words */
-int verb,obj,spk;
+extern int loc, newloc, oldloc, oldlc2, wzdark, gaveup, kq, k, k2;
+extern char *wd1, *wd2; /* the complete words */
+extern int verb, obj, spk;
extern int blklin;
-int saved,savet,mxscor,latncy;
+extern int saveday, savet, mxscor, latncy;
-#define SHORT 50 /* How short is a demo game? */
+#define SHORT 50 /* How short is a demo game? */
-#define MAXSTR 20 /* max length of user's words */
+#define MAXSTR 20 /* max length of user's words */
-#define HTSIZE 512 /* max number of vocab words */
-struct hashtab /* hash table for vocabulary */
-{ int val; /* word type &index (ktab) */
- char *atab; /* pointer to actual string */
-} voc[HTSIZE];
-
-#define SEED 1815622 /* "Encryption" seed */
+#define HTSIZE 512 /* max number of vocab words */
+extern struct hashtab { /* hash table for vocabulary */
+ int val; /* word type &index (ktab) */
+ char *atab; /* pointer to actual string */
+} voc[HTSIZE];
+#define SEED 1815622 /* "Encryption" seed */
struct text
-#ifdef OLDSTUFF
-{ int seekadr; /* DATFILE must be < 2**16 */
-#endif OLDSTUFF
-{ char *seekadr; /* Msg start in virtual disk */
- int txtlen; /* length of msg starting here */
-};
+ {
+ char *seekadr;/* Msg start in virtual disk */
+ int txtlen; /* length of msg starting here */
+ };
#define RTXSIZ 205
-struct text rtext[RTXSIZ]; /* random text messages */
+extern struct text rtext[RTXSIZ]; /* random text messages */
#define MAGSIZ 35
-struct text mtext[MAGSIZ]; /* magic messages */
+extern struct text mtext[MAGSIZ]; /* magic messages */
-int clsses;
+extern int clsses;
#define CLSMAX 12
-struct text ctext[CLSMAX]; /* classes of adventurer */
-int cval[CLSMAX];
+extern struct text ctext[CLSMAX]; /* classes of adventurer */
+extern int cval[CLSMAX];
-struct text ptext[101]; /* object descriptions */
+extern struct text ptext[101]; /* object descriptions */
-#define LOCSIZ 141 /* number of locations */
-struct text ltext[LOCSIZ]; /* long loc description */
-struct text stext[LOCSIZ]; /* short loc descriptions */
+#define LOCSIZ 141 /* number of locations */
+extern struct text ltext[LOCSIZ]; /* long loc description */
+extern struct text stext[LOCSIZ]; /* short loc descriptions */
-struct travlist /* direcs & conditions of travel*/
-{ struct travlist *next; /* ptr to next list entry */
- int conditions; /* m in writeup (newloc / 1000) */
- int tloc; /* n in writeup (newloc % 1000) */
- int tverb; /* the verb that takes you there*/
-} *travel[LOCSIZ],*tkk; /* travel is closer to keys(...)*/
+extern struct travlist { /* direcs & conditions of travel */
+ struct travlist *next; /* ptr to next list entry */
+ int conditions; /* m in writeup (newloc / 1000) */
+ int tloc; /* n in writeup (newloc % 1000) */
+ int tverb; /* the verb that takes you there */
+ } *travel[LOCSIZ], *tkk; /* travel is closer to keys(...) */
-int atloc[LOCSIZ];
+extern int atloc[LOCSIZ];
-int plac[101]; /* initial object placement */
-int fixd[101],fixed[101]; /* location fixed? */
+extern int plac[101]; /* initial object placement */
+extern int fixd[101], fixed[101]; /* location fixed? */
-int actspk[35]; /* rtext msg for verb <n> */
+extern int actspk[35]; /* rtext msg for verb <n> */
-int cond[LOCSIZ]; /* various condition bits */
+extern int cond[LOCSIZ]; /* various condition bits */
-extern int setbit[16]; /* bit defn masks 1,2,4,... */
+ extern int setbit[16]; /* bit defn masks 1,2,4,... */
-int hntmax;
-int hints[20][5]; /* info on hints */
-int hinted[20],hintlc[20];
+extern int hntmax;
+extern int hints[20][5]; /* info on hints */
+extern int hinted[20], hintlc[20];
-int place[101], prop[101],link[201];
-int abb[LOCSIZ];
+extern int place[101], prop[101], links[201];
+extern int abb[LOCSIZ];
-int maxtrs,tally,tally2; /* treasure values */
+extern int maxtrs, tally, tally2; /* treasure values */
#define FALSE 0
#define TRUE 1
-int keys,lamp,grate,cage,rod,rod2,steps,/* mnemonics */
- bird,door,pillow,snake,fissur,tablet,clam,oyster,magzin,
- dwarf,knife,food,bottle,water,oil,plant,plant2,axe,mirror,dragon,
- chasm,troll,troll2,bear,messag,vend,batter,
- nugget,coins,chest,eggs,tridnt,vase,emrald,pyram,pearl,rug,chain,
- spices,
- back,look,cave,null,entrnc,dprssn,
- enter, stream, pour,
- say,lock,throw,find,invent;
-
-int chloc,chloc2,dseen[7],dloc[7], /* dwarf stuff */
- odloc[7],dflag,daltlc;
+extern int keys, lamp, grate, cage, rod, rod2, steps, /* mnemonics */
+ bird, door, pillow, snake, fissur, tablet, clam, oyster,
+ magzin, dwarf, knife, food, bottle, water, oil, plant, plant2,
+ axe, mirror, dragon, chasm, troll, troll2, bear, messag,
+ vend, batter, nugget, coins, chest, eggs, tridnt, vase,
+ emrald, pyram, pearl, rug, chain, spices, back, look, cave,
+ null, entrnc, dprssn, enter, stream, pour, say, lock, throw,
+ find, invent;
-int tk[21],stick,dtotal,attack;
-int turns,lmwarn,iwest,knfloc,detail, /* various flags & counters */
- abbnum,maxdie,numdie,holdng,dkill,foobar,bonus,clock1,clock2,
- saved,closng,panic,closed,scorng;
+extern int chloc, chloc2, dseen[7], dloc[7], /* dwarf stuff */
+ odloc[7], dflag, daltlc;
-int demo,newloc,limit;
+extern int tk[21], stick, dtotal, attack;
+extern int turns, lmwarn, iwest, knfloc, detail, /* various flags and
+ * counters */
+ abbnum, maxdie, numdie, holdng, dkill, foobar, bonus, clock1,
+ clock2, saved, closng, panic, closed, scorng;
-char *malloc();
-char *decr();
-unsigned long crc();
+extern int demo, limit;
-/* We need to get a little tricky to avoid strings */
-#define DECR(a,b,c,d,e) decr('a'+'+','b'+'-','c'+'#','d'+'&','e'+'%')
+#define DECR(a,b,c,d,e) decr(a+'+',b+'-',c+'#',d+'&',e+'%')