Subject: bin/8105: [PATCH] Adventure extern/common fixes
To: None <gnats-bugs@gnats.netbsd.org>
From: Joseph Myers <jsm28@cam.ac.uk>
List: netbsd-bugs
Date: 07/28/1999 11:12:34
>Number: 8105
>Category: bin
>Synopsis: [PATCH] Adventure extern/common fixes
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: bin-bug-people (Utility Bug People)
>State: open
>Class: change-request
>Submitter-Id: net
>Arrival-Date: Wed Jul 28 10:20:05 1999
>Last-Modified:
>Originator: Joseph S. Myers
>Organization:
Trinity College, University of Cambridge, UK
>Release: NetBSD anoncvs of 1999-07-27
>Environment:
[
System: Linux decomino 2.2.10 #1 Mon Jun 14 07:48:53 UTC 1999 i686 unknown
Architecture: i686
]
>Description:
This patch fixes adventure(6) to use `extern' on declarations of
objects in its header file, and to add corresponding definitions to
init.c accordingly. (See the C standard - relying on linker commons
where there are multiple uninitialised declarations of an object in
the program traditionally works on Unix, but is not standard C.)
The patch also removes a bit-rotten code fragment under #ifdef
OLDSTUFF.
>How-To-Repeat:
>Fix:
diff -ruN adventure/hdr.h adventure+/hdr.h
--- adventure/hdr.h Fri Jul 16 01:38:20 1999
+++ adventure+/hdr.h Tue Jul 27 12:40:58 1999
@@ -60,9 +60,9 @@
#include <signal.h>
-int datfd; /* message file descriptor */
-volatile sig_atomic_t delhit;
-int yea;
+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
@@ -70,81 +70,77 @@
#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 saveday, savet, mxscor, latncy;
+extern int saveday, savet, mxscor, latncy;
#define SHORT 50 /* How short is a demo game? */
#define MAXSTR 20 /* max length of user's words */
#define HTSIZE 512 /* max number of vocab words */
-struct hashtab { /* hash table for vocabulary */
+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 */
};
#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 */
+extern struct text ltext[LOCSIZ]; /* long loc description */
+extern struct text stext[LOCSIZ]; /* short loc descriptions */
- struct travlist { /* direcs & conditions of travel */
+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,... */
- 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], links[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 */
+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,
@@ -153,15 +149,15 @@
null, entrnc, dprssn, enter, stream, pour, say, lock, throw,
find, invent;
- int chloc, chloc2, dseen[7], dloc[7], /* dwarf stuff */
+extern int chloc, chloc2, dseen[7], dloc[7], /* dwarf stuff */
odloc[7], dflag, daltlc;
- int tk[21], stick, dtotal, attack;
- int turns, lmwarn, iwest, knfloc, detail, /* various flags and
+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;
- int demo, newloc, limit;
+extern int demo, newloc, limit;
#define DECR(a,b,c,d,e) decr(a+'+',b+'-',c+'#',d+'&',e+'%')
diff -ruN adventure/init.c adventure+/init.c
--- adventure/init.c Wed Feb 10 12:38:54 1999
+++ adventure+/init.c Tue Jul 27 12:41:24 1999
@@ -64,6 +64,70 @@
int setbit[16] = {1, 2, 4, 010, 020, 040, 0100, 0200, 0400, 01000, 02000, 04000,
010000, 020000, 040000, 0100000};
+int datfd; /* message file descriptor */
+volatile sig_atomic_t delhit;
+int yea;
+
+int loc, newloc, oldloc, oldlc2, wzdark, gaveup, kq, k, k2;
+char *wd1, *wd2; /* the complete words */
+int verb, obj, spk;
+int saveday, savet, mxscor, latncy;
+
+struct hashtab voc[HTSIZE];
+
+struct text rtext[RTXSIZ]; /* random text messages */
+
+struct text mtext[MAGSIZ]; /* magic messages */
+
+int clsses;
+
+struct text ctext[CLSMAX]; /* classes of adventurer */
+int cval[CLSMAX];
+
+struct text ptext[101]; /* object descriptions */
+
+struct text ltext[LOCSIZ]; /* long loc description */
+struct text stext[LOCSIZ]; /* short loc descriptions */
+
+struct travlist *travel[LOCSIZ], *tkk; /* travel is closer to keys(...) */
+
+int atloc[LOCSIZ];
+
+int plac[101]; /* initial object placement */
+int fixd[101], fixed[101]; /* location fixed? */
+
+int actspk[35]; /* rtext msg for verb <n> */
+
+int cond[LOCSIZ]; /* various condition bits */
+
+int hntmax;
+int hints[20][5]; /* info on hints */
+int hinted[20], hintlc[20];
+
+int place[101], prop[101], links[201];
+int abb[LOCSIZ];
+
+int maxtrs, tally, tally2; /* treasure values */
+
+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;
+
+int tk[21], stick, dtotal, attack;
+int turns, lmwarn, iwest, knfloc, detail, /* various flags and
+ * counters */
+ abbnum, maxdie, numdie, holdng, dkill, foobar, bonus, clock1,
+ clock2, saved, closng, panic, closed, scorng;
+
+int demo, newloc, limit;
void
init() /* everything for 1st time run */
>Audit-Trail:
>Unformatted: