games-request@tekred.TEK.COM (07/13/87)
Submitted by: gerry@eclectic.UUCP (G. R. Singleton) Comp.sources.games: Volume 1, Issue 91 Archive-name: fortune/v7diffs [I am associating this with the fortune distribution so people desiring this info won't have to look all over for it. -br] [[I have managed to shoehorn the BSD fortune that was recently posted to comp.sources.games into the Venix/86 version 2.x environment. In expectation that there are others out there with V7 clones rather than the fancy new Berkeley and AT&T version, I would like you to post the changes (context diffs) to the net. Thanks, G. R. Singleton, <gerry@eclectic.UUCP>]] --------------------------- #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: v7Makefile.dif v7fortun.dif v7strfl_h.dif # Wrapped by billr@tekred on Mon Jul 13 09:31:55 1987 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f v7Makefile.dif -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"v7Makefile.dif\" else echo shar: Extracting \"v7Makefile.dif\" \(1240 characters\) sed "s/^X//" >v7Makefile.dif <<'END_OF_v7Makefile.dif' X*** net/Makefile Sun Jun 7 17:58:45 1987 X--- Makefile Tue Jun 16 21:40:30 1987 X*************** X*** 10,16 X MISC= READ_ME fortune.6 strfile.8 Makefile Notes Rot13 Shar_split :trfix X LIBDIR= /usr/games/lib X BINDIR= /usr/games X! USER= sys # owner of fortune system X #DEFS= # BSD systems X #DEFS= -DNO_RANDOM -DREGCMP # System V systems X # for venix use the following entry X X--- 10,16 ----- X MISC= READ_ME fortune.6 strfile.8 Makefile Notes Rot13 Shar_split :trfix X LIBDIR= /usr/games/lib X BINDIR= /usr/games X! USER= games # owner of fortune system X #DEFS= # BSD systems X #DEFS= -DNO_RANDOM -DREGCMP # System V systems X # for venix use the following entry X*************** X*** 12,18 X BINDIR= /usr/games X USER= sys # owner of fortune system X #DEFS= # BSD systems X! #DEFS= -DNO_RANDOM -DREGCMP # System V systems X # for venix use the following entry X DEFS= -DNO_RANDOM -DNO_REGX -Dvoid=int -DVENIX X CFLAGS= -O $(DEFS) X X--- 12,18 ----- X BINDIR= /usr/games X USER= games # owner of fortune system X #DEFS= # BSD systems X! #DEFS= -DNO_RANDOM -DREGCMP # System V systems X # for venix use the following entry X DEFS= -DNO_RANDOM -DNO_REGX -Dvoid=int -DVENIX X CFLAGS= -O $(DEFS) END_OF_v7Makefile.dif if test 1240 -ne `wc -c <v7Makefile.dif`; then echo shar: \"v7Makefile.dif\" unpacked with wrong size! fi # end of overwriting check fi if test -f v7fortun.dif -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"v7fortun.dif\" else echo shar: Extracting \"v7fortun.dif\" \(9473 characters\) sed "s/^X//" >v7fortun.dif <<'END_OF_v7fortun.dif' X*** net/fortune.c Sun Jun 7 18:00:43 1987 X--- fortune.c Tue Jun 16 20:59:56 1987 X*************** X*** 2,7 X X # include <sys/types.h> X # include <stdio.h> X # include <sys/file.h> X # include <sys/stat.h> X # include "strfile.h" X X--- 2,8 ----- X X # include <sys/types.h> X # include <stdio.h> X+ # ifndef VENIX X # include <sys/file.h> X # endif X # include <sys/stat.h> X*************** X*** 3,8 X # include <sys/types.h> X # include <stdio.h> X # include <sys/file.h> X # include <sys/stat.h> X # include "strfile.h" X X X--- 4,10 ----- X # include <stdio.h> X # ifndef VENIX X # include <sys/file.h> X+ # endif X # include <sys/stat.h> X # include "strfile.h" X X*************** X*** 18,23 X # define CPERS 20 /* # of chars for each sec */ X # define SLEN 160 /* # of chars in short fortune */ X X # define FORTFILE "/usr/games/lib/fortunes.dat" X X bool Wflag = FALSE; /* wait desired after fortune */ X X--- 20,31 ----- X # define CPERS 20 /* # of chars for each sec */ X # define SLEN 160 /* # of chars in short fortune */ X X+ # ifdef VENIX X+ # define TBLFILE "/usr/games/lib/Tbl.dat" X+ char *Tblfile = TBLFILE; /* header information*/ X+ FILE *Tabl; X+ # endif X+ X # define FORTFILE "/usr/games/lib/fortunes.dat" X X bool Wflag = FALSE; /* wait desired after fortune */ X*************** X*** 31,37 X X char *Fortfile = FORTFILE, /* fortune database */ X *Usage[] = { X- # ifdef NO_REGEX X "usage: fortune [ - ] [ -wsloa ] [ file ]", X # else X "usage: fortune [ - ] [ -wsloai ] [ -m pattern ] [ file ]", X X--- 39,44 ----- X X char *Fortfile = FORTFILE, /* fortune database */ X *Usage[] = { X "usage: fortune [ - ] [ -wsloa ] [ file ]", X " - - give this summary of usage", X " w - have program wait after printing message in order", X*************** X*** 33,41 X *Usage[] = { X # ifdef NO_REGEX X "usage: fortune [ - ] [ -wsloa ] [ file ]", X- # else X- "usage: fortune [ - ] [ -wsloai ] [ -m pattern ] [ file ]", X- # endif X " - - give this summary of usage", X " w - have program wait after printing message in order", X " to give time to read", X X--- 40,45 ----- X char *Fortfile = FORTFILE, /* fortune database */ X *Usage[] = { X "usage: fortune [ - ] [ -wsloa ] [ file ]", X " - - give this summary of usage", X " w - have program wait after printing message in order", X " to give time to read", X*************** X*** 43,52 X " l - long fortunes only", X " o - offensive fortunes only", X " a - any fortune, regular or offensive", X- # ifndef NO_REGEX X- " m - print fortunes which match a pattern", X- " i - ignore case in matching patterns", X- # endif X " Mail suggested fortunes to \"fortune@ucbvax.berkeley.edu\"", X NULL X }; X X--- 47,52 ----- X " l - long fortunes only", X " o - offensive fortunes only", X " a - any fortune, regular or offensive", X " Mail suggested fortunes to \"fortune@ucbvax.berkeley.edu\"", X NULL X }; X*************** X*** 59,85 X X char *malloc(); X X- # ifndef NO_REGEX X- char *conv_pat(); X- # endif X- X- # ifndef NO_REGX X- # ifdef REGCMP X- # define RE_COMP(p) (Re_pat = regcmp(p, NULL)) X- # define BAD_COMP(f) ((f) == NULL) X- # define RE_EXEC(p) regex(Re_pat, (p)) X- char *Re_pat, X- *regcmp(), X- *regex(); X- # else X- # define RE_COMP(p) (p = re_comp(p)) X- # define BAD_COMP(f) ((f) != NULL) X- # define RE_EXEC(p) re_exec(p) X- char *re_comp(), X- *re_exec(); X- # endif REGCMP X- # endif NO_REGX X- X time_t time(); X X main(ac, av) X X--- 59,64 ----- X X char *malloc(); X X time_t time(); X X main(ac, av) X*************** X*** 90,95 X register int nchar = 0; X X getargs(ac, av); X if ((Inf = fopen(Fortfile, "r+")) == NULL) { X perror(Fortfile); X exit(-1); X X--- 69,77 ----- X register int nchar = 0; X X getargs(ac, av); X+ # ifdef VENIX X+ if ((Inf = fopen(Fortfile, "r")) == NULL) { X+ # else X if ((Inf = fopen(Fortfile, "r+")) == NULL) { X # endif X perror(Fortfile); X*************** X*** 91,96 X X getargs(ac, av); X if ((Inf = fopen(Fortfile, "r+")) == NULL) { X perror(Fortfile); X exit(-1); X } X X--- 73,79 ----- X if ((Inf = fopen(Fortfile, "r")) == NULL) { X # else X if ((Inf = fopen(Fortfile, "r+")) == NULL) { X+ # endif X perror(Fortfile); X exit(-1); X } X*************** X*** 94,102 X perror(Fortfile); X exit(-1); X } X! if (fread((char *) &Tbl, sizeof Tbl, 1, Inf) != 1) { /* NOSTRICT */ X! fprintf(stderr, "fortune file is truncated\n"); X! exit(-1); X } X if (Tbl.str_longlen <= SLEN && Lflag) { X fprintf(stderr, "Sorry, no long strings in this file\n"); X X--- 77,92 ----- X perror(Fortfile); X exit(-1); X } X! if ((Tabl = fopen(Tblfile, "r"))) { X! if (fread((char *) &Tbl, sizeof Tbl, 1, Tabl) != 1) { /* NOSTRICT */ X! fprintf(stderr, "fortune file is truncated\n"); X! exit(-1); X! } X! } else { X! if (fread((char *) &Tbl, sizeof Tbl, 1, Inf) != 1) { /* NOSTRICT */ X! fprintf(stderr, "fortune file is truncated\n"); X! exit(-1); X! } X } X if (Tbl.str_longlen <= SLEN && Lflag) { X fprintf(stderr, "Sorry, no long strings in this file\n"); X*************** X*** 113,124 X if (Tbl.str_delims[2] == 0) X Tbl.str_delims[2] = Tbl.str_delims[0]; X X- # ifndef NO_REGEX X- if (Mflag) { X- find_matches(); X- /* NOTREACHED */ X- } X- # endif X X do { X getfort(); X X--- 103,108 ----- X if (Tbl.str_delims[2] == 0) X Tbl.str_delims[2] = Tbl.str_delims[0]; X X X do { X getfort(); X*************** X*** 130,135 X putchar(c); X } X (void) fflush(stdout); X (void) fseek(Inf, 0L, 0); X # ifdef LOCK_EX X /* X X--- 114,123 ----- X putchar(c); X } X (void) fflush(stdout); X+ # ifdef VENIX X+ (void) fclose(Inf); X+ (void) fclose(Tabl); X+ # else X (void) fseek(Inf, 0L, 0); X # endif X # ifdef LOCK_EX X*************** X*** 131,136 X } X (void) fflush(stdout); X (void) fseek(Inf, 0L, 0); X # ifdef LOCK_EX X /* X * if we can, we exclusive lock, but since it isn't very X X--- 119,125 ----- X (void) fclose(Tabl); X # else X (void) fseek(Inf, 0L, 0); X+ # endif X # ifdef LOCK_EX X /* X * if we can, we exclusive lock, but since it isn't very X*************** X*** 139,145 X */ X (void) flock(fileno(Inf), LOCK_EX); X # endif LOCK_EX X! if (fwrite((char *) &Tbl, 1, sizeof Tbl, Inf) != sizeof Tbl) X fprintf(stderr, "can't update fortune data file\n"); X # ifdef LOCK_EX X (void) flock(fileno(Inf), LOCK_UN); X X--- 128,144 ----- X */ X (void) flock(fileno(Inf), LOCK_EX); X # endif LOCK_EX X! # ifdef VENIX X! if ((Tabl = fopen(Tblfile, "w")) == NULL) { X! perror(Tblfile); X! exit(-1); X! } X! # endif X! # ifdef VENIX X! if (fwrite((char *) &Tbl, 1, sizeof Tbl, Tabl) != sizeof Tbl) X! # else X! if (fwrite((char *) &Tbl, 1, sizeof Tbl, Inf) != sizeof Tbl) X! # endif X fprintf(stderr, "can't update fortune data file\n"); X # ifdef LOCK_EX X (void) flock(fileno(Inf), LOCK_UN); X*************** X*** 278,298 X } X } X X- # ifndef NO_REGEX X- if (pat != NULL) { X- if (ignore_case) X- pat = conv_pat(pat); X- if (BAD_COMP(RE_COMP(pat))) { X- # ifndef REGCMP X- fprintf(stderr, "%s\n", pat); X- # else X- fprintf(stderr, "bad pattern: %s\n", pat); X- # endif X- bad++; X- } X- } X- # endif NO_REGEX X- X if (bad) { X printf("use \"%s -\" to get usage\n", av[0]); X exit(-1); X X--- 277,282 ----- X } X } X X if (bad) { X printf("use \"%s -\" to get usage\n", av[0]); X exit(-1); X*************** X*** 343,441 X { X return (i >= j ? i : j); X } X- X- # ifndef NO_REGEX X- /* X- * conv_pat: X- * Convert the pattern to an ignore-case equivalent. X- */ X- char * X- conv_pat(orig) X- register char *orig; X- { X- register char *sp; X- register int cnt; X- register char *new; X- X- cnt = 1; /* allow for '\0' */ X- for (sp = orig; *sp != '\0'; sp++) X- if (isalpha(*sp)) X- cnt += 4; X- else X- cnt++; X- if ((new = malloc(cnt)) == NULL) { X- fprintf(stderr, "pattern too long for ignoring case\n"); X- exit(1); X- } X- X- for (sp = new; *orig != '\0'; orig++) { X- if (islower(*orig)) { X- *sp++ = '['; X- *sp++ = *orig; X- *sp++ = toupper(*orig); X- *sp++ = ']'; X- } X- else if (isupper(*orig)) { X- *sp++ = '['; X- *sp++ = *orig; X- *sp++ = tolower(*orig); X- *sp++ = ']'; X- } X- else X- *sp++ = *orig; X- } X- *sp = '\0'; X- return new; X- } X- X- /* X- * find_matches: X- * Find all the fortunes which match the pattern we've been given. X- */ X- find_matches() X- { X- register char *sp; X- register char *fortune; X- register int found_one; X- register int i; X- register int start, end; X- X- if (Oflag || Aflag) X- end = Tbl.str_numstr; X- else X- end = Tbl.str_delims[0]; X- if (Oflag) { X- start = Tbl.str_delims[0]; X- (void) fseek(Inf, Tbl.str_dpos[0], 0); X- } X- else { X- start = 0; X- (void) fseek(Inf, X- (off_t) (sizeof Tbl + X- sizeof Seekpts[0] * (Tbl.str_numstr + 1)), X- 0); X- } X- X- if ((fortune = malloc(Tbl.str_longlen + 1)) == NULL) { X- perror("malloc"); X- exit(1); X- } X- found_one = FALSE; X- for (i = start; i < end; i++) { X- sp = fortune; X- while ((*sp++ = getc(Inf)) != '\0') X- continue; X- if (RE_EXEC(fortune)) { X- if (found_one) X- printf("%%%%\n"); X- (void) fwrite(fortune, 1, sp - fortune, stdout); X- found_one = TRUE; X- } X- } X- if (found_one) X- exit(0); X- else X- exit(1); X- /* NOTREACHED */ X- } X- # endif NO_REGEX X X--- 327,329 ----- X { X return (i >= j ? i : j); X } END_OF_v7fortun.dif if test 9473 -ne `wc -c <v7fortun.dif`; then echo shar: \"v7fortun.dif\" unpacked with wrong size! fi # end of overwriting check fi if test -f v7strfl_h.dif -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"v7strfl_h.dif\" else echo shar: Extracting \"v7strfl_h.dif\" \(503 characters\) sed "s/^X//" >v7strfl_h.dif <<'END_OF_v7strfl_h.dif' X*** net/strfile.h Tue Jun 16 21:37:20 1987 X--- strfile.h Sun Jun 7 00:02:05 1987 X*************** X*** 3,8 X X # define __STRFILE__ X X # include <sys/types.h> X X # define MAXDELIMS 3 X X--- 3,9 ----- X X # define __STRFILE__ X X+ #ifndef major(x) X # include <sys/types.h> X #endif X X*************** X*** 4,9 X # define __STRFILE__ X X # include <sys/types.h> X X # define MAXDELIMS 3 X X X--- 5,11 ----- X X #ifndef major(x) X # include <sys/types.h> X+ #endif X X # define MAXDELIMS 3 X END_OF_v7strfl_h.dif if test 503 -ne `wc -c <v7strfl_h.dif`; then echo shar: \"v7strfl_h.dif\" unpacked with wrong size! fi # end of overwriting check fi echo shar: End of shell archive. exit 0