diff options
Diffstat (limited to 'games')
93 files changed, 697 insertions, 580 deletions
diff --git a/games/adventure/crc.c b/games/adventure/crc.c index f629325..4f3b971 100644 --- a/games/adventure/crc.c +++ b/games/adventure/crc.c @@ -39,9 +39,9 @@ static char sccsid[] = "@(#)crc.c 8.1 (Berkeley) 5/31/93"; static char ORIGINAL_sccsid[] = "@(#)crc.c 5.2 (Berkeley) 4/4/91"; #endif /* not lint */ -typedef unsigned long u_long; +#include <sys/types.h> -u_long crctab[] = { +const u_long crctab[] = { 0x7fffffff, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, @@ -105,7 +105,7 @@ u_long crctab[] = { */ u_long crcval; -int step; +u_int step; crc_start() { @@ -113,11 +113,11 @@ crc_start() } u_long crc(ptr, nr) /* Process nr bytes at a time; ptr points to them */ -char *ptr; +const char *ptr; int nr; { register int i; - register char *p; + register const char *p; while (nr > 0) for (p = ptr; nr--; ++p) diff --git a/games/adventure/done.c b/games/adventure/done.c index dcd8e33..90352d6 100644 --- a/games/adventure/done.c +++ b/games/adventure/done.c @@ -109,6 +109,7 @@ int entry; /* entry=2 means goto 20000 */ /* 3=19000 */ } +void die(entry) /* label 90 */ int entry; { register int i; @@ -135,5 +136,4 @@ int entry; } loc=3; oldloc=loc; - return(2000); } diff --git a/games/adventure/hdr.h b/games/adventure/hdr.h index 6c8a1fd..d831a11 100644 --- a/games/adventure/hdr.h +++ b/games/adventure/hdr.h @@ -53,15 +53,16 @@ /* hdr.h: included by c advent files */ #include <sys/types.h> +#include <signal.h> int datfd; /* message file descriptor */ -int delhit; +volatile sig_atomic_t delhit; 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; diff --git a/games/adventure/init.c b/games/adventure/init.c index 249405e..9e81fb8 100644 --- a/games/adventure/init.c +++ b/games/adventure/init.c @@ -197,14 +197,14 @@ linkdata() /* secondary data manipulation */ trapdel() /* come here if he hits a del */ -{ delhit++; /* main checks, treats as QUIT */ +{ delhit = 1; /* main checks, treats as QUIT */ signal(2,trapdel); /* catch subsequent DELs */ } startup() { - demo=Start(0); + demo=Start(); srandomdev(); hinted[3]=yes(65,1,0); newloc=1; diff --git a/games/adventure/io.c b/games/adventure/io.c index df1236b..54e41b5 100644 --- a/games/adventure/io.c +++ b/games/adventure/io.c @@ -46,6 +46,7 @@ static char sccsid[] = "@(#)io.c 8.1 (Berkeley) 5/31/93"; #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <err.h> getin(wrd1,wrd2) /* get command from user */ @@ -78,6 +79,9 @@ char **wrd1,**wrd2; /* no prompt, usually */ *s=0; return; } + case EOF: + printf("user closed input stream, quitting...\n"); + exit(0); default: if (++numch>=MAXSTR) /* string too long */ { printf("Give me a break!!\n"); @@ -90,27 +94,19 @@ char **wrd1,**wrd2; /* no prompt, usually */ } } - -confirm(mesg) /* confirm irreversible action */ -char *mesg; -{ register int result; - printf("%s",mesg); /* tell him what he did */ - if (getchar()=='y') /* was his first letter a 'y'? */ - result=1; - else result=0; - FLUSHLINE; - return(result); -} - yes(x,y,z) /* confirm with rspeak */ int x,y,z; { register int result; - register char ch; + int ch; for (;;) { rspeak(x); /* tell him what we want*/ if ((ch=getchar())=='y') result=TRUE; else if (ch=='n') result=FALSE; + else if (ch == EOF) { + printf("user closed input stream, quitting...\n"); + exit(0); + } FLUSHLINE; if (ch=='y'|| ch=='n') break; printf("Please answer the question.\n"); @@ -123,12 +119,16 @@ int x,y,z; yesm(x,y,z) /* confirm with mspeak */ int x,y,z; { register int result; - register char ch; + int ch; for (;;) { mspeak(x); /* tell him what we want*/ if ((ch=getchar())=='y') result=TRUE; else if (ch=='n') result=FALSE; + else if (ch == EOF) { + printf("user closed input stream, quitting...\n"); + exit(0); + } FLUSHLINE; if (ch=='y'|| ch=='n') break; printf("Please answer the question.\n"); @@ -144,8 +144,8 @@ char *inptr; /* Pointer into virtual disk */ int outsw = 0; /* putting stuff to data file? */ -char iotape[] = "Ax3F'\003tt$8h\315qer*h\017nGKrX\207:!l"; -char *tape = iotape; /* pointer to encryption tape */ +const char iotape[] = "Ax3F'\003tt$8h\315qer*h\017nGKrX\207:!l"; +const char *tape = iotape; /* pointer to encryption tape */ next() /* next virtual char, bump adr */ { @@ -274,8 +274,7 @@ int sect; break; case 6: /* random messages */ if (oldloc>RTXSIZ) - { printf("Too many random msgs\n"); - exit(0); + { errx(1, "Too many random msgs"); } rtext[oldloc].seekadr=seekhere; rtext[oldloc].txtlen=maystart-seekstart; @@ -287,15 +286,13 @@ int sect; break; case 12: /* magic messages */ if (oldloc>MAGSIZ) - { printf("Too many magic msgs\n"); - exit(0); + { errx(1, "Too many magic msgs"); } mtext[oldloc].seekadr=seekhere; mtext[oldloc].txtlen=maystart-seekstart; break; default: - printf("rdesc called with bad section\n"); - exit(0); + errx(1, "rdesc called with bad section"); } seekhere += maystart-seekstart; } @@ -331,13 +328,15 @@ rtrav() /* read travel table */ if (locc!=oldloc) /* getting a new entry */ { t=travel[locc]=(struct travlist *) malloc(sizeof (struct travlist)); /* printf("New travel list for %d\n",locc); */ + if (t == NULL) + errx(1, "Out of memory!"); entries=0; oldloc=locc; } for (s=buf;; *s++) /* get the newloc number /ASCII */ if ((*s=next())==TAB || *s==LF) break; *s=0; - len=length(buf)-1; /* quad long number handling */ + len=strlen(buf); /* quad long number handling */ /* printf("Newloc: %s (%d chars)\n",buf,len); */ if (len<4) /* no "m" conditions */ { m=0; @@ -349,7 +348,11 @@ rtrav() /* read travel table */ m=atoi(buf); } while (breakch!=LF) /* only do one line at a time */ - { if (entries++) t=t->next=(struct travlist *) malloc(sizeof (struct travlist)); + { if (entries++) { + t=t->next=(struct travlist *) malloc(sizeof (struct travlist)); + if (t == NULL) + errx(1, "Out of memory!"); + } t->tverb=rnum();/* get verb from the file */ t->tloc=n; /* table entry mod 1000 */ t->conditions=m;/* table entry / 1000 */ @@ -453,7 +456,7 @@ int msg; speak(msg) /* read, decrypt, and print a message (not ptext) */ -struct text *msg;/* msg is a pointer to seek address and length of mess */ +const struct text *msg;/* msg is a pointer to seek address and length of mess */ { register char *s, nonfirst; @@ -486,7 +489,8 @@ int skip; /* assumes object 1 doesn't have prop 1, obj 2 no prop 2 &c*/ char *tbuf; msg = &ptext[m]; - if ((tbuf=(char *) malloc(msg->txtlen + 1)) == 0) bug(108); + if ((tbuf=(char *) malloc(msg->txtlen + 1)) == 0) + errx(1, "Out of memory!"); memcpy(tbuf, msg->seekadr, msg->txtlen + 1); /* Room to null */ s = tbuf; diff --git a/games/adventure/main.c b/games/adventure/main.c index 6f7277d..bdd37f7 100644 --- a/games/adventure/main.c +++ b/games/adventure/main.c @@ -51,6 +51,7 @@ static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 6/2/93"; #include <sys/file.h> #include <signal.h> #include <stdio.h> +#include <string.h> #include "hdr.h" @@ -68,7 +69,7 @@ char **argv; setgid(getgid()); init(); /* Initialize everything */ - signal(2,trapdel); + signal(SIGINT,trapdel); if (argc > 1) /* Restore file specified */ { /* Restart is label 8305 (Fortran) */ @@ -76,15 +77,15 @@ char **argv; switch(i) { case 0: /* The restore worked fine */ - yea=Start(0); + yea=Start(); k=null; unlink(argv[1]);/* Don't re-use the save */ goto l8; /* Get where we're going */ case 1: /* Couldn't open it */ - exit(0); /* So give up */ + exit(1); /* So give up */ case 2: /* Oops -- file was altered */ rspeak(202); /* You dissolve */ - exit(0); /* File could be non-adventure */ + exit(1); /* File could be non-adventure */ } /* So don't unlink it. */ } @@ -105,7 +106,7 @@ char **argv; kk = &stext[loc]; if ((abb[loc]%abbnum)==0 || kk->seekadr==0) kk = <ext[loc]; - if (!forced(loc) && dark(0)) + if (!forced(loc) && dark()) { if (wzdark && pct(35)) { die(90); goto l2000; @@ -118,7 +119,7 @@ char **argv; if (forced(loc)) goto l8; if (loc==33 && pct(25)&&!closng) rspeak(8); - if (!dark(0)) + if (!dark()) { abb[loc]++; for (i=atloc[loc]; i!=0; i=linkx[i]) /*2004 */ { obj=i; @@ -153,12 +154,12 @@ char **argv; if (toting(i)&&prop[i]<0) /*2604 */ prop[i] = -1-prop[i]; } - wzdark=dark(0); /* 2605 */ + wzdark=dark(); /* 2605 */ if (knfloc>0 && knfloc!=loc) knfloc=1; getin(&wd1,&wd2); if (delhit) /* user typed a DEL */ { delhit=0; /* reset counter */ - copystr("quit",wd1); /* pretend he's quitting*/ + strcpy(wd1,"quit"); /* pretend he's quitting*/ *wd2=0; } l2608: if ((foobar = -foobar)>0) foobar=0; /* 2608 */ @@ -210,16 +211,16 @@ char **argv; } l19999: k=43; if (liqloc(loc)==water) k=70; - if (weq(wd1,"enter") && - (weq(wd2,"strea")||weq(wd2,"water"))) + if (!strncmp(wd1,"enter",5) && + (!strncmp(wd2,"strea",5)||!strncmp(wd2,"water",5))) goto l2010; - if (weq(wd1,"enter") && *wd2!=0) goto l2800; - if ((!weq(wd1,"water")&&!weq(wd1,"oil")) - || (!weq(wd2,"plant")&&!weq(wd2,"door"))) + if (!strncmp(wd1,"enter",5) && *wd2!=0) goto l2800; + if ((strncmp(wd1,"water",5)&&strncmp(wd1,"oil",3)) + || (strncmp(wd2,"plant",5)&&strncmp(wd2,"door",4))) goto l2610; - if (at(vocab(wd2,1))) copystr("pour",wd2); + if (at(vocab(wd2,1))) strcpy(wd2,"pour"); - l2610: if (weq(wd1,"west")) + l2610: if (!strncmp(wd1,"west",4)) if (++iwest==10) rspeak(17); l2630: i=vocab(wd1,-1); if (i== -1) @@ -237,22 +238,19 @@ char **argv; case 3: goto l4000; case 4: goto l2010; default: - printf("Error 22\n"); - exit(0); + bug(22); } l8: switch(march()) { case 2: continue; /* i.e. goto l2 */ case 99: - switch(die(99)) - { case 2000: goto l2000; - default: bug(111); - } + die(99); + goto l2000; default: bug(110); } - l2800: copystr(wd2,wd1); + l2800: strcpy(wd1,wd2); *wd2=0; goto l2610; @@ -355,7 +353,7 @@ char **argv; if (here(tablet)) obj=obj*100+tablet; if (here(messag)) obj=obj*100+messag; if (closed&&toting(oyster)) obj=oyster; - if (obj>100||obj==0||dark(0)) goto l8000; + if (obj>100||obj==0||dark()) goto l8000; goto l9270; case 30: /* suspend=8300 */ spk=201; @@ -366,7 +364,7 @@ char **argv; printf(" %d minutes before continuing.",latncy); if (!yes(200,54,54)) goto l2012; datime(&saved,&savet); - ciao(argv[0]); /* Do we quit? */ + ciao(); /* Do we quit? */ continue; /* Maybe not */ case 31: /* hours=8310 */ printf("Colossal cave is closed 9am-5pm Mon "); @@ -418,7 +416,7 @@ char **argv; l9080: if (!here(lamp)) goto l2011; prop[lamp]=0; rspeak(40); - if (dark(0)) rspeak(16); + if (dark()) rspeak(16); goto l2012; case 9: /* wave */ @@ -443,7 +441,7 @@ char **argv; default: bug(112); } l9130: case 13: /* pour */ - if (obj==bottle||obj==0) obj=liq(0); + if (obj==bottle||obj==0) obj=liq(); if (obj==0) goto l8000; if (!toting(obj)) goto l2011; spk=78; @@ -472,10 +470,10 @@ char **argv; ||obj==bear) spk=71; goto l2011; l9150: case 15: /* 9150 - drink */ - if (obj==0&&liqloc(loc)!=water&&(liq(0)!=water + if (obj==0&&liqloc(loc)!=water&&(liq()!=water ||!here(bottle))) goto l8000; if (obj!=0&&obj!=water) spk=110; - if (spk==110||liq(0)!=water||!here(bottle)) + if (spk==110||liq()!=water||!here(bottle)) goto l2011; prop[bottle]=1; place[water]=0; @@ -494,7 +492,7 @@ char **argv; default: bug(113); } case 19: case 20: /* 9190: find, invent */ - if (at(obj)||(liq(0)==obj&&at(bottle)) + if (at(obj)||(liq()==obj&&at(bottle)) ||k==liqloc(loc)) spk=94; for (i=1; i<=5; i++) if (dloc[i]==loc&&dflag>=2&&obj==dwarf) @@ -522,7 +520,7 @@ char **argv; rspeak(bonus); done(2); l9270: case 27: /* read */ - if (dark(0)) goto l5190; + if (dark()) goto l5190; if (obj==magzin) spk=190; if (obj==tablet) spk=196; if (obj==messag) spk=191; @@ -566,7 +564,7 @@ char **argv; l5110: if (k!=dwarf) goto l5120; for (i=1; i<=5; i++) if (dloc[i]==loc&&dflag>=2) goto l5010; - l5120: if ((liq(0)==k&&here(bottle))||k==liqloc(loc)) goto l5010; + l5120: if ((liq()==k&&here(bottle))||k==liqloc(loc)) goto l5010; if (obj!=plant||!at(plant2)||prop[plant2]==0) goto l5130; obj=plant2; goto l5010; diff --git a/games/adventure/save.c b/games/adventure/save.c index 5277380..907d5bf 100644 --- a/games/adventure/save.c +++ b/games/adventure/save.c @@ -118,7 +118,7 @@ struct savestruct save_array[] = }; save(outfile) /* Two passes on data: first to get checksum, second */ -char *outfile; /* to output the data using checksum to start random #s */ +const char *outfile; /* to output the data using checksum to start random #s */ { FILE *out; struct savestruct *p; @@ -151,7 +151,7 @@ char *outfile; /* to output the data using checksum to start random #s */ } restore(infile) -char *infile; +const char *infile; { FILE *in; struct savestruct *p; diff --git a/games/adventure/setup.c b/games/adventure/setup.c index da1c09f..c67d4c7 100644 --- a/games/adventure/setup.c +++ b/games/adventure/setup.c @@ -59,15 +59,14 @@ static char sccsid[] = "@(#)setup.c 8.1 (Berkeley) 5/31/93"; #include <stdio.h> #include <stdlib.h> +#include <err.h> #include "hdr.h" /* SEED lives in there; keep them coordinated. */ -#define USAGE "Usage: setup file > data.c (file is typically glorkz)\n" +#define USAGE "Usage: setup file > data.c (file is typically glorkz)" #define YES 1 #define NO 0 -void fatal(); - #define LINE 10 /* How many values do we get on a line? */ main(argc, argv) @@ -77,10 +76,10 @@ char *argv[]; FILE *infile; int c, count, linestart; - if (argc != 2) fatal(USAGE); + if (argc != 2) errx(1, USAGE); if ((infile = fopen(argv[1], "r")) == NULL) - fatal("Can't read file %s.\n", argv[1]); + err(1, "Can't read file %s", argv[1]); puts("/*\n * data.c: created by setup from the ascii data file."); puts(SIG1); puts(SIG2); @@ -118,11 +117,3 @@ char *argv[]; fclose(infile); exit(0); } - - -void fatal(format, arg) -char *format; -{ - fprintf(stderr, format, arg); - exit(1); -} diff --git a/games/adventure/subr.c b/games/adventure/subr.c index d723512..26d7c1e 100644 --- a/games/adventure/subr.c +++ b/games/adventure/subr.c @@ -43,6 +43,7 @@ static char sccsid[] = "@(#)subr.c 8.1 (Berkeley) 5/31/93"; /* Re-coding of advent in C: subroutines from main */ #include <stdio.h> +#include <string.h> # include "hdr.h" /* Statement functions */ @@ -69,7 +70,7 @@ int pbotl; { return((1-pbotl)*water+(pbotl/2)*(water+oil)); } -liq(foo) +liq() { register int i; i=prop[bottle]; if (i>-1-i) return(liq2(i)); @@ -98,7 +99,7 @@ int locc; return(FALSE); } -dark(foo) +dark() { if ((cond[loc]%2)==0 && (prop[lamp]==0 || !here(lamp))) return(TRUE); return(FALSE); @@ -373,6 +374,7 @@ trbridge() /* 30300 */ } +int badmove() /* 20 */ { spk=12; if (k>=43 && k<=50) spk=9; @@ -383,16 +385,17 @@ badmove() /* 20 */ if (k==62||k==65) spk=42; if (k==17) spk=80; rspeak(spk); - return(2); } +int bug(n) int n; { printf("Please tell jim@rand.org that fatal bug %d happened.\n",n); - exit(0); + exit(1); } +void checkhints() /* 2600 &c */ { register int hint; for (hint=4; hint<=hntmax; hint++) @@ -433,7 +436,7 @@ checkhints() /* 2600 &c */ trsay() /* 9030 */ { register int i; - if (*wd2!=0) copystr(wd2,wd1); + if (*wd2!=0) strcpy(wd1,wd2); i=vocab(wd1,-1); if (i==62||i==65||i==71||i==2025) { *wd2=0; @@ -454,7 +457,7 @@ trtake() /* 9010 */ if (obj==chain&&prop[bear]!=0) spk=170; if (fixed[obj]!=0) return(2011); if (obj==water||obj==oil) - { if (here(bottle)&&liq(0)==obj) + { if (here(bottle)&&liq()==obj) { obj=bottle; goto l9017; } @@ -484,14 +487,14 @@ l9017: if (holdng>=7) l9014: if ((obj==bird||obj==cage)&&prop[bird]!=0) carry(bird+cage-obj,loc); carry(obj,loc); - k=liq(0); + k=liq(); if (obj==bottle && k!=0) place[k] = -1; return(2009); } dropper() /* 9021 */ -{ k=liq(0); +{ k=liq(); if (k==obj) obj=bottle; if (obj==bottle&&k!=0) place[k]=0; if (obj==cage&&prop[bird]!=0) drop(bird,loc); @@ -640,7 +643,7 @@ trkill() /* 9120 */ verb=0; obj=0; getin(&wd1,&wd2); - if (!weq(wd1,"y")&&!weq(wd1,"yes")) return(2608); + if (strncmp(wd1,"y",1)&&strncmp(wd1,"yes",3)) return(2608); pspeak(dragon,1); prop[dragon]=2; prop[rug]=0; @@ -764,16 +767,17 @@ trfill() /* 9220 */ if (obj==0&&!here(bottle)) return(8000); spk=107; if (liqloc(loc)==0) spk=106; - if (liq(0)!=0) spk=105; + if (liq()!=0) spk=105; if (spk!=107) return(2011); prop[bottle]=((cond[loc]%4)/2)*2; - k=liq(0); + k=liq(); if (toting(bottle)) place[k]= -1; if (k==oil) spk=108; return(2011); } +void closing() /* 10000 */ { register int i; @@ -795,10 +799,10 @@ closing() /* 10000 */ rspeak(129); clock1 = -1; closng=TRUE; - return(19999); } +void caveclose() /* 11000 */ { register int i; prop[bottle]=put(bottle,115,1); @@ -825,5 +829,4 @@ caveclose() /* 11000 */ if (toting(i)) dstroy(i); rspeak(132); closed=TRUE; - return(2); } diff --git a/games/adventure/vocab.c b/games/adventure/vocab.c index 357e238..deb5c53 100644 --- a/games/adventure/vocab.c +++ b/games/adventure/vocab.c @@ -44,6 +44,7 @@ static char sccsid[] = "@(#)vocab.c 8.1 (Berkeley) 5/31/93"; #include <stdio.h> #include <stdlib.h> +#include <err.h> #include "hdr.h" dstroy(object) @@ -113,11 +114,12 @@ int object,where; vocab(word,type,value) /* look up or store a word */ -char *word; +const char *word; int type; /* -2 for store, -1 for user word, >=0 for canned lookup*/ int value; /* used for storing only */ { register int adr; - register char *s,*t; + const char *s; + register char *t; int hash, i; struct hashtab *h; @@ -134,13 +136,15 @@ int value; /* used for storing only */ if (h->val) /* already got an entry? */ goto exitloop2; h->val=value; - h->atab=malloc(length(word)); + h->atab=malloc(strlen(word)+1); + if (h->atab == NULL) + errx(1, "Out of memory!"); for (s=word,t=h->atab; *s;) *t++ = *s++ ^ '='; *t=0^'='; /* encrypt slightly to thwart core reader */ /* printf("Stored \"%s\" (%d ch) as entry %d\n", */ - /* word, length(word), adr); */ + /* word, strlen(word)+1, adr); */ return(0); /* entry unused */ case -1: /* looking up user word */ if (h->val==0) return(-1); /* not found */ @@ -152,8 +156,7 @@ int value; /* used for storing only */ return(h->val); default: /* looking up known word */ if (h->val==0) - { printf("Unable to find %s in vocab\n",word); - exit(0); + { errx(1, "Unable to find %s in vocab", word); } for (s=word, t=h->atab;*t ^ '=';) if ((*s++ ^ '=') != *t++) goto exitloop2; @@ -164,44 +167,11 @@ int value; /* used for storing only */ exitloop2: /* hashed entry does not match */ if (adr+1==hash || (adr==HTSIZE && hash==0)) - { printf("Hash table overflow\n"); - exit(0); + { errx(1, "Hash table overflow"); } } } - -copystr(w1,w2) /* copy one string to another */ -char *w1,*w2; -{ register char *s,*t; - for (s=w1,t=w2; *s;) - *t++ = *s++; - *t=0; -} - -weq(w1,w2) /* compare words */ -char *w1,*w2; /* w1 is user, w2 is system */ -{ register char *s,*t; - register int i; - s=w1; - t=w2; - for (i=0; i<5; i++) /* compare at most 5 chars */ - { if (*t==0 && *s==0) - return(TRUE); - if (*s++ != *t++) return(FALSE); - } - return(TRUE); -} - - -length(str) /* includes 0 at end */ -char *str; -{ register char *s; - register int n; - for (n=0,s=str; *s++;) n++; - return(n+1); -} - prht() /* print hash table */ { register int i,j,l; char *c; diff --git a/games/adventure/wizard.c b/games/adventure/wizard.c index 17eedb1..326cc94 100644 --- a/games/adventure/wizard.c +++ b/games/adventure/wizard.c @@ -56,9 +56,15 @@ int *d,*t; time(&tvec); tptr=localtime(&tvec); - *d=tptr->tm_yday+365*(tptr->tm_year-77); /* day since 1977 (mod leap) */ - *t=tptr->tm_hour*60+tptr->tm_min; /* and minutes since midnite */ -} /* pretty painless */ + /* day since 1977 */ + *d = (tptr->tm_yday + 365 * (tptr->tm_year - 77) + + (tptr->tm_year - 77) / 4 - (tptr->tm_year - 1) / 100 + + (tptr->tm_year + 299) / 400); + /* bug: this will overflow in the year 2066 AD (with 16 bit int) */ + /* it will be attributed to Wm the C's millenial celebration */ + /* and minutes since midnite */ + *t=tptr->tm_hour*60+tptr->tm_min; +} char magic[6]; @@ -69,7 +75,7 @@ poof() latncy = 45; } -Start(n) +Start() { int d,t,delay; datime(&d,&t); @@ -100,7 +106,7 @@ wizard() /* not as complex as advent/10 (for now) */ if (!yesm(16,0,7)) return(FALSE); mspeak(17); getin(&word,&x); - if (!weq(word,magic)) + if (strncmp(word,magic,5)) { mspeak(20); return(FALSE); } @@ -108,16 +114,21 @@ wizard() /* not as complex as advent/10 (for now) */ return(TRUE); } -ciao(cmdfile) -char *cmdfile; +ciao() { register char *c; register int outfd, size; char fname[80], buf[512]; extern unsigned filesize; printf("What would you like to call the saved version?\n"); - for (c=fname;; c++) - if ((*c=getchar())=='\n') break; + /* XXX - should use fgetln to avoid arbitrary limit */ + for (c = fname; c < fname + sizeof fname - 1; c++) { + int ch; + ch = getchar(); + if (ch == '\n' || ch == EOF) + break; + *c = ch; + } *c=0; if (save(fname) != 0) return; /* Save failed */ printf("To resume, say \"adventure %s\".\n", fname); diff --git a/games/arithmetic/arithmetic.c b/games/arithmetic/arithmetic.c index f668ff4..8c329de 100644 --- a/games/arithmetic/arithmetic.c +++ b/games/arithmetic/arithmetic.c @@ -79,9 +79,9 @@ static char sccsid[] = "@(#)arithmetic.c 8.1 (Berkeley) 5/31/93"; #include <string.h> #include <stdlib.h> -char keylist[] = "+-x/"; -char defaultkeys[] = "+-"; -char *keys = defaultkeys; +const char keylist[] = "+-x/"; +const char defaultkeys[] = "+-"; +const char *keys = defaultkeys; int nkeys = sizeof(defaultkeys) - 1; int rangemax = 10; int nright, nwrong; @@ -105,10 +105,13 @@ main(argc, argv) int ch, cnt; void intr(); + /* Revoke setgid privileges */ + setgid(getgid()); + while ((ch = getopt(argc, argv, "r:o:")) != -1) switch(ch) { case 'o': { - register char *p; + register const char *p; for (p = keys = optarg; *p; ++p) if (!index(keylist, *p)) { diff --git a/games/atc/Makefile b/games/atc/Makefile index 87bc65b..d640d73 100644 --- a/games/atc/Makefile +++ b/games/atc/Makefile @@ -13,7 +13,5 @@ HIDEGAME=hidegame beforeinstall: (cd ${.CURDIR}/games; ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 440 \ ${GAMES} ${DESTDIR}${SHAREDIR}/games/atc) - ${INSTALL} -c -o ${BINOWN} -g ${BINGRP} -m 664 ${.CURDIR}/games/ATC_scores \ - ${DESTDIR}/var/games/atc_score .include <bsd.prog.mk> diff --git a/games/atc/def.h b/games/atc/def.h index be34a61..99e3190 100644 --- a/games/atc/def.h +++ b/games/atc/def.h @@ -47,7 +47,9 @@ #define AUTHOR_STR "ATC - by Ed James" -#define PI 3.14159654 +#ifndef PI +#define PI 3.14159265358979323846 +#endif #define LOWFUEL 15 diff --git a/games/atc/extern.c b/games/atc/extern.c index 0b2ada7..ea34434 100644 --- a/games/atc/extern.c +++ b/games/atc/extern.c @@ -53,7 +53,7 @@ char GAMES[] = "Game_List"; int clck, safe_planes, start_time, test_mode; -char *file; +const char *file; FILE *filein, *fileout; diff --git a/games/atc/extern.h b/games/atc/extern.h index 5f0fa93..4072873 100644 --- a/games/atc/extern.h +++ b/games/atc/extern.h @@ -45,7 +45,8 @@ * For more info on this and all of my stuff, mail edjames@berkeley.edu. */ -extern char GAMES[], *file; +extern char GAMES[]; +extern const char *file; extern int clck, safe_planes, start_time, test_mode; diff --git a/games/atc/graphics.c b/games/atc/graphics.c index e7a34bf..ad93d1c 100644 --- a/games/atc/graphics.c +++ b/games/atc/graphics.c @@ -122,10 +122,11 @@ init_gr() } setup_screen(scp) - C_SCREEN *scp; + const C_SCREEN *scp; { register int i, j; - char str[3], *airstr; + char str[3]; + const char *airstr; str[2] = '\0'; @@ -213,8 +214,9 @@ setup_screen(scp) } draw_line(w, x, y, lx, ly, s) - WINDOW *w; - char *s; + WINDOW *w; + int x, y, lx, ly; + const char *s; { int dx, dy; @@ -246,7 +248,7 @@ iomove(pos) } ioaddstr(pos, str) - char *str; + const char *str; { wmove(input, 0, pos); waddstr(input, str); @@ -262,7 +264,7 @@ ioclrtobot() } ioerror(pos, len, str) - char *str; + const char *str; { int i; @@ -359,8 +361,8 @@ planewin() } loser(p, s) - PLANE *p; - char *s; + const PLANE *p; + const char *s; { int c; #ifdef BSD diff --git a/games/atc/input.c b/games/atc/input.c index e5418b7..a913f1f 100644 --- a/games/atc/input.c +++ b/games/atc/input.c @@ -66,10 +66,10 @@ static char sccsid[] = "@(#)input.c 8.1 (Berkeley) 5/31/93"; #define NUMTOKEN 257 typedef struct { - int token; - int to_state; - char *str; - char *(*func)(); + int token; + int to_state; + const char *str; + const char *(*func)(); } RULE; typedef struct { @@ -95,7 +95,7 @@ typedef struct { #define NUMSTATES NUMELS(st) -char *setplane(), *circle(), *left(), *right(), *Left(), *Right(), +const char *setplane(), *circle(), *left(), *right(), *Left(), *Right(), *beacon(), *ex_it(), *climb(), *descend(), *setalt(), *setrelalt(), *benum(), *to_dir(), *rel_dir(), *delayb(), *mark(), *unmark(), *airport(), *turn(), *ignore(); @@ -241,9 +241,9 @@ push(ruleno, ch) getcommand() { - int c, i, done; - char *s, *(*func)(); - PLANE *pp; + int c, i, done; + const char *s, *(*func)(); + PLANE *pp; rezero(); @@ -368,7 +368,7 @@ gettoken() return (tval); } -char * +const char * setplane(c) { PLANE *pp; @@ -381,7 +381,7 @@ setplane(c) return (NULL); } -char * +const char * turn(c) { if (p.altitude == 0) @@ -389,7 +389,7 @@ turn(c) return (NULL); } -char * +const char * circle(c) { if (p.altitude == 0) @@ -398,7 +398,7 @@ circle(c) return (NULL); } -char * +const char * left(c) { dir = D_LEFT; @@ -408,7 +408,7 @@ left(c) return (NULL); } -char * +const char * right(c) { dir = D_RIGHT; @@ -418,7 +418,7 @@ right(c) return (NULL); } -char * +const char * Left(c) { p.new_dir = p.dir - 2; @@ -427,7 +427,7 @@ Left(c) return (NULL); } -char * +const char * Right(c) { p.new_dir = p.dir + 2; @@ -436,7 +436,7 @@ Right(c) return (NULL); } -char * +const char * delayb(c) { int xdiff, ydiff; @@ -481,42 +481,42 @@ delayb(c) return (NULL); } -char * +const char * beacon(c) { dest_type = T_BEACON; return (NULL); } -char * +const char * ex_it(c) { dest_type = T_EXIT; return (NULL); } -char * +const char * airport(c) { dest_type = T_AIRPORT; return (NULL); } -char * +const char * climb(c) { dir = D_UP; return (NULL); } -char * +const char * descend(c) { dir = D_DOWN; return (NULL); } -char * +const char * setalt(c) { if ((p.altitude == c - '0') && (p.new_altitude == p.altitude)) @@ -525,7 +525,7 @@ setalt(c) return (NULL); } -char * +const char * setrelalt(c) { if (c == 0) @@ -549,7 +549,7 @@ setrelalt(c) return (NULL); } -char * +const char * benum(c) { dest_no = c -= '0'; @@ -580,14 +580,14 @@ benum(c) return (NULL); } -char * +const char * to_dir(c) { p.new_dir = dir_no(c); return (NULL); } -char * +const char * rel_dir(c) { int angle; @@ -611,7 +611,7 @@ rel_dir(c) return (NULL); } -char * +const char * mark(c) { if (p.altitude == 0) @@ -622,7 +622,7 @@ mark(c) return (NULL); } -char * +const char * unmark(c) { if (p.altitude == 0) @@ -633,7 +633,7 @@ unmark(c) return (NULL); } -char * +const char * ignore(c) { if (p.altitude == 0) diff --git a/games/atc/log.c b/games/atc/log.c index f55bf56..cd347a4 100644 --- a/games/atc/log.c +++ b/games/atc/log.c @@ -51,9 +51,15 @@ static char sccsid[] = "@(#)log.c 8.1 (Berkeley) 5/31/93"; #include "include.h" #include "pathnames.h" -compar(a, b) - SCORE *a, *b; +int +compar(va, vb) + const void *va, *vb; { + const SCORE *a, *b; + + a = (const SCORE *)va; + b = (const SCORE *)vb; + if (b->planes == a->planes) return (b->time - a->time); else @@ -70,7 +76,7 @@ compar(a, b) #define MIN(t) (((t) % SECAHOUR) / SECAMIN) #define SEC(t) ((t) % SECAMIN) -char * +const char * timestr(t) { static char s[80]; @@ -152,7 +158,7 @@ log_score(list_em) #endif #ifdef SYSV uname(&name); - strcpy(thisscore.host, name.sysname); + strcpy(thisscore.host, name.nodename); #endif cp = rindex(file, '/'); diff --git a/games/atc/main.c b/games/atc/main.c index 115a916..5e225a5 100644 --- a/games/atc/main.c +++ b/games/atc/main.c @@ -58,17 +58,18 @@ static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 5/31/93"; #include "pathnames.h" main(ac, av) + int ac; char *av[]; { int seed = 0; int f_usage = 0, f_list = 0, f_showscore = 0; int f_printpath = 0; - char *file = NULL; + const char *file = NULL; char *name, *ptr; #ifdef BSD struct itimerval itv; #endif - extern char *default_game(), *okay_game(); + extern const char *default_game(), *okay_game(); extern void log_score(), quit(), update(); start_time = time(0); @@ -221,7 +222,7 @@ main(ac, av) } read_file(s) - char *s; + const char *s; { extern FILE *yyin; int retval; @@ -241,7 +242,7 @@ read_file(s) return (0); } -char * +const char * default_game() { FILE *fp; @@ -266,13 +267,14 @@ default_game() return (file); } -char * +const char * okay_game(s) char *s; { FILE *fp; static char file[256]; - char *ret = NULL, line[256], games[256]; + const char *ret = NULL; + char line[256], games[256]; strcpy(games, _PATH_GAMES); strcat(games, GAMES); diff --git a/games/atc/update.c b/games/atc/update.c index 4e9a5a4..725c3b9 100644 --- a/games/atc/update.c +++ b/games/atc/update.c @@ -50,6 +50,8 @@ static char sccsid[] = "@(#)update.c 8.1 (Berkeley) 5/31/93"; #include <string.h> #include "include.h" +char name(); + update() { int i, dir_diff, mask, unclean; @@ -220,9 +222,9 @@ update() #endif } -char * +const char * command(pp) - PLANE *pp; + const PLANE *pp; { static char buf[50], *bp, *comm_start; char *index(); @@ -253,8 +255,9 @@ command(pp) } /* char */ +char name(p) - PLANE *p; + const PLANE *p; { if (p->plane_type == 0) return ('A' + p->plane_no); @@ -372,6 +375,7 @@ addplane() PLANE * findplane(n) + int n; { PLANE *pp; @@ -384,8 +388,10 @@ findplane(n) return (NULL); } +int too_close(p1, p2, dist) - PLANE *p1, *p2; + const PLANE *p1, *p2; + int dist; { if (ABS(p1->altitude - p2->altitude) <= dist && ABS(p1->xpos - p2->xpos) <= dist && ABS(p1->ypos - p2->ypos) <= dist) diff --git a/games/backgammon/backgammon/backgammon.6 b/games/backgammon/backgammon/backgammon.6 index 1f85818..040a64b 100644 --- a/games/backgammon/backgammon/backgammon.6 +++ b/games/backgammon/backgammon/backgammon.6 @@ -97,8 +97,6 @@ uses /etc/termcap .B -s\fIfile recover previously saved game from .IR file . -(This can also be done by executing the saved file, -i.e., typing its name in as a command) .ad .PP .PP diff --git a/games/backgammon/backgammon/main.c b/games/backgammon/backgammon/main.c index 6bf3ec4..81cac2a 100644 --- a/games/backgammon/backgammon/main.c +++ b/games/backgammon/backgammon/main.c @@ -45,55 +45,48 @@ static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 5/31/93"; #include <unistd.h> #include <string.h> #include <stdlib.h> +#include <signal.h> #include "back.h" #define MVPAUSE 5 /* time to sleep when stuck */ #define MAXUSERS 35 /* maximum number of users */ -extern char *instr[]; /* text of instructions */ -extern char *message[]; /* update message */ +extern const char *const instr[]; /* text of instructions */ +extern const char *const message[]; /* update message */ char ospeed; /* tty output speed */ -char *helpm[] = { /* help message */ +const char *helpm[] = { /* help message */ "Enter a space or newline to roll, or", " R to reprint the board\tD to double", " S to save the game\tQ to quit", 0 }; -char *contin[] = { /* pause message */ +const char *contin[] = { /* pause message */ "(Type a newline to continue.)", "", 0 }; -static char user1a[] = - "Sorry, you cannot play backgammon when there are more than "; -static char user1b[] = - " users\non the system."; -static char user2a[] = - "\nThere are now more than "; -static char user2b[] = - " users on the system, so you cannot play\nanother game. "; -static char rules[] = "\nDo you want the rules of the game?"; -static char noteach[] = "Teachgammon not available!\n\007"; -static char need[] = "Do you need instructions for this program?"; -static char askcol[] = +static const char rules[] = "\nDo you want the rules of the game?"; +static const char noteach[] = "Teachgammon not available!\n\007"; +static const char need[] = "Do you need instructions for this program?"; +static const char askcol[] = "Enter 'r' to play red, 'w' to play white, 'b' to play both:"; -static char rollr[] = "Red rolls a "; -static char rollw[] = ". White rolls a "; -static char rstart[] = ". Red starts.\n"; -static char wstart[] = ". White starts.\n"; -static char toobad1[] = "Too bad, "; -static char unable[] = " is unable to use that roll.\n"; -static char toobad2[] = ". Too bad, "; -static char cantmv[] = " can't move.\n"; -static char bgammon[] = "Backgammon! "; -static char gammon[] = "Gammon! "; -static char again[] = ".\nWould you like to play again?"; -static char svpromt[] = "Would you like to save this game?"; - -static char password[] = "losfurng"; +static const char rollr[] = "Red rolls a "; +static const char rollw[] = ". White rolls a "; +static const char rstart[] = ". Red starts.\n"; +static const char wstart[] = ". White starts.\n"; +static const char toobad1[] = "Too bad, "; +static const char unable[] = " is unable to use that roll.\n"; +static const char toobad2[] = ". Too bad, "; +static const char cantmv[] = " can't move.\n"; +static const char bgammon[] = "Backgammon! "; +static const char gammon[] = "Gammon! "; +static const char again[] = ".\nWould you like to play again?"; +static const char svpromt[] = "Would you like to save this game?"; + +static const char password[] = "losfurng"; static char pbuf[10]; main (argc,argv) @@ -111,7 +104,7 @@ char **argv; /* initialization */ bflag = 2; /* default no board */ acnt = 1; /* Nuber of args */ - signal (2,getout); /* trap interrupts */ + signal (SIGINT,getout); /* trap interrupts */ if (gtty (0,&tty) == -1) /* get old tty mode */ errexit ("backgammon(gtty)"); old = tty.sg_flags; @@ -122,16 +115,6 @@ char **argv; #endif ospeed = tty.sg_ospeed; /* for termlib */ - /* check user count */ -# ifdef CORY - if (ucount() > MAXUSERS) { - writel (user1a); - wrint (MAXUSERS); - writel (user1b); - getout(); - } -# endif - /* get terminal * capabilities, and * decide if it can @@ -222,7 +205,7 @@ char **argv; else writec ('\n'); writel ("Password:"); - signal (14,getout); + signal (SIGALRM,getout); cflag = 1; alarm (10); for (i = 0; i < 10; i++) { @@ -550,17 +533,6 @@ char **argv; /* write score */ wrscore(); - /* check user count */ -# ifdef CORY - if (ucount() > MAXUSERS) { - writel (user2a); - wrint (MAXUSERS); - writel (user2b); - rfl = 1; - break; - } -# endif - /* see if he wants * another game */ writel (again); diff --git a/games/backgammon/backgammon/text.c b/games/backgammon/backgammon/text.c index e6c3a21..0198f73 100644 --- a/games/backgammon/backgammon/text.c +++ b/games/backgammon/backgammon/text.c @@ -37,7 +37,7 @@ static char sccsid[] = "@(#)text.c 8.1 (Berkeley) 5/31/93"; #include "back.h" -char *instr[] = { +const char *const instr[] = { " If you did not notice by now, this program reacts to things as", "soon as you type them, without waiting for a newline. This means that", "the special characters RUBOUT, ESC, and CONTROL-D, will not perform", @@ -104,12 +104,13 @@ char *instr[] = { 0}; +int text (t) -char **t; +const char *const *t; { register int i; - register char *s, *a; + const char *s, *a; fixtty (noech); while (*t != 0) { diff --git a/games/backgammon/backgammon/version.c b/games/backgammon/backgammon/version.c index a3d829f..e6465a8 100644 --- a/games/backgammon/backgammon/version.c +++ b/games/backgammon/backgammon/version.c @@ -35,7 +35,7 @@ static char sccsid[] = "@(#)version.c 8.1 (Berkeley) 5/31/93"; #endif /* not lint */ -char *message[] = { +const char *const message[] = { "Last updated on Saturday, January 11, 1986.", 0 }; diff --git a/games/backgammon/common_source/back.h b/games/backgammon/common_source/back.h index 01003a6..88ca933 100644 --- a/games/backgammon/common_source/back.h +++ b/games/backgammon/common_source/back.h @@ -53,75 +53,75 @@ * */ -extern char EXEC[]; /* object for main program */ -extern char TEACH[]; /* object for tutorial program */ +extern const char EXEC[]; /* object for main program */ +extern const char TEACH[];/* object for tutorial program */ -int pnum; /* color of player: +extern int pnum; /* color of player: -1 = white 1 = red 0 = both 2 = not yet init'ed */ -char *args[16]; /* args passed to teachgammon and back */ -int acnt; /* number of args */ -int aflag; /* flag to ask for rules or instructions */ -int bflag; /* flag for automatic board printing */ -int cflag; /* case conversion flag */ -int hflag; /* flag for cleaning screen */ -int mflag; /* backgammon flag */ -int raflag; /* 'roll again' flag for recovered game */ -int rflag; /* recovered game flag */ -int tflag; /* cursor addressing flag */ -int rfl; /* saved value of rflag */ -int iroll; /* special flag for inputting rolls */ -int board[26]; /* board: negative values are white, +extern char *args[16]; /* args passed to teachgammon and back */ +extern int acnt; /* number of args */ +extern int aflag; /* flag to ask for rules or instructions */ +extern int bflag; /* flag for automatic board printing */ +extern int cflag; /* case conversion flag */ +extern int hflag; /* flag for cleaning screen */ +extern int mflag; /* backgammon flag */ +extern int raflag; /* 'roll again' flag for recovered game */ +extern int rflag; /* recovered game flag */ +extern int tflag; /* cursor addressing flag */ +extern int rfl; /* saved value of rflag */ +extern int iroll; /* special flag for inputting rolls */ +extern int board[26]; /* board: negative values are white, positive are red */ -int dice[2]; /* value of dice */ -int mvlim; /* 'move limit': max. number of moves */ -int mvl; /* working copy of mvlim */ -int p[5]; /* starting position of moves */ -int g[5]; /* ending position of moves (goals) */ -int h[4]; /* flag for each move if a man was hit */ -int cturn; /* whose turn it currently is: +extern int dice[2]; /* value of dice */ +extern int mvlim; /* 'move limit': max. number of moves */ +extern int mvl; /* working copy of mvlim */ +extern int p[5]; /* starting position of moves */ +extern int g[5]; /* ending position of moves (goals) */ +extern int h[4]; /* flag for each move if a man was hit */ +extern int cturn; /* whose turn it currently is: -1 = white 1 = red 0 = just quitted -2 = white just lost 2 = red just lost */ -int d0; /* flag if dice have been reversed from +extern int d0; /* flag if dice have been reversed from original position */ -int table[6][6]; /* odds table for possible rolls */ -int rscore; /* red's score */ -int wscore; /* white's score */ -int gvalue; /* value of game (64 max.) */ -int dlast; /* who doubled last (0 = neither) */ -int bar; /* position of bar for current player */ -int home; /* position of home for current player */ -int off[2]; /* number of men off board */ -int *offptr; /* pointer to off for current player */ -int *offopp; /* pointer to off for opponent */ -int in[2]; /* number of men in inner table */ -int *inptr; /* pointer to in for current player */ -int *inopp; /* pointer to in for opponent */ +extern int table[6][6]; /* odds table for possible rolls */ +extern int rscore; /* red's score */ +extern int wscore; /* white's score */ +extern int gvalue; /* value of game (64 max.) */ +extern int dlast; /* who doubled last (0 = neither) */ +extern int bar; /* position of bar for current player */ +extern int home; /* position of home for current player */ +extern int off[2]; /* number of men off board */ +extern int *offptr; /* pointer to off for current player */ +extern int *offopp; /* pointer to off for opponent */ +extern int in[2]; /* number of men in inner table */ +extern int *inptr; /* pointer to in for current player */ +extern int *inopp; /* pointer to in for opponent */ -int ncin; /* number of characters in cin */ -char cin[100]; /* input line of current move +extern int ncin; /* number of characters in cin */ +extern char cin[100]; /* input line of current move (used for reconstructing input after a backspace) */ -extern char *color[]; +extern const char *const color[]; /* colors as strings */ -char **colorptr; /* color of current player */ -char **Colorptr; /* color of current player, capitalized */ -int colen; /* length of color of current player */ +extern const char *const *colorptr; /* color of current player */ +extern const char *const *Colorptr; /* color of current player, capitalized */ +extern int colen; /* length of color of current player */ -struct sgttyb tty; /* tty information buffer */ -int old; /* original tty status */ -int noech; /* original tty status without echo */ -int raw; /* raw tty status, no echo */ +extern struct sgttyb tty; /* tty information buffer */ +extern int old; /* original tty status */ +extern int noech; /* original tty status without echo */ +extern int raw; /* raw tty status, no echo */ -int curr; /* row position of cursor */ -int curc; /* column position of cursor */ -int begscr; /* 'beginning' of screen +extern int curr; /* row position of cursor */ +extern int curc; /* column position of cursor */ +extern int begscr; /* 'beginning' of screen (not including board) */ -int getout(); /* function to exit backgammon cleanly */ +void getout(); /* function to exit backgammon cleanly */ diff --git a/games/backgammon/common_source/board.c b/games/backgammon/common_source/board.c index cb12279..8176666 100644 --- a/games/backgammon/common_source/board.c +++ b/games/backgammon/common_source/board.c @@ -43,9 +43,9 @@ static char ln[60]; wrboard () { register int l; - static char bl[] = + static const char bl[] = "| | | |\n"; - static char sv[] = + static const char sv[] = "| | | | \n"; fixtty (noech); diff --git a/games/backgammon/common_source/fancy.c b/games/backgammon/common_source/fancy.c index 783a294..f19cbd1 100644 --- a/games/backgammon/common_source/fancy.c +++ b/games/backgammon/common_source/fancy.c @@ -591,9 +591,6 @@ clear () { tputs (CL,CO,addbuf); /* put CL in buffer */ } -tos () { /* home cursor */ - curmove (0,0); -} fancyc (c) register char c; /* character to output */ @@ -703,8 +700,9 @@ newline () { curmove (curr+1,0); } +int getcaps (s) -register char *s; +const char *s; { register char *code; /* two letter code */ @@ -712,7 +710,7 @@ register char *s; char *bufp; /* pointer to cap buffer */ char tentry[1024]; /* temporary uncoded caps buffer */ - tgetent (tentry,s); /* get uncoded termcap entry */ + tgetent (tentry, (char *)s); /* get uncoded termcap entry */ LI = tgetnum ("li"); /* get number of lines */ if (LI == -1) diff --git a/games/backgammon/common_source/init.c b/games/backgammon/common_source/init.c index 82f8950..d0cf548 100644 --- a/games/backgammon/common_source/init.c +++ b/games/backgammon/common_source/init.c @@ -35,15 +35,16 @@ static char sccsid[] = "@(#)init.c 8.1 (Berkeley) 5/31/93"; #endif /* not lint */ -#include <sgtty.h> +#include <sys/cdefs.h> +#include <termios.h> /* * variable initialization. */ /* name of executable object programs */ -char EXEC[] = "/usr/games/backgammon"; -char TEACH[] = "/usr/games/teachgammon"; +const char EXEC[] = "/usr/games/backgammon"; +const char TEACH[] = "/usr/games/teachgammon"; int pnum = 2; /* color of player: -1 = white @@ -62,4 +63,37 @@ int tflag = 0; /* cursor addressing flag */ int iroll = 0; /* special flag for inputting rolls */ int rfl = 0; -char *color[] = {"White","Red","white","red"}; +const char *const color[] = {"White","Red","white","red"}; + +const char *const *Colorptr; +const char *const *colorptr; +int *inopp; +int *inptr; +int *offopp; +int *offptr; +char args[100]; +int bar; +int begscr; +int board[26]; +char cin[100]; +int colen; +int cturn; +int curc; +int curr; +int d0; +int dice[2]; +int dlast; +int g[5]; +int gvalue; +int h[4]; +int home; +int in[2]; +int mvl; +int mvlim; +int ncin; +int off[2]; +int p[5]; +int rscore; +int table[6][6]; +int wscore; +struct termios tty, old, noech, raw; diff --git a/games/backgammon/common_source/save.c b/games/backgammon/common_source/save.c index b25e194..e62f192 100644 --- a/games/backgammon/common_source/save.c +++ b/games/backgammon/common_source/save.c @@ -35,20 +35,20 @@ static char sccsid[] = "@(#)save.c 8.1 (Berkeley) 5/31/93"; #endif /* not lint */ +#include <fcntl.h> +#include <errno.h> #include "back.h" -extern int errno; - -static char confirm[] = "Are you sure you want to leave now?"; -static char prompt[] = "Enter a file name: "; -static char exist1[] = "The file '"; -static char exist2[] = +static const char confirm[] = "Are you sure you want to leave now?"; +static const char prompt[] = "Enter a file name: "; +static const char exist1[] = "The file '"; +static const char exist2[] = "' already exists.\nAre you sure you want to use this file?"; -static char cantuse[] = "\nCan't use "; -static char saved[] = "This game has been saved on the file '"; -static char type[] = "'.\nType \"backgammon "; -static char rec[] = "\" to recover your game.\n\n"; -static char cantrec[] = "Can't recover file: "; +static const char cantuse[] = "\nCan't use "; +static const char saved[] = "This game has been saved on the file '"; +static const char type[] = "'.\nType \"backgammon "; +static const char rec[] = "\" to recover your game.\n\n"; +static const char cantrec[] = "Can't recover file: "; save (n) register int n; @@ -87,8 +87,8 @@ register int n; writec (*fs++); } *fs = '\0'; - if ((fdesc = open(fname,2)) == -1 && errno == 2) { - if ((fdesc = creat (fname,0700)) != -1) + if ((fdesc = open(fname,O_RDWR)) == -1 && errno == ENOENT) { + if ((fdesc = creat (fname,0600)) != -1) break; } if (fdesc != -1) { @@ -141,14 +141,15 @@ register int n; getout (); } +int recover (s) -char *s; +const char *s; { register int i; int fdesc; - if ((fdesc = open (s,0)) == -1) + if ((fdesc = open (s,O_RDONLY)) == -1) norec (s); read (fdesc,board,sizeof board); read (fdesc,off,sizeof off); @@ -165,11 +166,12 @@ char *s; rflag = 1; } +int norec (s) -register char *s; +const char *s; { - register char *c; + const char *c; tflag = 0; writel (cantrec); diff --git a/games/backgammon/common_source/subs.c b/games/backgammon/common_source/subs.c index a9e998b..69763d8 100644 --- a/games/backgammon/common_source/subs.c +++ b/games/backgammon/common_source/subs.c @@ -43,11 +43,11 @@ static char sccsid[] = "@(#)subs.c 8.1 (Berkeley) 5/31/93"; int buffnum; char outbuff[BUFSIZ]; -static char plred[] = "Player is red, computer is white."; -static char plwhite[] = "Player is white, computer is red."; -static char nocomp[] = "(No computer play.)"; +static const char plred[] = "Player is red, computer is white."; +static const char plwhite[] = "Player is white, computer is red."; +static const char nocomp[] = "(No computer play.)"; -char *descr[] = { +const char *const descr[] = { "Usage: backgammon [-h n r w b pr pw pb tterm sfile]\n", "\t-h\tgets this list\n\t-n\tdon't ask for rules or instructions", "\t-r\tplayer is red (implies -n)\n\t-w\tplayer is white (implies -n)", @@ -68,12 +68,6 @@ register char *s; getout(); } -strset (s1,s2) -register char *s1, *s2; -{ - while ( (*s1++ = *s2++) != '\0'); -} - int addbuf (c) register int c; @@ -131,11 +125,12 @@ char c; addbuf (c); } +void writel (l) -register char *l; +const char *l; { #ifdef DEBUG - register char *s; + const char *s; if (trace == NULL) trace = fopen ("bgtrace","w"); @@ -325,7 +320,7 @@ register char **argv; args[acnt++] = strdup ("-n"); break; - /* player is both read and white */ + /* player is both red and white */ case 'b': if (rflag) break; @@ -424,6 +419,7 @@ int mode; errexit("fixtty"); } +void getout () { /* go to bottom of screen */ if (tflag) { diff --git a/games/backgammon/common_source/table.c b/games/backgammon/common_source/table.c index e119e8b..4ef1ca4 100644 --- a/games/backgammon/common_source/table.c +++ b/games/backgammon/common_source/table.c @@ -37,7 +37,7 @@ static char sccsid[] = "@(#)table.c 8.1 (Berkeley) 5/31/93"; #include "back.h" -char *help2[] = { +const char *const help2[] = { " Enter moves as <s>-<f> or <s>/<r> where <s> is the starting", "position, <f> is the finishing position, and <r> is the roll.", "Remember, each die roll must be moved separately.", @@ -50,7 +50,7 @@ struct state { int newst; }; -struct state atmata[] = { +static const struct state atmata[] = { 'R', 1, 0, '?', 7, 0, 'Q', 0, -3, 'B', 8, 25, '9', 2, 25, '8', 2, 25, '7', 2, 25, '6', 2, 25, diff --git a/games/backgammon/teachgammon/data.c b/games/backgammon/teachgammon/data.c index b63da67..7013627 100644 --- a/games/backgammon/teachgammon/data.c +++ b/games/backgammon/teachgammon/data.c @@ -39,7 +39,7 @@ static char sccsid[] = "@(#)data.c 8.1 (Berkeley) 5/31/93"; int maxmoves = 23; -char *text0[] = { +const char *const text0[] = { "To start the game, I roll a 3, and you roll a 1. This means", "that I get to start first. I move 8-5,6-5 since this makes a", "new point and helps to trap your back men on 1. You should be", @@ -47,7 +47,7 @@ char *text0[] = { 0 }; -char *text1[] = { +const char *const text1[] = { "Now you shall see a move using doubles. I just rolled double", "5's. I will move two men from position 13 to position 3. The", "notation for this is 13-8,13-8,8-3,8-3. You will also roll dou-", @@ -55,7 +55,7 @@ char *text1[] = { 0 }; -char *text2[] = { +const char *const text2[] = { "Excellent! As you can see, you are beginning to develop a wall", "which is trapping my men on position 24. Also, moving your back", "men forward not only improves your board position safely, but it", @@ -68,7 +68,7 @@ char *text2[] = { 0 }; -char *text3[] = { +const char *const text3[] = { "As you can see, although you left a man open, it is a rela-", "tively safe move to an advantageous position, which might help", "you make a point later. Only two rolls (4 5 or 5 4) will allow", @@ -77,13 +77,13 @@ char *text3[] = { 0 }; -char *text4[] = { +const char *const text4[] = { "You're pretty lucky yourself, you know. I follow by rolling 2 3", "and moving 25-22,24-22, forming a new point.", 0 }; -char *text5[] = { +const char *const text5[] = { "Not a spectacular move, but a safe one. I follow by rolling 6 1.", "I decide to use this roll to move 22-16,16-15. It leaves me with", "one man still open, but the blot is farther back on the board, and", @@ -91,7 +91,7 @@ char *text5[] = { 0 }; -char *text6[] = { +const char *const text6[] = { "By moving your two men from 17 to 20, you lessen my chance of", "getting my man off the board. In fact, the odds are 5 to 4", "against me getting off. I roll with the odds and helplessly", @@ -99,7 +99,7 @@ char *text6[] = { 0 }; -char *text7[] = { +const char *const text7[] = { "Note that the blot on 7 cannot be hit unless I get off the bar", "and have a 1 or a 6 left over, and doing so will leave two of", "my men open. Also, the blot on 16 cannot be hit at all! With", @@ -107,27 +107,27 @@ char *text7[] = { 0 }; -char *text8[] = { +const char *const text8[] = { "See, you did not get hit and, you got to 'cover up' your open men.", "Quite an accomplishment. Finally, I get off the bar by rolling", "6 2 and moving 25-23,23-17.", 0 }; -char *text9[] = { +const char *const text9[] = { "My venture off the bar did not last long. However, I got lucky", "and rolled double 1's, allowing me to move 25-24,24-23,15-14,15-14.", 0 }; -char *text10[] = { +const char *const text10[] = { "You are improving your position greatly and safely, and are well", "on the way to winning the game. I roll a 6 2 and squeak past", "your back man. Now the game becomes a race to the finish.", 0 }; -char *text11[] = { +const char *const text11[] = { "Now that it is merely a race, you are trying to get as many men", "as possible into the inner table, so you can start removing them.", "I roll a 3 4 and move my two men farthest back to position 11", @@ -135,20 +135,20 @@ char *text11[] = { 0 }; -char *text12[] = { +const char *const text12[] = { "The race is still on, and you have seem to be doing all right.", "I roll 6 1 and move 14-8,13-12.", 0 }; -char *text13[] = { +const char *const text13[] = { "Notice that you get to remove men the instant you have all of", "them at your inner table, even if it is the middle of a turn.", "I roll 1 2 and move 13-11,12-11.", 0 }; -char *text14[] = { +const char *const text14[] = { "Although you could have removed a man, this move illustrates two", "points: 1) You never have to remove men, and 2) You should try", "to spread out your men on your inner table. Since you have one", @@ -157,25 +157,25 @@ char *text14[] = { 0 }; -char *text15[] = { +const char *const text15[] = { "This time you were able to remove men. I roll 3 4 and move", "11-7,11-8. The race continues.", 0 }; -char *text16[] = { +const char *const text16[] = { "More holes are opening up in your inner table, but you are", "still very much ahead. If we were doubling, you would have", "doubled long ago. I roll 2 6 and move 8-6,11-5.", 0 }; -char *text17[] = { +const char *const text17[] = { "It pays to spread out your men. I roll 3 5 and move 7-4,8-3.", 0 }; -char *text18[] = { +const char *const text18[] = { "You can only remove some men, but you spread out more and", "more, in order to be able to remove men more efficiently.", "I roll double 3's, which help, but not that much. I move", @@ -183,30 +183,30 @@ char *text18[] = { 0 }; -char *text19[] = { +const char *const text19[] = { "I roll 1 4 and move 5-4,4-0.", 0 }; -char *text20[] = { +const char *const text20[] = { "You are now nicely spread out to win a game. I roll 5 6 and", "move 5-0,6-0.", 0 }; -char *text21[] = { +const char *const text21[] = { "Any minute now. Just a few short steps from victory. I roll", "2 4 and move 6-4,4-0.", 0 }; -char *text22[] = { +const char *const text22[] = { "It looks pretty hopeless for me, but I play on, rolling 1 3 and", "moving 4-3,3-0.", 0 }; -char *text23[] = { +const char *const text23[] = { "Congratulations! You just won a game of backgammon against the", "computer! You will now be able to play a game, but remember,", "when you start playing, that doubling will be enabled, which", @@ -215,7 +215,7 @@ char *text23[] = { 0 }; -struct situatn test[] = { +const struct situatn test[] = { { {0,2,0,0,0,0,-5,0,-3,0,0,0,5,-5,0,0,0,3,0,5,0,0,0,0,-2,0}, 3, 1, {8,6,0,0}, {5,5,0,0}, 4, 2, text0 diff --git a/games/backgammon/teachgammon/teach.c b/games/backgammon/teachgammon/teach.c index 9921cbe..9bdee20 100644 --- a/games/backgammon/teachgammon/teach.c +++ b/games/backgammon/teachgammon/teach.c @@ -44,6 +44,7 @@ static char sccsid[] = "@(#)teach.c 8.1 (Berkeley) 5/31/93"; #include <string.h> #include <sys/types.h> #include <unistd.h> +#include <signal.h> #include "back.h" extern char *hello[]; @@ -61,7 +62,7 @@ extern char *lastch[]; extern char ospeed; /* tty output speed for termlib */ -char *helpm[] = { +const char *const helpm[] = { "\nEnter a space or newline to roll, or", " b to display the board", " d to double", @@ -69,7 +70,7 @@ char *helpm[] = { 0 }; -char *contin[] = { +const char *const contin[] = { "", 0 }; @@ -85,7 +86,7 @@ char **argv; setgid(getgid()); acnt = 1; - signal (2,getout); + signal (SIGINT,getout); if (gtty (0,&tty) == -1) /* get old tty mode */ errexit ("teachgammon(gtty)"); old = tty.sg_flags; diff --git a/games/backgammon/teachgammon/ttext1.c b/games/backgammon/teachgammon/ttext1.c index 3835259..b4b160a 100644 --- a/games/backgammon/teachgammon/ttext1.c +++ b/games/backgammon/teachgammon/ttext1.c @@ -37,10 +37,10 @@ static char sccsid[] = "@(#)ttext1.c 8.1 (Berkeley) 5/31/93"; #include "back.h" -char *opts = " QIMRHEDSPT"; -char *prompt = "-->"; +const char *opts = " QIMRHEDSPT"; +const char *prompt = "-->"; -char *list[] = { +const char *const list[] = { "\n\n\tI\tIntroduction to Backgammon", "\tM\tMoves and Points", "\tR\tRemoving Men from the Board", @@ -56,7 +56,7 @@ char *list[] = { 0 }; -char *hello[] = { +const char *const hello[] = { "\n\032 These rules consist of text describing how to play Backgammon", "followed by a tutorial session where you play a practice game", "against the computer. When using this program, think carefuly", @@ -74,7 +74,7 @@ char *hello[] = { 0 }; -char *intro1[] = { +const char *const intro1[] = { "\nIntroduction:", "\n Backgammon is a game involving the skill of two players and", "the luck of two dice. There are two players, red and white, and", @@ -85,7 +85,7 @@ char *intro1[] = { "", 0}; -char *intro2[] = { +const char *const intro2[] = { "", "\n Although not indicated on the board, the players' homes are", "located just to the right of the board. A player's men are placed", @@ -99,7 +99,7 @@ char *intro2[] = { "", 0}; -char *moves[] = { +const char *const moves[] = { "\nMoves and Points:", "\n Moves are made along the positions on the board according to", "their numbers. Red moves in the positive direction (clockwise", @@ -130,7 +130,7 @@ char *moves[] = { "", 0}; -char *remove[] = { +const char *const remove[] = { "\nRemoving Men from the Board:", "\n The most important part of the game is removing men, since", "that is how you win the game. Once a man is removed, he stays", @@ -154,7 +154,7 @@ char *remove[] = { "", 0}; -char *hits[] = { +const char *const hits[] = { "\nHitting Blots:", "\n Although two men on a position form an impenetrable point, a", "lone man is not so secure. Such a man is called a 'blot' and has", @@ -171,7 +171,7 @@ char *hits[] = { "", 0}; -char *endgame[] = { +const char *const endgame[] = { "\nEnding the Game and Scoring:", "\n Winning a game usually wins one point, the normal value of a", "game. However, if the losing player has not removed any men yet,", diff --git a/games/backgammon/teachgammon/ttext2.c b/games/backgammon/teachgammon/ttext2.c index 1ad90fb..aaaf84a 100644 --- a/games/backgammon/teachgammon/ttext2.c +++ b/games/backgammon/teachgammon/ttext2.c @@ -39,7 +39,7 @@ static char sccsid[] = "@(#)ttext2.c 8.1 (Berkeley) 5/31/93"; char *prompt, *list, *opts; -char *doubl[] = { +const char *const doubl[] = { "\nDoubling:", "\n If a player thinks he is in a good position, he may double the", "value of the game. However, his opponent may not accept the pro-", @@ -54,7 +54,7 @@ char *doubl[] = { "", 0}; -char *stragy[] = { +const char *const stragy[] = { "\nStrategy:", "\n Some general hints when playing: Try not to leave men open", "unless absolutely necessary. Also, it is good to make as many", @@ -70,7 +70,7 @@ char *stragy[] = { "", 0}; -char *prog[] = { +const char *const prog[] = { "\nThe Program and How It Works:", "\n A general rule of thumb is when you don't know what to do,", "type a question mark, and you should get some help. When it is", @@ -104,7 +104,7 @@ char *prog[] = { "", 0}; -char *lastch[] = { +const char *const lastch[] = { "\nTutorial (Practice Game):", "\n This tutorial, for simplicity's sake, will let you play one", "predetermined game. All the rolls have been pre-arranged, and", @@ -123,14 +123,15 @@ char *lastch[] = { "", 0}; +int text (txt) -char **txt; +const char *const *txt; { - char **begin; - char *a; + const char *const *begin; + const char *a; char b; - char *c; + const char *c; int i; fixtty (noech); diff --git a/games/backgammon/teachgammon/tutor.c b/games/backgammon/teachgammon/tutor.c index 71cf531..e87e5b6 100644 --- a/games/backgammon/teachgammon/tutor.c +++ b/games/backgammon/teachgammon/tutor.c @@ -39,12 +39,13 @@ static char sccsid[] = "@(#)tutor.c 8.1 (Berkeley) 5/31/93"; #include "tutor.h" extern int maxmoves; -extern char *finis[]; +extern const char *const finis[]; -extern struct situatn test[]; +extern const struct situatn test[]; -static char better[] = "That is a legal move, but there is a better one.\n"; +static const char better[] = "That is a legal move, but there is a better one.\n"; +void tutor () { register int i, j; @@ -141,11 +142,12 @@ clrest () { curmove (r,c); } +int brdeq (b1,b2) -register int *b1, *b2; +const int *b1, *b2; { - register int *e; + const int *e; e = b1+26; while (b1 < e) diff --git a/games/backgammon/teachgammon/tutor.h b/games/backgammon/teachgammon/tutor.h index 6fe35fb..8b20e33 100644 --- a/games/backgammon/teachgammon/tutor.h +++ b/games/backgammon/teachgammon/tutor.h @@ -41,5 +41,23 @@ struct situatn { int mg[4]; int new1; int new2; - char *(*com[8]); + const char *const (*com[8]); }; + +extern const char *const doubl[]; +extern const char *const endgame[]; +extern const char *const finis[]; +extern const char *const hello[]; +extern const char *const hits[]; +extern const char *const intro1[]; +extern const char *const intro2[]; +extern const char *const lastch[]; +extern const char *const list[]; +extern int maxmoves; +extern const char *const moves[]; +extern const char *const opts; +extern const char *const prog[]; +extern const char *const prompt; +extern const char *const removepiece[]; +extern const char *const stragy[]; +extern const struct situatn test[]; diff --git a/games/battlestar/battlestar.6 b/games/battlestar/battlestar.6 index 12a9192..2298aae 100644 --- a/games/battlestar/battlestar.6 +++ b/games/battlestar/battlestar.6 @@ -44,7 +44,7 @@ battlestar \- a tropical adventure game .fi .SH DESCRIPTION .I Battlestar -is an adventure game in the classic style. However, It's slightly less +is an adventure game in the classic style. However, it's slightly less of a puzzle and more a game of exploration. There are a few magical words in the game, but on the whole, simple English diff --git a/games/battlestar/battlestar.c b/games/battlestar/battlestar.c index 2499ff3..4cbbefd 100644 --- a/games/battlestar/battlestar.c +++ b/games/battlestar/battlestar.c @@ -91,6 +91,6 @@ run: case 0: goto start; default: - exit(0); + exit(1); /* Shouldn't happen */ } } diff --git a/games/battlestar/com1.c b/games/battlestar/com1.c index c099f76..37cf253 100644 --- a/games/battlestar/com1.c +++ b/games/battlestar/com1.c @@ -63,7 +63,7 @@ int thataway, token; convert(tothis) /* Converts day to night and vice versa. */ int tothis; /* Day objects are permanent. Night objects are added*/ { /* at dusk, and subtracted at dawn. */ - register struct objs *p; + const struct objs *p; register i, j; if (tothis == TONIGHT) { diff --git a/games/battlestar/com2.c b/games/battlestar/com2.c index e7d1af6..dd0eea4 100644 --- a/games/battlestar/com2.c +++ b/games/battlestar/com2.c @@ -140,6 +140,7 @@ use() else position = 229; gtime++; + notes[CANTSEE] = 0; return(0); } else if (position == FINAL) diff --git a/games/battlestar/com3.c b/games/battlestar/com3.c index 619c43f..fb05667 100644 --- a/games/battlestar/com3.c +++ b/games/battlestar/com3.c @@ -188,10 +188,10 @@ shoot() int firstnumber, value; register int n; + firstnumber = wordnumber; if (!testbit(inven,LASER)) puts("You aren't holding a blaster."); else { - firstnumber = wordnumber; while(wordtype[++wordnumber] == ADJS); while(wordnumber<=wordcount && wordtype[wordnumber] == OBJECT){ value = wordvalue[wordnumber]; diff --git a/games/battlestar/com4.c b/games/battlestar/com4.c index 8a11664..8afc04f 100644 --- a/games/battlestar/com4.c +++ b/games/battlestar/com4.c @@ -183,7 +183,7 @@ unsigned int from[]; } throw(name) - char *name; + const char *name; { int n; int deposit = 0; @@ -263,7 +263,7 @@ throw(name) } drop(name) -char *name; +const char *name; { int firstnumber, value; diff --git a/games/battlestar/com5.c b/games/battlestar/com5.c index 5bdea6a..3027afd 100644 --- a/games/battlestar/com5.c +++ b/games/battlestar/com5.c @@ -247,6 +247,19 @@ give() person = wordvalue[wordnumber]; last2 = wordnumber; } + /* Setting wordnumber to last1 - 1 looks wrong if last1 is 0, e.g., + * plain `give'. However, detecting this case is liable to detect + * `give foo' as well, which would give a confusing error. We + * need to make sure the -1 value can cause no problems if it arises. + * If in the below we get to the drop("Given") then drop will look + * at word 0 for an object to give, and fail, which is OK; then + * result will be -1 and we get to the end, where wordnumber gets + * set to something more sensible. If we get to "I don't think + * that is possible" then again wordnumber is set to something + * sensible. The wordnumber we leave with still isn't right if + * you include words the game doesn't know in your command, but + * that's no worse than what other commands than give do in + * the same place. */ wordnumber = last1 - 1; if (person && testbit(location[position].objects,person)) if (person == NORMGOD && godready < 2 && !(obj == RING || obj == BRACELET)) @@ -255,6 +268,7 @@ give() result = drop("Given"); else { puts("I don't think that is possible."); + wordnumber = max(last1, last2) + 1; return(0); } if (result != -1 && (testbit(location[position].objects,obj) || obj == AMULET || obj == MEDALION || obj == TALISMAN)){ @@ -319,6 +333,6 @@ give() break; } } - wordnumber = max(last1,last2); + wordnumber = max(last1,last2) + 1; return(firstnumber); } diff --git a/games/battlestar/com6.c b/games/battlestar/com6.c index ddfac67..ec01b11 100644 --- a/games/battlestar/com6.c +++ b/games/battlestar/com6.c @@ -123,7 +123,7 @@ char ch; sigsetmask(s); } -char * +const char * rate() { int score; diff --git a/games/battlestar/cypher.c b/games/battlestar/cypher.c index ff5da4e..4835327 100644 --- a/games/battlestar/cypher.c +++ b/games/battlestar/cypher.c @@ -95,7 +95,7 @@ cypher() case SHOOT: if (wordnumber < wordcount && wordvalue[wordnumber+1] == EVERYTHING){ for (n=0; n < NUMOFOBJECTS; n++) - if (testbit(location[position].objects,n) && *objsht[n]){ + if (testbit(location[position].objects,n) && objsht[n]){ wordvalue[wordnumber+1] = n; wordnumber = shoot(); } @@ -109,7 +109,7 @@ cypher() case TAKE: if (wordnumber < wordcount && wordvalue[wordnumber+1] == EVERYTHING){ for (n=0; n < NUMOFOBJECTS; n++) - if (testbit(location[position].objects,n) && *objsht[n]){ + if (testbit(location[position].objects,n) && objsht[n]){ wordvalue[wordnumber+1] = n; wordnumber = take(location[position].objects); } @@ -141,7 +141,7 @@ cypher() if (wordnumber < wordcount && wordvalue[wordnumber+1] == EVERYTHING){ for (n=0; n < NUMOFOBJECTS; n++) if (testbit(inven,n) || - testbit(location[position].objects, n) && *objsht[n]){ + testbit(location[position].objects, n) && objsht[n]){ wordvalue[wordnumber+1] = n; wordnumber = throw(wordvalue[wordnumber] == KICK ? "Kicked" : "Thrown"); } @@ -183,7 +183,7 @@ cypher() if (wordnumber < wordcount && wordvalue[wordnumber+1] == EVERYTHING){ for (n=0; n < NUMOFOBJECTS; n++) - if (testbit(location[position].objects,n) && *objsht[n]){ + if (testbit(location[position].objects,n) && objsht[n]){ wordvalue[wordnumber+1] = n; wordnumber = puton(); } diff --git a/games/battlestar/dayfile.c b/games/battlestar/dayfile.c index 79acf37..e11e883 100644 --- a/games/battlestar/dayfile.c +++ b/games/battlestar/dayfile.c @@ -180,7 +180,7 @@ face downward on the carpet clutching his chest.*\n\ The hallway leads -.**\n" }, { "You are in the dining hall.", 0, 30, 31, 23, 0, 0, 0, 0, -"This was the seen of a mass suicide. Hundreds of ambassadors and assorted\n\ +"This was the scene of a mass suicide. Hundreds of ambassadors and assorted\n\ dignitaries sit slumped over their breakfast cereal. I suppose the news\n\ of the cylon attack killed them. There is a strange chill in this room. I\n\ would not linger here. * The kitchen is +. Entrances + and +.\n" }, @@ -445,7 +445,7 @@ outcroppings of lava to land. There is a nicer beach ***+.\n" }, { "You are lost in a sea of fog.", 97, 104, 97, 97, 97, 1, 0, 1, "What have you gotten us into?\n\ -I cant see a thing! ****\n" }, +I can't see a thing! ****\n" }, { "You are on a gravel wash.", 125, 126, 127, 128, 84, 0, 0, 0, "The sound of cascading water is the background for a diluted chorus of \n\ @@ -530,7 +530,7 @@ impossible to climb down to a small cave entrance below. Only at rare\n\ minus tides would it be possible to enter.*** The beach is better +.\n" }, { "You are on the coast road.", 158, 161, 162, 91, 79, 0, 0, 0, -"The road is beginning to turn inland.* I can here the surf +. The road\n\ +"The road is beginning to turn inland.* I can hear the surf +. The road\n\ continues +.*\n" }, { "The road winds deeper into the trees.", 163, 142, 91, 164, 79, 0, 0, 0, diff --git a/games/battlestar/dayobjs.c b/games/battlestar/dayobjs.c index fba3585..300dbbd 100644 --- a/games/battlestar/dayobjs.c +++ b/games/battlestar/dayobjs.c @@ -37,7 +37,7 @@ static char sccsid[] = "@(#)dayobjs.c 8.1 (Berkeley) 5/31/93"; #include "externs.h" -struct objs dayobjs[] = { +const struct objs dayobjs[] = { { 236, HORSE }, { 237, CAR }, { 275, POT }, diff --git a/games/battlestar/externs.h b/games/battlestar/externs.h index d0ee589..8cb2b69 100644 --- a/games/battlestar/externs.h +++ b/games/battlestar/externs.h @@ -218,7 +218,7 @@ #define MAXCUMBER 10 struct room { - char *name; + const char *name; int link[8]; #define north link[0] #define south link[1] @@ -228,7 +228,7 @@ struct room { #define access link[5] #define down link[6] #define flyhere link[7] - char *desc; + const char *desc; int objects[NUMOFWORDS]; }; extern struct room dayfile[]; @@ -236,11 +236,11 @@ extern struct room nightfile[]; struct room *location; /* object characteristics */ -char *objdes[NUMOFOBJECTS]; -char *objsht[NUMOFOBJECTS]; -char *ouch[NUMOFINJURIES]; -int objwt[NUMOFOBJECTS]; -int objcumber[NUMOFOBJECTS]; +const char *const objdes[NUMOFOBJECTS]; +const char *const objsht[NUMOFOBJECTS]; +const char *const ouch[NUMOFINJURIES]; +const int objwt[NUMOFOBJECTS]; +const int objcumber[NUMOFOBJECTS]; /* current input line */ #define NWORD 20 /* words per line */ @@ -249,7 +249,7 @@ int wordvalue[NWORD]; int wordtype[NWORD]; int wordcount, wordnumber; -char *truedirec(), *rate(); +const char *truedirec(), *rate(); char *getcom(), *getword(); /* state of the game */ @@ -284,7 +284,7 @@ char injuries[NUMOFINJURIES]; char uname[MAXLOGNAME]; struct wlist { - char *string; + const char *string; int value, article; struct wlist *next; }; @@ -298,7 +298,7 @@ struct objs { short room; short obj; }; -extern struct objs dayobjs[]; -extern struct objs nightobjs[]; +extern const struct objs dayobjs[]; +extern const struct objs nightobjs[]; gid_t egid; diff --git a/games/battlestar/getcom.c b/games/battlestar/getcom.c index d441921..2ec0feb 100644 --- a/games/battlestar/getcom.c +++ b/games/battlestar/getcom.c @@ -42,7 +42,7 @@ char * getcom(buf, size, prompt, error) char *buf; int size; - char *prompt, *error; + const char *prompt, *error; { for (;;) { fputs(prompt, stdout); diff --git a/games/battlestar/globals.c b/games/battlestar/globals.c index 1e079aa..7a5e2df 100644 --- a/games/battlestar/globals.c +++ b/games/battlestar/globals.c @@ -40,7 +40,7 @@ static char sccsid[] = "@(#)globals.c 8.1 (Berkeley) 5/31/93"; int WEIGHT = MAXWEIGHT; int CUMBER = MAXCUMBER; -char *objdes[NUMOFOBJECTS] = { +const char *const objdes[NUMOFOBJECTS] = { "There is a knife here", "There is an exquisitely crafted sword and scabbard here.", 0, /* can land from here */ @@ -108,7 +108,7 @@ char *objdes[NUMOFOBJECTS] = { }; -char *objsht[NUMOFOBJECTS] = { +const char *const objsht[NUMOFOBJECTS] = { "knife", "fine sword", 0, @@ -175,7 +175,7 @@ char *objsht[NUMOFOBJECTS] = { "diamond block" }; -char *ouch[NUMOFINJURIES] = { +const char *const ouch[NUMOFINJURIES] = { "some minor abrasions", "some minor lacerations", "a minor puncture wound", @@ -191,7 +191,7 @@ char *ouch[NUMOFINJURIES] = { "a broken neck" }; -int objwt[NUMOFOBJECTS] = { +const int objwt[NUMOFOBJECTS] = { 1, 5, 0, 10, 15, 2, 10, 10, 3, 5, 50, 2500, 2, 1, 100, 1, 2, 1, 1, 1, 60, 10, 5, 0, @@ -202,7 +202,7 @@ int objwt[NUMOFOBJECTS] = { 50, 45, 45, 100, 2000, 30, 20, 10 }; -int objcumber[NUMOFOBJECTS] = { +const int objcumber[NUMOFOBJECTS] = { 1, 5, 0, 150, 10, 1, 5, 2, 2, 1, 5, 10, 1, 1, 10, 1, 1, 1, 1, 1, 7, 5, 4, 0, diff --git a/games/battlestar/init.c b/games/battlestar/init.c index a06ad3c..afe692f 100644 --- a/games/battlestar/init.c +++ b/games/battlestar/init.c @@ -43,7 +43,7 @@ static char sccsid[] = "@(#)init.c 8.1 (Berkeley) 5/31/93"; initialize(startup) char startup; { - register struct objs *p; + const struct objs *p; void die(); puts("Version 4.2, fall 1984."); @@ -79,7 +79,7 @@ getutmp(uname) strcpy(uname, ptr ? ptr->pw_name : ""); } -char *list[] = { /* hereditary wizards */ +const char *const list[] = { /* hereditary wizards */ "riggle", "chris", "edward", @@ -90,15 +90,16 @@ char *list[] = { /* hereditary wizards */ 0 }; -char *badguys[] = { +const char *const badguys[] = { "wnj", "root", "ted", 0 }; +int wizard(uname) - char *uname; + const char *uname; { char flag; @@ -107,10 +108,11 @@ wizard(uname) return flag; } +int checkout(uname) - register char *uname; + const char *uname; { - register char **ptr; + const char *const *ptr; for (ptr = list; *ptr; ptr++) if (strcmp(*ptr, uname) == 0) diff --git a/games/battlestar/misc.c b/games/battlestar/misc.c index 8ce68b1..1ba9e41 100644 --- a/games/battlestar/misc.c +++ b/games/battlestar/misc.c @@ -37,11 +37,12 @@ static char sccsid[] = "@(#)misc.c 8.1 (Berkeley) 5/31/93"; #include "externs.h" +int card(array, size) /* for beenthere, injuries */ - register char *array; + const char *array; int size; { - register char *end = array + size; + const char *end = array + size; register int i = 0; while (array < end) @@ -50,8 +51,9 @@ card(array, size) /* for beenthere, injuries */ return (i); } +int ucard(array) - register unsigned *array; + const unsigned int *array; { register int j = 0, n; diff --git a/games/battlestar/nightfile.c b/games/battlestar/nightfile.c index c1d312d..670587f 100644 --- a/games/battlestar/nightfile.c +++ b/games/battlestar/nightfile.c @@ -180,7 +180,7 @@ face downward on the carpet clutching his chest.*\n\ The hallway leads -.**\n" }, { "You are in the dining hall.", 0, 30, 31, 23, 0, 0, 0, 0, -"This was the seen of a mass suicide. Hundreds of ambassadors and assorted\n\ +"This was the scene of a mass suicide. Hundreds of ambassadors and assorted\n\ dignitaries sit slumped over their breakfast cereal. I suppose the news\n\ of the cylon attack killed them. There is a strange chill in this room. I\n\ would not linger here. * The kitchen is +. Entrances + and +.\n" }, @@ -433,7 +433,7 @@ The very tip of the island is +.*\n" }, { "You are lost in a sea of fog.", 97, 104, 97, 97, 97, 1, 0, 1, "What have you gotten us into?\n\ -I cant see a thing! ****\n" }, +I can't see a thing! ****\n" }, { "You are on a gravel wash.", 125, 126, 127, 128, 84, 0, 0, 0, "It is very dark here. A cool breeze is blowing from +. No moonlight can\n\ @@ -512,7 +512,7 @@ small cave entrance below. Large rocks would usually churn the waves\n\ asunder.*** The beach goes -.\n" }, { "You are on the coast road.", 158, 161, 162, 91, 79, 0, 0, 0, -"The road is beginning to turn slightly -. I can here the surf +. The road\n\ +"The road is beginning to turn slightly -. I can hear the surf +. The road\n\ continues into the dark forest +.*\n" }, { "The road winds deeper into the trees.", 163, 142, 91, 164, 79, 0, 0, 0, diff --git a/games/battlestar/nightobjs.c b/games/battlestar/nightobjs.c index 53531d5..0b9fcd4 100644 --- a/games/battlestar/nightobjs.c +++ b/games/battlestar/nightobjs.c @@ -37,7 +37,7 @@ static char sccsid[] = "@(#)nightobjs.c 8.1 (Berkeley) 5/31/93"; #include "externs.h" -struct objs nightobjs[] = { +const struct objs nightobjs[] = { { 218, PAJAMAS }, { 235, NATIVE }, { 92, PAPAYAS }, diff --git a/games/battlestar/parse.c b/games/battlestar/parse.c index dbc99fe..8aaf66d 100644 --- a/games/battlestar/parse.c +++ b/games/battlestar/parse.c @@ -45,8 +45,9 @@ wordinit() install(w); } +int hash(s) - register char *s; + const char *s; { register hashval = 0; @@ -60,7 +61,7 @@ hash(s) struct wlist * lookup(s) - char *s; + const char *s; { register struct wlist *wp; diff --git a/games/battlestar/room.c b/games/battlestar/room.c index db585ea..7c34dad 100644 --- a/games/battlestar/room.c +++ b/games/battlestar/room.c @@ -40,7 +40,7 @@ static char sccsid[] = "@(#)room.c 8.1 (Berkeley) 5/31/93"; writedes() { int compass; - register char *p; + const char *p; register c; printf("\n\t%s\n", location[position].name); @@ -104,7 +104,7 @@ struct room here; } } -char * +const char * truedirec(way, option) int way; char option; diff --git a/games/battlestar/save.c b/games/battlestar/save.c index df61213..9e44d70 100644 --- a/games/battlestar/save.c +++ b/games/battlestar/save.c @@ -40,6 +40,7 @@ static char sccsid[] = "@(#)save.c 8.1 (Berkeley) 5/31/93"; #include <sys/param.h> /* MAXPATHLEN */ #include <fcntl.h> #include <stdlib.h> +#include <err.h> #include "externs.h" void @@ -93,7 +94,10 @@ restore() fread(&loved, sizeof loved, 1, fp); fread(&pleasure, sizeof pleasure, 1, fp); fread(&power, sizeof power, 1, fp); - fread(&ego, sizeof ego, 1, fp); + /* We must check the last read, to catch truncated save files. */ + if (fread(&ego, sizeof ego, 1, fp) < 1) + errx(1, "save file %s too short", home1); + fclose(fp); } void diff --git a/games/bcd/bcd.c b/games/bcd/bcd.c index 16243bd..d2405ce 100644 --- a/games/bcd/bcd.c +++ b/games/bcd/bcd.c @@ -127,6 +127,9 @@ main(argc, argv) { char cardline[80]; + /* revoke setgid privileges */ + setgid(getgid()); + /* * The original bcd prompts with a "%" when reading from stdin, * but this seems kind of silly. So this one doesn't. diff --git a/games/caesar/caesar.c b/games/caesar/caesar.c index 749da50..b227b57 100644 --- a/games/caesar/caesar.c +++ b/games/caesar/caesar.c @@ -83,6 +83,9 @@ void main(argc, argv) register char *inbuf; int obs[26], try, winner; + /* revoke setgid privileges */ + setgid(getgid()); + if (argc > 1) printit(argv[1]); diff --git a/games/canfield/canfield/canfield.c b/games/canfield/canfield/canfield.c index a9a9a17..728e7fc 100644 --- a/games/canfield/canfield/canfield.c +++ b/games/canfield/canfield/canfield.c @@ -61,6 +61,7 @@ static char sccsid[] = "@(#)canfield.c 8.1 (Berkeley) 5/31/93"; #include <unistd.h> #include <stdlib.h> #include <string.h> +#include <fcntl.h> #include "pathnames.h" @@ -1325,7 +1326,7 @@ suspend() move(21, 0); refresh(); if (dbfd != -1) { - lseek(dbfd, uid * sizeof(struct betinfo), 0); + lseek(dbfd, uid * sizeof(struct betinfo), SEEK_SET); write(dbfd, (char *)&total, sizeof(total)); } kill(getpid(), SIGTSTP); @@ -1577,7 +1578,7 @@ initall() initdeck(deck); uid = getuid(); - i = lseek(dbfd, uid * sizeof(struct betinfo), 0); + i = lseek(dbfd, uid * sizeof(struct betinfo), SEEK_SET); if (i < 0) { close(dbfd); dbfd = -1; @@ -1640,7 +1641,7 @@ cleanup() status = NOBOX; updatebettinginfo(); if (dbfd != -1) { - lseek(dbfd, uid * sizeof(struct betinfo), 0); + lseek(dbfd, uid * sizeof(struct betinfo), SEEK_SET); write(dbfd, (char *)&total, sizeof(total)); close(dbfd); } @@ -1672,11 +1673,9 @@ askquit() /* * Can you tell that this used to be a Pascal program? */ -main(argc, argv) - int argc; - char *argv[]; +main() { - dbfd = open(_PATH_SCORE, 2); + dbfd = open(_PATH_SCORE, O_RDWR); /* revoke */ setgid(getgid()); diff --git a/games/canfield/cfscores/cfscores.c b/games/canfield/cfscores/cfscores.c index fb7a090..9488e81 100644 --- a/games/canfield/cfscores/cfscores.c +++ b/games/canfield/cfscores/cfscores.c @@ -43,6 +43,8 @@ static char sccsid[] = "@(#)cfscores.c 8.1 (Berkeley) 5/31/93"; #include <sys/types.h> #include <pwd.h> +#include <fcntl.h> +#include <unistd.h> #include "pathnames.h" struct betinfo { @@ -69,7 +71,7 @@ main(argc, argv) printf("Usage: cfscores [user]\n"); exit(1); } - dbfd = open(_PATH_SCORE, 0); + dbfd = open(_PATH_SCORE, O_RDONLY); if (dbfd < 0) { perror(_PATH_SCORE); exit(2); @@ -114,7 +116,7 @@ printuser(pw, printfail) printf("Bad uid %d\n", pw->pw_uid); return; } - i = lseek(dbfd, pw->pw_uid * sizeof(struct betinfo), 0); + i = lseek(dbfd, pw->pw_uid * sizeof(struct betinfo), SEEK_SET); if (i < 0) { perror("lseek"); return; diff --git a/games/dm/dm.c b/games/dm/dm.c index 5977fcc..f9ed6b5 100644 --- a/games/dm/dm.c +++ b/games/dm/dm.c @@ -78,6 +78,7 @@ main(argc, argv) exit(0); gametty = ttyname(0); + unsetenv("TZ"); (void)time(&now); read_config(); #ifdef LOG diff --git a/games/phantasia/setup.c b/games/phantasia/setup.c index cca079a..dfb1777a 100644 --- a/games/phantasia/setup.c +++ b/games/phantasia/setup.c @@ -37,6 +37,8 @@ / *************************************************************************/ +void Error(); + static char *files[] = { /* all files to create */ _SPATH_MONST, _SPATH_PEOPLE, @@ -221,6 +223,7 @@ main(argc, argv) / *************************************************************************/ +void Error(str, file) char *str, *file; { diff --git a/games/pom/pom.c b/games/pom/pom.c index d56932e..26cd9e4 100644 --- a/games/pom/pom.c +++ b/games/pom/pom.c @@ -57,7 +57,9 @@ static const char sccsid[] = "@(#)pom.c 8.1 (Berkeley) 5/31/93"; #include <stdio.h> #include <math.h> -#define PI 3.141592654 +#ifndef PI +#define PI 3.14159265358979323846 +#endif #define EPOCH 85 #define EPSILONg 279.611371 /* solar ecliptic long at EPOCH */ #define RHOg 282.680403 /* solar ecliptic long of perigee at EPOCH */ diff --git a/games/quiz/datfiles/europe b/games/quiz/datfiles/europe index 01fe420..477e8b7 100644 --- a/games/quiz/datfiles/europe +++ b/games/quiz/datfiles/europe @@ -1,10 +1,15 @@ Albania:Tirana|Tirane" Andorra:Andorra la V[ell|iej]a Austria:Vienna|Wien +Belarus|Byelorussia:M[i|e]nsk Belgium:Brussel[s|]|Bruxelles +Bosnia[-Herzegovina|]:Sarajevo Bulgaria:Sofi[a|ya] -Czechoslovakia:Prague|Praha +Croatia:Zagreb +Czech Republic:Prague|Praha Denmark:Copenhagen|K[o|o/]benhavn +Estonia:Tallinn +Georgia:Tbilisi Germany:Berlin United Kingdom|England|Great Britain|UK:London Finland:Helsinki @@ -14,19 +19,26 @@ Hungary:Budapest Iceland:Reykjavik Ireland|Eire:Dublin Italy:Rom[e|a] +Latvia:Riga Liechtenstein:Vaduz +Lithuania:Vilnius Luxembourg:Luxembourg +[|Former Yugoslav Republic Of ]Macedonia:Skop[|l]je Malta:Valletta +Moldova:Chisinau|Kishinev Monaco:Monte Carlo Netherlands|Holland:The Hague|'sGravenhage|den Haag|Amsterdam Norway:Oslo Poland:Wars[aw|zawa] Portugal:Lisbo[n|a] R[u|o]mania:Bucharest|Bucuresti +Russia:Mos[cow|kva] San Marino:San Marino +Slovakia|Slovak Republic:Bratislava +Slovenia:Ljubljana Spain:Madrid Sweden:Stockholm Switzerland:Bern{e} Turkey:Ankara -Russia:Mos[cow|kva] +Ukraine:Kiev|Kyiv Yugoslavia:Belgrade|Beograd diff --git a/games/rain/Makefile b/games/rain/Makefile index fb3be9d..d0840ff 100644 --- a/games/rain/Makefile +++ b/games/rain/Makefile @@ -2,7 +2,7 @@ PROG= rain MAN6= rain.6 -DPADD= ${LIBTERMCAP} ${LIBCOMPAT} -LDADD= -ltermcap -lcompat +DPADD= ${LIBCURSES} ${LIBCOMPAT} +LDADD= -lcurses -lcompat .include <bsd.prog.mk> diff --git a/games/robots/move.c b/games/robots/move.c index 5208da7..c381046 100644 --- a/games/robots/move.c +++ b/games/robots/move.c @@ -60,7 +60,8 @@ get_move() lastmove = *Next_move; else lastmove = -1; /* flag for "first time in" */ - } + } else + lastmove = 0; /* Shut up gcc */ #endif for (;;) { if (Teleport && must_telep()) diff --git a/games/rogue/hit.c b/games/rogue/hit.c index d2a6d75..f989153 100644 --- a/games/rogue/hit.c +++ b/games/rogue/hit.c @@ -63,7 +63,7 @@ mon_hit(monster) register object *monster; { short damage, hit_chance; - char *mn; + const char *mn; float minus; if (fight_monster && (monster != fight_monster)) { @@ -175,7 +175,7 @@ short other; } get_damage(ds, r) -char *ds; +const char *ds; boolean r; { register i = 0, j, n, d, total = 0; @@ -201,7 +201,7 @@ boolean r; } get_w_damage(obj) -object *obj; +const object *obj; { char new_damage[12]; register to_hit, damage; @@ -220,7 +220,7 @@ object *obj; } get_number(s) -register char *s; +const char *s; { register i = 0; register total = 0; @@ -234,7 +234,7 @@ register char *s; long lget_number(s) -char *s; +const char *s; { short i = 0; long total = 0; @@ -247,7 +247,7 @@ char *s; } to_hit(obj) -object *obj; +const object *obj; { if (!obj) { return(1); @@ -289,7 +289,7 @@ mon_damage(monster, damage) object *monster; short damage; { - char *mn; + const char *mn; short row, col; monster->hp_to_kill -= damage; @@ -423,7 +423,7 @@ short allow_off_screen; } get_hit_chance(weapon) -object *weapon; +const object *weapon; { short hit_chance; @@ -434,7 +434,7 @@ object *weapon; } get_weapon_damage(weapon) -object *weapon; +const object *weapon; { short damage; diff --git a/games/rogue/init.c b/games/rogue/init.c index d0b81f8..fea5831 100644 --- a/games/rogue/init.c +++ b/games/rogue/init.c @@ -65,8 +65,8 @@ boolean ask_quit = 1; boolean no_skull = 0; boolean passgo = 0; boolean flush = 1; -char *error_file = "rogue.esave"; -char *byebye_string = "Okay, bye bye!"; +const char *error_file = "rogue.esave"; +const char *byebye_string = "Okay, bye bye!"; extern char *fruit; extern char *save_file; @@ -77,7 +77,7 @@ init(argc, argv) int argc; char *argv[]; { - char *pn; + const char *pn; int seed; pn = md_gln(); @@ -173,7 +173,7 @@ player_init() } clean_up(estr) -char *estr; +const char *estr; { if (save_is_interactive) { if (init_curses) { @@ -310,7 +310,7 @@ char **s, *e; boolean add_blank; { short i = 0; - char *t; + const char *t; t = e; @@ -332,7 +332,8 @@ boolean add_blank; } init_str(str, dflt) -char **str, *dflt; +char **str; +const char *dflt; { if (!(*str)) { *str = md_malloc(MAX_OPT_LEN + 2); diff --git a/games/rogue/inventory.c b/games/rogue/inventory.c index 5dd6f3d..da321de 100644 --- a/games/rogue/inventory.c +++ b/games/rogue/inventory.c @@ -53,9 +53,9 @@ static char sccsid[] = "@(#)inventory.c 8.1 (Berkeley) 5/31/93"; #include "rogue.h" boolean is_wood[WANDS]; -char *press_space = " --press space to continue--"; +const char *press_space = " --press space to continue--"; -char *wand_materials[WAND_MATERIALS] = { +const char *const wand_materials[WAND_MATERIALS] = { "steel ", "bronze ", "gold ", @@ -89,7 +89,7 @@ char *wand_materials[WAND_MATERIALS] = { "wooden " }; -char *gems[GEMS] = { +const char *const gems[GEMS] = { "diamond ", "stibotantalite ", "lapi-lazuli ", @@ -106,7 +106,7 @@ char *gems[GEMS] = { "garnet " }; -char *syllables[MAXSYLLABLES] = { +const char *const syllables[MAXSYLLABLES] = { "blech ", "foo ", "barf ", @@ -153,10 +153,10 @@ char *syllables[MAXSYLLABLES] = { struct id_com_s { short com_char; - char *com_desc; + const char *com_desc; }; -struct id_com_s com_id_tab[COMS] = { +const struct id_com_s com_id_tab[COMS] = { '?', "? prints help", 'r', "r read scroll", '/', "/ identify object", @@ -211,7 +211,7 @@ extern boolean wizard; extern char *m_names[], *more; inventory(pack, mask) -object *pack; +const object *pack; unsigned short mask; { object *obj; @@ -441,10 +441,10 @@ make_scroll_titles() } get_desc(obj, desc) -object *obj; +const object *obj; char *desc; { - char *item_name; + const char *item_name; struct id *id_table; char more_info[32]; short i; @@ -657,7 +657,7 @@ short ichar; struct id * get_id_table(obj) -object *obj; +const object *obj; { switch(obj->what_is) { case SCROL: @@ -696,7 +696,7 @@ boolean is_weapon; id_type() { - char *id; + const char *id; int ch; char buf[DCOLS]; diff --git a/games/rogue/level.c b/games/rogue/level.c index 1e95f6d..7209ca8 100644 --- a/games/rogue/level.c +++ b/games/rogue/level.c @@ -57,11 +57,11 @@ static char sccsid[] = "@(#)level.c 8.1 (Berkeley) 5/31/93"; short cur_level = 0; short max_level = 1; short cur_room; -char *new_level_message = 0; +const char *new_level_message = 0; short party_room = NO_ROOM; short r_de; -long level_points[MAX_EXP_LEVEL] = { +const long level_points[MAX_EXP_LEVEL] = { 10L, 20L, 40L, @@ -572,7 +572,7 @@ boolean do_rec_de; recursive_deadend(rn, offsets, srow, scol) short rn; -short *offsets; +const short *offsets; short srow, scol; { short i, de; diff --git a/games/rogue/machdep.c b/games/rogue/machdep.c index c7c89a6..9e770fc 100644 --- a/games/rogue/machdep.c +++ b/games/rogue/machdep.c @@ -254,7 +254,7 @@ md_ignore_signals() int md_get_file_id(fname) -char *fname; +const char *fname; { struct stat sbuf; @@ -274,7 +274,7 @@ char *fname; int md_link_count(fname) -char *fname; +const char *fname; { struct stat sbuf; @@ -330,7 +330,7 @@ struct rogue_time *rt_buf; */ md_gfmt(fname, rt_buf) -char *fname; +const char *fname; struct rogue_time *rt_buf; { struct stat sbuf; @@ -362,7 +362,7 @@ struct rogue_time *rt_buf; boolean md_df(fname) -char *fname; +const char *fname; { if (unlink(fname)) { return(0); @@ -379,7 +379,7 @@ char *fname; * function, but then the score file would only have one name in it. */ -char * +const char * md_gln() { struct passwd *p; @@ -446,7 +446,7 @@ int nsecs; char * md_getenv(name) -char *name; +const char *name; { char *value; @@ -493,7 +493,10 @@ int n; md_gseed() { - return(getpid()); + time_t seconds; + + time(&seconds); + return((int) seconds); } /* md_exit(): @@ -550,7 +553,7 @@ boolean l; */ md_shell(shell) -char *shell; +const char *shell; { long w[2]; diff --git a/games/rogue/message.c b/games/rogue/message.c index 78958c3..0811016 100644 --- a/games/rogue/message.c +++ b/games/rogue/message.c @@ -57,14 +57,14 @@ char msgs[NMESSAGES][DCOLS] = {"", "", "", "", ""}; short msg_col = 0, imsg = -1; boolean msg_cleared = 1, rmsg = 0; char hunger_str[8] = ""; -char *more = "-more-"; +const char *more = "-more-"; extern boolean cant_int, did_int, interrupted, save_is_interactive, flush; extern short add_strength; extern short cur_level; message(msg, intrpt) -char *msg; +const char *msg; boolean intrpt; { cant_int = 1; @@ -130,8 +130,9 @@ check_message() } get_input_line(prompt, insert, buf, if_cancelled, add_blank, do_echo) -char *prompt, *buf, *insert; -char *if_cancelled; +const char *prompt, *insert; +char *buf; +const char *if_cancelled; boolean add_blank; boolean do_echo; { @@ -305,7 +306,7 @@ register stat_mask; } pad(s, n) -char *s; +const char *s; short n; { short i; @@ -357,7 +358,7 @@ short ch; } r_index(str, ch, last) -char *str; +const char *str; int ch; boolean last; { diff --git a/games/rogue/monster.c b/games/rogue/monster.c index bd73414..9a20837 100644 --- a/games/rogue/monster.c +++ b/games/rogue/monster.c @@ -55,7 +55,7 @@ static char sccsid[] = "@(#)monster.c 8.1 (Berkeley) 5/31/93"; object level_monsters; boolean mon_disappeared; -char *m_names[] = { +const char *const m_names[] = { "aquator", "bat", "centaur", @@ -171,7 +171,7 @@ register mn; mv_mons() { - register object *monster, *next_monster; + register object *monster, *next_monster, *test_mons; boolean flew; if (haste_self % 2) { @@ -210,7 +210,17 @@ mv_mons() if (!(flew && mon_can_go(monster, rogue.row, rogue.col))) { mv_1_monster(monster, rogue.row, rogue.col); } -NM: monster = next_monster; +NM: test_mons = level_monsters.next_monster; + monster = NULL; + while(test_mons) + { + if(next_monster == test_mons) + { + monster = next_monster; + break; + } + test_mons = test_mons->next_monster; + } } } @@ -488,7 +498,7 @@ register short row, col; } mon_can_go(monster, row, col) -register object *monster; +const object *monster; register short row, col; { object *obj; @@ -572,9 +582,9 @@ short row, col; } } -char * +const char * mon_name(monster) -object *monster; +const object *monster; { short ch; @@ -790,7 +800,7 @@ object *monster; gr_obj_char() { short r; - char *rs = "%!?]=/):*"; + const char *rs = "%!?]=/):*"; r = get_rand(0, 8); @@ -832,7 +842,8 @@ aggravate() boolean mon_sees(monster, row, col) -object *monster; +const object *monster; +int row, col; { short rn, rdif, cdif, retval; diff --git a/games/rogue/move.c b/games/rogue/move.c index dc05700..d7659b3 100644 --- a/games/rogue/move.c +++ b/games/rogue/move.c @@ -54,7 +54,7 @@ static char sccsid[] = "@(#)move.c 8.1 (Berkeley) 5/31/93"; short m_moves = 0; boolean jump = 0; -char *you_can_move_again = "you can move again"; +const char *you_can_move_again = "you can move again"; extern short cur_room, halluc, blind, levitate; extern short cur_level, max_level; diff --git a/games/rogue/object.c b/games/rogue/object.c index 13dabe6..adc8c74 100644 --- a/games/rogue/object.c +++ b/games/rogue/object.c @@ -228,6 +228,7 @@ boolean is_maze; place_at(obj, row, col) object *obj; +int row, col; { obj->row = row; obj->col = col; @@ -257,6 +258,7 @@ short row, col; object * get_letter_object(ch) +int ch; { object *obj; @@ -281,11 +283,11 @@ object *objlist; } } -char * +const char * name_of(obj) -object *obj; +const object *obj; { - char *retstring; + const char *retstring; switch(obj->what_is) { case SCROL: @@ -602,7 +604,7 @@ put_stairs() } get_armor_class(obj) -object *obj; +const object *obj; { if (obj) { return(obj->class + obj->d_enchant); diff --git a/games/rogue/pack.c b/games/rogue/pack.c index 3efcfa6..daa78b1 100644 --- a/games/rogue/pack.c +++ b/games/rogue/pack.c @@ -52,13 +52,14 @@ static char sccsid[] = "@(#)pack.c 8.1 (Berkeley) 5/31/93"; #include "rogue.h" -char *curse_message = "you can't, it appears to be cursed"; +const char *curse_message = "you can't, it appears to be cursed"; extern short levitate; object * add_to_pack(obj, pack, condense) object *obj, *pack; +int condense; { object *op; @@ -99,6 +100,7 @@ object *obj, *pack; object * pick_up(row, col, status) +int row, col; short *status; { object *obj; @@ -270,7 +272,7 @@ wait_for_ack() } pack_letter(prompt, mask) -char *prompt; +const char *prompt; unsigned short mask; { short ch; @@ -460,7 +462,7 @@ call_it() } pack_count(new_obj) -object *new_obj; +const object *new_obj; { object *obj; short count = 0; @@ -488,7 +490,7 @@ object *new_obj; boolean mask_pack(pack, mask) -object *pack; +const object *pack; unsigned short mask; { while (pack->next_object) { diff --git a/games/rogue/play.c b/games/rogue/play.c index 5b890f9..1eea292 100644 --- a/games/rogue/play.c +++ b/games/rogue/play.c @@ -53,7 +53,7 @@ static char sccsid[] = "@(#)play.c 8.1 (Berkeley) 5/31/93"; #include "rogue.h" boolean interrupted = 0; -char *unknown_command = "unknown command"; +const char *unknown_command = "unknown command"; extern short party_room, bear_trap; extern char hit_message[]; diff --git a/games/rogue/ring.c b/games/rogue/ring.c index e343b2c..9516b5f 100644 --- a/games/rogue/ring.c +++ b/games/rogue/ring.c @@ -52,8 +52,8 @@ static char sccsid[] = "@(#)ring.c 8.1 (Berkeley) 5/31/93"; #include "rogue.h" -char *left_or_right = "left or right hand?"; -char *no_ring = "there's no ring on that hand"; +const char *left_or_right = "left or right hand?"; +const char *no_ring = "there's no ring on that hand"; short stealthy; short r_rings; short add_strength; diff --git a/games/rogue/rogue.h b/games/rogue/rogue.h index b3009be..2052e55 100644 --- a/games/rogue/rogue.h +++ b/games/rogue/rogue.h @@ -221,7 +221,7 @@ struct id { struct obj { /* comment is monster meaning */ unsigned long m_flags; /* monster flags */ - char *damage; /* damage it does */ + const char *damage; /* damage it does */ short quantity; /* hit points to kill */ short ichar; /* 'A' is for aquatar */ short kill_exp; /* exp for killing it */ @@ -427,10 +427,10 @@ extern object level_monsters; /* external routine declarations. */ -char *mon_name(); -char *get_ench_color(); -char *name_of(); -char *md_gln(); +const char *mon_name(); +const char *get_ench_color(); +const char *name_of(); +const char *md_gln(); char *md_getenv(); char *md_malloc(); boolean is_direction(); diff --git a/games/rogue/room.c b/games/rogue/room.c index 1412fd1..c07f5e1 100644 --- a/games/rogue/room.c +++ b/games/rogue/room.c @@ -62,7 +62,7 @@ extern char *nick_name, *fruit, *save_file, *press_space; #define NOPTS 8 struct option { - char *prompt; + const char *prompt; boolean is_bool; char **strval; boolean *bval; @@ -129,6 +129,7 @@ int rn; } light_passage(row, col) +int row, col; { short i, j, i_end, j_end; @@ -604,7 +605,7 @@ CH: opt_show(i) int i; { - char *s; + const char *s; struct option *opt = &options[i]; opt_erase(i); @@ -635,7 +636,7 @@ int i; do_shell() { #ifdef UNIX - char *sh; + const char *sh; md_ignore_signals(); if (!(sh = md_getenv("SHELL"))) { diff --git a/games/rogue/save.c b/games/rogue/save.c index 46d7ef5..04c9652 100644 --- a/games/rogue/save.c +++ b/games/rogue/save.c @@ -94,7 +94,7 @@ save_game() } save_into_file(sfile) -char *sfile; +const char *sfile; { FILE *fp; int file_id; @@ -176,7 +176,7 @@ static del_save_file() } restore(fname) -char *fname; +const char *fname; { FILE *fp; struct rogue_time saved_time, mod_time; @@ -257,16 +257,16 @@ char *fname; } write_pack(pack, fp) -object *pack; +const object *pack; FILE *fp; { object t; while (pack = pack->next_object) { - r_write(fp, (char *) pack, sizeof(object)); + r_write(fp, (const char *) pack, sizeof(object)); } t.ichar = t.what_is = 0; - r_write(fp, (char *) &t, sizeof(object)); + r_write(fp, (const char *) &t, sizeof(object)); } read_pack(pack, fp, is_rogue) @@ -333,8 +333,8 @@ boolean wr; for (i = 0; i < n; i++) { if (wr) { - r_write(fp, (char *) &(id_table[i].value), sizeof(short)); - r_write(fp, (char *) &(id_table[i].id_status), + r_write(fp, (const char *) &(id_table[i].value), sizeof(short)); + r_write(fp, (const char *) &(id_table[i].id_status), sizeof(unsigned short)); write_string(id_table[i].title, fp); } else { @@ -393,7 +393,7 @@ int n; r_write(fp, buf, n) FILE *fp; -char *buf; +const char *buf; int n; { if (!write_failed) { @@ -407,7 +407,7 @@ int n; boolean has_been_touched(saved_time, mod_time) -struct rogue_time *saved_time, *mod_time; +const struct rogue_time *saved_time, *mod_time; { if (saved_time->year < mod_time->year) { return(1); diff --git a/games/rogue/score.c b/games/rogue/score.c index 06b10b7..73fdda4 100644 --- a/games/rogue/score.c +++ b/games/rogue/score.c @@ -61,7 +61,7 @@ extern boolean score_only, no_skull, msg_cleared; extern char *byebye_string, *nick_name; killed_by(monster, other) -object *monster; +const object *monster; short other; { char buf[128]; @@ -193,7 +193,7 @@ boolean from_intrpt; } put_scores(monster, other) -object *monster; +const object *monster; short other; { short i, n, rank = 10, x, ne = 0, found_player = -1; @@ -321,9 +321,9 @@ short other; insert_score(scores, n_names, n_name, rank, n, monster, other) char scores[][82]; char n_names[][30]; -char *n_name; +const char *n_name; short rank, n; -object *monster; +const object *monster; { short i; char buf[128]; @@ -423,7 +423,7 @@ sell_pack() } get_value(obj) -object *obj; +const object *obj; { short wc; int val; @@ -491,7 +491,8 @@ id_all() } name_cmp(s1, s2) -char *s1, *s2; +char *s1; +const char *s2; { short i = 0; int r; @@ -540,7 +541,8 @@ boolean st; } nickize(buf, score, n_name) -char *buf, *score, *n_name; +char *buf; +const char *score, *n_name; { short i = 15, j; @@ -566,7 +568,7 @@ char *buf, *score, *n_name; center(row, buf) short row; -char *buf; +const char *buf; { short margin; diff --git a/games/rogue/throw.c b/games/rogue/throw.c index 0af3117..3a0205d 100644 --- a/games/rogue/throw.c +++ b/games/rogue/throw.c @@ -261,7 +261,7 @@ short row, col; rand_around(i, r, c) short i, *r, *c; { - static char* pos = "\010\007\001\003\004\005\002\006\0"; + static char pos[] = "\010\007\001\003\004\005\002\006\0"; static short row, col; short j; diff --git a/games/rogue/trap.c b/games/rogue/trap.c index 518a321..e7fab20 100644 --- a/games/rogue/trap.c +++ b/games/rogue/trap.c @@ -56,7 +56,7 @@ trap traps[MAX_TRAPS]; boolean trap_door = 0; short bear_trap = 0; -char *trap_strings[TRAPS * 2] = { +const char *const trap_strings[TRAPS * 2] = { "trap door", "you fell down a trap", "bear trap", @@ -72,7 +72,7 @@ char *trap_strings[TRAPS * 2] = { }; extern short cur_level, party_room; -extern char *new_level_message; +extern const char *new_level_message; extern boolean interrupted; extern short ring_exp; extern boolean sustain_strength; diff --git a/games/rogue/use.c b/games/rogue/use.c index b340fe2..62edc71 100644 --- a/games/rogue/use.c +++ b/games/rogue/use.c @@ -61,7 +61,7 @@ boolean see_invisible = 0; short extra_hp = 0; boolean detect_monster = 0; boolean con_mon = 0; -char *strange_feeling = "you have a strange feeling for a moment, then it passes"; +const char *strange_feeling = "you have a strange feeling for a moment, then it passes"; extern short bear_trap; extern char hunger_str[]; @@ -580,7 +580,7 @@ go_blind() mvaddch(rogue.row, rogue.col, rogue.fchar); } -char * +const char * get_ench_color() { if (halluc) { diff --git a/games/rogue/zap.c b/games/rogue/zap.c index b82d188..29bbbad 100644 --- a/games/rogue/zap.c +++ b/games/rogue/zap.c @@ -275,7 +275,8 @@ bounce(ball, dir, row, col, r) short ball, dir, row, col, r; { short orow, ocol; - char buf[DCOLS], *s; + char buf[DCOLS]; + const char *s; short i, ch, new_dir = -1, damage; static short btime; diff --git a/games/sail/dr_2.c b/games/sail/dr_2.c index 908287d..e495275 100644 --- a/games/sail/dr_2.c +++ b/games/sail/dr_2.c @@ -157,7 +157,7 @@ char onlytemp; row = fp->row; col = fp->col; drift = fp->drift; - move(movement, ship, &fp->dir, &fp->row, &fp->col, &drift); + sail_move(movement, ship, &fp->dir, &fp->row, &fp->col, &drift); if (!*movement) (void) strcpy(movement, "d"); @@ -176,7 +176,7 @@ char onlytemp; return total; } -move(p, ship, dir, row, col, drift) +sail_move(p, ship, dir, row, col, drift) register char *p; register struct ship *ship; register char *dir; @@ -222,7 +222,7 @@ register char *drift; try(command, temp, ma, ta, af, vma, dir, f, t, high, rakeme) register struct ship *f, *t; -int ma, ta, af, *high, rakeme; +int ma, ta, af, vma, dir, *high, rakeme; char command[], temp[]; { register int new, n; diff --git a/games/sail/sync.c b/games/sail/sync.c index c02bd52..b896eed 100644 --- a/games/sail/sync.c +++ b/games/sail/sync.c @@ -70,6 +70,7 @@ makesignal(from, fmt, ship, a, b, c) #include <sys/types.h> #include <sys/stat.h> sync_exists(game) +int game; { char buf[sizeof sync_file]; struct stat s; diff --git a/games/trek/dumpgame.c b/games/trek/dumpgame.c index d386a9f..cdcee6a 100644 --- a/games/trek/dumpgame.c +++ b/games/trek/dumpgame.c @@ -35,6 +35,8 @@ static char sccsid[] = "@(#)dumpgame.c 8.1 (Berkeley) 5/31/93"; #endif /* not lint */ +#include <fcntl.h> + # include "trek.h" /*** THIS CONSTANT MUST CHANGE AS THE DATA SPACES CHANGE ***/ @@ -111,7 +113,7 @@ restartgame() register int fd; int version; - if ((fd = open("trek.dump", 0)) < 0 || + if ((fd = open("trek.dump", O_RDONLY)) < 0 || read(fd, &version, sizeof version) != sizeof version || version != VERSION || readdump(fd)) diff --git a/games/wump/wump.c b/games/wump/wump.c index 753375c..7418591 100644 --- a/games/wump/wump.c +++ b/games/wump/wump.c @@ -51,8 +51,10 @@ static char sccsid[] = "@(#)wump.c 8.1 (Berkeley) 5/31/93"; * would care to remember. */ +#include <err.h> #include <sys/types.h> #include <sys/file.h> +#include <sys/wait.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -679,7 +681,10 @@ int_compare(a, b) instructions() { - char buf[120], *p, *getenv(); + const char *pager; + pid_t pid; + int status; + int fd; /* * read the instructions file, if needed, and show the user how to @@ -695,12 +700,26 @@ puff of greasy black smoke! (poof)\n"); return; } - if (!(p = getenv("PAGER")) || - strlen(p) > sizeof(buf) + strlen(_PATH_WUMPINFO) + 5) - p = _PATH_PAGER; - - (void)sprintf(buf, "%s %s", p, _PATH_WUMPINFO); - (void)system(buf); + if (!isatty(1)) + pager = "cat"; + else { + if (!(pager = getenv("PAGER")) || (*pager == 0)) + pager = _PATH_PAGER; + } + switch (pid = fork()) { + case 0: /* child */ + if ((fd = open(_PATH_WUMPINFO, O_RDONLY)) == -1) + err(1, "open %s", _PATH_WUMPINFO); + if (dup2(fd, 0) == -1) + err(1, "dup2"); + (void)execl("/bin/sh", "sh", "-c", pager, NULL); + err(1, "exec sh -c %s", pager); + case -1: + err(1, "fork"); + default: + (void)waitpid(pid, &status, 0); + break; + } } usage() |