Partially ANSIfy C, fix compiler warnings.

This commit is contained in:
Eric S. Raymond 2017-05-18 08:55:38 -04:00
parent 3d8a9827dd
commit c9e9b64575
8 changed files with 29 additions and 17 deletions

View file

@ -1,3 +1,4 @@
#include <stdlib.h>
#include "misc.h" #include "misc.h"
#include "main.h" #include "main.h"
#include "share.h" #include "share.h"
@ -6,8 +7,6 @@
#define TRUE (0==0) #define TRUE (0==0)
#define FALSE (0!=0) #define FALSE (0!=0)
extern carry(), discard(long), attack(), throw(), feed(), fill();
/* This stuff was broken off as part of an effort to get the main program /* 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 * to compile without running out of memory. We're called with a number
* that says what label the caller wanted to "goto", and we return a * that says what label the caller wanted to "goto", and we return a

View file

@ -10,7 +10,7 @@
* TAKE ONE WITHOUT THE OTHER). LIQUIDS ALSO SPECIAL, SINCE THEY DEPEND ON * TAKE ONE WITHOUT THE OTHER). LIQUIDS ALSO SPECIAL, SINCE THEY DEPEND ON
* STATUS OF BOTTLE. ALSO VARIOUS SIDE EFFECTS, ETC. */ * STATUS OF BOTTLE. ALSO VARIOUS SIDE EFFECTS, ETC. */
carry() { int carry() {
if(TOTING(OBJ)) return(2011); if(TOTING(OBJ)) return(2011);
SPK=25; SPK=25;
if(OBJ == PLANT && PROP[PLANT] <= 0)SPK=115; if(OBJ == PLANT && PROP[PLANT] <= 0)SPK=115;
@ -60,7 +60,7 @@ L9015: SPK=238;
* BIRD (MIGHT ATTACK SNAKE OR DRAGON) AND CAGE (MIGHT CONTAIN BIRD) AND VASE. * BIRD (MIGHT ATTACK SNAKE OR DRAGON) AND CAGE (MIGHT CONTAIN BIRD) AND VASE.
* DROP COINS AT VENDING MACHINE FOR EXTRA BATTERIES. */ * DROP COINS AT VENDING MACHINE FOR EXTRA BATTERIES. */
discard(just_do_it)long just_do_it; { int discard(just_do_it)long just_do_it; {
if(just_do_it) goto L9021; if(just_do_it) goto L9021;
if(TOTING(ROD2) && OBJ == ROD && !TOTING(ROD))OBJ=ROD2; if(TOTING(ROD2) && OBJ == ROD && !TOTING(ROD))OBJ=ROD2;
if(!TOTING(OBJ)) return(2011); if(!TOTING(OBJ)) return(2011);
@ -134,7 +134,7 @@ L9028: PROP[VASE]=2;
* OBJECTS FALL INTO TWO CATEGORIES: ENEMIES (SNAKE, DWARF, ETC.) AND OTHERS * OBJECTS FALL INTO TWO CATEGORIES: ENEMIES (SNAKE, DWARF, ETC.) AND OTHERS
* (BIRD, CLAM, MACHINE). AMBIGUOUS IF 2 ENEMIES, OR NO ENEMIES BUT 2 OTHERS. */ * (BIRD, CLAM, MACHINE). AMBIGUOUS IF 2 ENEMIES, OR NO ENEMIES BUT 2 OTHERS. */
attack() { int attack() {
I=ATDWRF(LOC); I=ATDWRF(LOC);
if(OBJ != 0) goto L9124; if(OBJ != 0) goto L9124;
if(I > 0)OBJ=DWARF; if(I > 0)OBJ=DWARF;
@ -217,7 +217,7 @@ L9129: /*etc*/ ;
* AND IF DWARF IS PRESENT THEN ONE MIGHT BE KILLED. (ONLY WAY TO DO SO!) * AND IF DWARF IS PRESENT THEN ONE MIGHT BE KILLED. (ONLY WAY TO DO SO!)
* AXE ALSO SPECIAL FOR DRAGON, BEAR, AND TROLL. TREASURES SPECIAL FOR TROLL. */ * AXE ALSO SPECIAL FOR DRAGON, BEAR, AND TROLL. TREASURES SPECIAL FOR TROLL. */
throw() { int throw() {
if(TOTING(ROD2) && OBJ == ROD && !TOTING(ROD))OBJ=ROD2; if(TOTING(ROD2) && OBJ == ROD && !TOTING(ROD))OBJ=ROD2;
if(!TOTING(OBJ)) return(2011); if(!TOTING(OBJ)) return(2011);
if(OBJ >= 50 && OBJ <= MAXTRS && AT(TROLL)) goto L9178; if(OBJ >= 50 && OBJ <= MAXTRS && AT(TROLL)) goto L9178;
@ -273,7 +273,7 @@ L9178: SPK=159;
/* FEED. IF BIRD, NO SEED. SNAKE, DRAGON, TROLL: QUIP. IF DWARF, MAKE HIM /* FEED. IF BIRD, NO SEED. SNAKE, DRAGON, TROLL: QUIP. IF DWARF, MAKE HIM
* MAD. BEAR, SPECIAL. */ * MAD. BEAR, SPECIAL. */
feed() { int feed() {
if(OBJ != BIRD) goto L9212; if(OBJ != BIRD) goto L9212;
SPK=100; SPK=100;
return(2011); return(2011);
@ -315,7 +315,7 @@ L9216: SPK=14;
/* FILL. BOTTLE OR URN MUST BE EMPTY, AND LIQUID AVAILABLE. (VASE IS NASTY.) */ /* FILL. BOTTLE OR URN MUST BE EMPTY, AND LIQUID AVAILABLE. (VASE IS NASTY.) */
fill() { int fill() {
if(OBJ == VASE) goto L9222; if(OBJ == VASE) goto L9222;
if(OBJ == URN) goto L9224; if(OBJ == URN) goto L9224;
if(OBJ != 0 && OBJ != BOTTLE) return(2011); if(OBJ != 0 && OBJ != BOTTLE) return(2011);

View file

@ -41,7 +41,7 @@ fDATIME(X,Y)long *X, *Y; {
#ifndef _TIME_ #ifndef _TIME_
#include "sys/time.h" #include "sys/time.h"
fDATIME(X,Y)long *X, *Y; { void fDATIME(X,Y)long *X, *Y; {
struct timeval now; struct timeval now;
gettimeofday(&now, 0); gettimeofday(&now, 0);
*X = now.tv_sec; *X = now.tv_sec;

View file

@ -35,6 +35,9 @@
#define OUTSID(LOC) ((LOC) <= 8 || FOREST(LOC) || (LOC) == PLAC[SAPPH] || (LOC) == 180 || (LOC) == 182) #define OUTSID(LOC) ((LOC) <= 8 || FOREST(LOC) || (LOC) == PLAC[SAPPH] || (LOC) == 180 || (LOC) == 182)
#define INDEEP(LOC) ((LOC) >= 15 && !OUTSID(LOC) && (LOC) != 179) #define INDEEP(LOC) ((LOC) >= 15 && !OUTSID(LOC) && (LOC) != 179)
extern int carry(void), discard(long), attack(void), throw(void), feed(void), fill(void);
void score(long);

4
main.c
View file

@ -1,5 +1,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include "main.h"
#include "misc.h" #include "misc.h"
#ifdef __MSDOS__ #ifdef __MSDOS__
@ -8,12 +9,13 @@
#define TRUE (0==0) #define TRUE (0==0)
#define FALSE (0!=0) #define FALSE (0!=0)
long ABB[186], ATAB[331], ATLOC[186], BLKLIN = TRUE, DFLAG, long ABB[186], ATAB[331], ATLOC[186], BLKLIN = TRUE, DFLAG,
DLOC[7], FIXED[101], HOLDNG, DLOC[7], FIXED[101], HOLDNG,
KTAB[331], *LINES, LINK[201], LNLENG, LNPOSN, KTAB[331], *LINES, LINK[201], LNLENG, LNPOSN,
PARMS[26], PLACE[101], PTEXT[101], RTEXT[278], PARMS[26], PLACE[101], PTEXT[101], RTEXT[278],
SETUP = 0, TABSIZ = 330; SETUP = 0, TABSIZ = 330;
char INLINE[101], MAP1[129], MAP2[129]; signed char INLINE[LINESIZE], MAP1[129], MAP2[129];
long ABBNUM, ACTSPK[36], AMBER, ATTACK, AXE, BACK, BATTER, BEAR, BIRD, BLOOD, BONUS, long ABBNUM, ACTSPK[36], AMBER, ATTACK, AXE, BACK, BATTER, BEAR, BIRD, BLOOD, BONUS,
BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST, CHLOC, CHLOC2, BOTTLE, CAGE, CAVE, CAVITY, CHAIN, CHASM, CHEST, CHLOC, CHLOC2,

4
main.h
View file

@ -1,4 +1,6 @@
#define LINESIZE 101
extern long ABB[], ATAB[], ATLOC[], BLKLIN, DFLAG, DLOC[], FIXED[], HOLDNG, extern long ABB[], ATAB[], ATLOC[], BLKLIN, DFLAG, DLOC[], FIXED[], HOLDNG,
KTAB[], *LINES, LINK[], LNLENG, LNPOSN, KTAB[], *LINES, LINK[], LNLENG, LNPOSN,
PARMS[], PLACE[], PTEXT[], RTEXT[], TABSIZ; PARMS[], PLACE[], PTEXT[], RTEXT[], TABSIZ;
extern signed char INLINE[], MAP1[], MAP2[]; extern signed char INLINE[LINESIZE], MAP1[], MAP2[];

17
misc.c
View file

@ -1,10 +1,15 @@
#include <stdlib.h>
#include <stdio.h>
#include "main.h" #include "main.h"
#include "misc.h" #include "misc.h"
#include <stdio.h> #include "funcs.h"
#define TRUE (0==0) #define TRUE (0==0)
#define FALSE (0!=0) #define FALSE (0!=0)
/* hack to ignore GCC Unused Result */
#define IGNORE(r) do{if(r){}}while(0)
/* I/O ROUTINES (SPEAK, PSPEAK, RSPEAK, SETPRM, GETIN, YES) */ /* I/O ROUTINES (SPEAK, PSPEAK, RSPEAK, SETPRM, GETIN, YES) */
#undef SPEAK #undef SPEAK
@ -839,7 +844,7 @@ void fBUG(NUM)long NUM; {
* 28 INVALID MONTH RETURNED BY DATE FUNCTION * 28 INVALID MONTH RETURNED BY DATE FUNCTION
* 29 TOO MANY PARAMETERS GIVEN TO SETPRM */ * 29 TOO MANY PARAMETERS GIVEN TO SETPRM */
printf("Fatal error %d. See source code for interpretation.\n", printf("Fatal error %ld. See source code for interpretation.\n",
NUM); NUM);
exit(FALSE); exit(FALSE);
} }
@ -888,7 +893,7 @@ long I, VAL; static FILE *OPENED = NULL;
if(MAP2[1] == 0)MPINIT(); if(MAP2[1] == 0)MPINIT();
if(FIL) goto L15; if(FIL) goto L15;
gets(INLINE+1); IGNORE(fgets(INLINE+1, sizeof(INLINE)-1, stdin));
if(feof(stdin)) score(1); if(feof(stdin)) score(1);
goto L20; goto L20;
@ -900,7 +905,7 @@ L15: if(!OPENED){
OPENED=fopen("adventure.text","r" /* NOT binary */); OPENED=fopen("adventure.text","r" /* NOT binary */);
if(!OPENED){printf("Can't read adventure.text!\n"); exit(FALSE);} if(!OPENED){printf("Can't read adventure.text!\n"); exit(FALSE);}
} }
fgets(INLINE+1,100,OPENED); IGNORE(fgets(INLINE+1,100,OPENED));
L20: LNLENG=0; L20: LNLENG=0;
/* 25 */ for (I=1; I<=100 && INLINE[I]!=0; I++) { /* 25 */ for (I=1; I<=100 && INLINE[I]!=0; I++) {
@ -1002,12 +1007,12 @@ L10: fclose(F);
return; return;
L20: printf("\nFile name: "); L20: printf("\nFile name: ");
gets(NAME); IGNORE(fgets(NAME, sizeof(NAME), stdin));
F=fopen(NAME,(IN ? READ_MODE : WRITE_MODE)); F=fopen(NAME,(IN ? READ_MODE : WRITE_MODE));
if(F == NULL) {printf("Can't open file, try again.\n"); goto L20;} if(F == NULL) {printf("Can't open file, try again.\n"); goto L20;}
return; return;
L30: if(IN)fread(ARR,4,250,F); L30: if(IN)IGNORE(fread(ARR,4,250,F));
if(!IN)fwrite(ARR,4,250,F); if(!IN)fwrite(ARR,4,250,F);
return; return;

View file

@ -1,3 +1,4 @@
#include <stdlib.h>
#include "misc.h" #include "misc.h"
#include "main.h" #include "main.h"
#include "share.h" #include "share.h"