DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T v

⟦12eaead9f⟧ TextFile

    Length: 9473 (0x2501)
    Types: TextFile
    Names: »v7fortun.dif«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Fortune/v7fortun.dif« 

TextFile

*** net/fortune.c      Sun Jun  7 18:00:43 1987
--- fortune.c    Tue Jun 16 20:59:56 1987
***************
*** 2,7
  
  # include	<sys/types.h>
  # include	<stdio.h>
  # include	<sys/file.h>
  # include	<sys/stat.h>
  # include	"strfile.h"

--- 2,8 -----
  
  # include	<sys/types.h>
  # include	<stdio.h>
+ # ifndef VENIX
  # include	<sys/file.h>
  # endif
  # include	<sys/stat.h>
***************
*** 3,8
  # include	<sys/types.h>
  # include	<stdio.h>
  # include	<sys/file.h>
  # include	<sys/stat.h>
  # include	"strfile.h"
  

--- 4,10 -----
  # include	<stdio.h>
  # ifndef VENIX
  # include	<sys/file.h>
+ # endif
  # include	<sys/stat.h>
  # include	"strfile.h"
  
***************
*** 18,23
  # define	CPERS	20		/* # of chars for each sec */
  # define	SLEN	160		/* # of chars in short fortune */
  
  # define	FORTFILE	"/usr/games/lib/fortunes.dat"
  
  bool	Wflag		= FALSE;	/* wait desired after fortune */

--- 20,31 -----
  # define	CPERS	20		/* # of chars for each sec */
  # define	SLEN	160		/* # of chars in short fortune */
  
+ # ifdef VENIX
+ # define TBLFILE		"/usr/games/lib/Tbl.dat"
+ char	*Tblfile	= TBLFILE;	/* header information*/
+ FILE	*Tabl;
+ # endif
+ 
  # define	FORTFILE	"/usr/games/lib/fortunes.dat"
  
  bool	Wflag		= FALSE;	/* wait desired after fortune */
***************
*** 31,37
  
  char	*Fortfile	= FORTFILE,	/* fortune database */
  	*Usage[]	= {
- # ifdef	NO_REGEX
         "usage:  fortune [ - ] [ -wsloa ] [ file ]",
  # else
         "usage:  fortune [ - ] [ -wsloai ] [ -m pattern ] [ file ]",

--- 39,44 -----
  
  char	*Fortfile	= FORTFILE,	/* fortune database */
  	*Usage[]	= {
         "usage:  fortune [ - ] [ -wsloa ] [ file ]",
         "	- - give this summary of usage",
         "	w - have program wait after printing message in order",
***************
*** 33,41
  	*Usage[]	= {
  # ifdef	NO_REGEX
         "usage:  fortune [ - ] [ -wsloa ] [ file ]",
- # else
-        "usage:  fortune [ - ] [ -wsloai ] [ -m pattern ] [ file ]",
- # endif
         "	- - give this summary of usage",
         "	w - have program wait after printing message in order",
         "	    to give time to read",

--- 40,45 -----
  char	*Fortfile	= FORTFILE,	/* fortune database */
  	*Usage[]	= {
         "usage:  fortune [ - ] [ -wsloa ] [ file ]",
         "	- - give this summary of usage",
         "	w - have program wait after printing message in order",
         "	    to give time to read",
***************
*** 43,52
         "	l - long fortunes only",
         "	o - offensive fortunes only",
         "	a - any fortune, regular or offensive",
- # ifndef NO_REGEX
-        "	m - print fortunes which match a pattern",
-        "	i - ignore case in matching patterns",
- # endif
         "		Mail suggested fortunes to \"fortune@ucbvax.berkeley.edu\"",
  	NULL
  	};

--- 47,52 -----
         "	l - long fortunes only",
         "	o - offensive fortunes only",
         "	a - any fortune, regular or offensive",
         "		Mail suggested fortunes to \"fortune@ucbvax.berkeley.edu\"",
  	NULL
  	};
***************
*** 59,85
  
  char	*malloc();
  
- # ifndef NO_REGEX
- char	*conv_pat();
- # endif
- 
- # ifndef	NO_REGX
- # ifdef REGCMP
- # define	RE_COMP(p)	(Re_pat = regcmp(p, NULL))
- # define	BAD_COMP(f)	((f) == NULL)
- # define	RE_EXEC(p)	regex(Re_pat, (p))
- char	*Re_pat, 
- 	*regcmp(), 
- 	*regex();
- # else
- # define	RE_COMP(p)	(p = re_comp(p))
- # define	BAD_COMP(f)	((f) != NULL)
- # define	RE_EXEC(p)	re_exec(p)
- char	*re_comp(), 
- 	*re_exec();
- # endif REGCMP
- # endif NO_REGX
- 
  time_t	time();
  
  main(ac, av)

--- 59,64 -----
  
  char	*malloc();
  
  time_t	time();
  
  main(ac, av)
***************
*** 90,95
  	register int	nchar = 0;
  
  	getargs(ac, av);
  	if ((Inf = fopen(Fortfile, "r+")) == NULL) {
  		perror(Fortfile);
  		exit(-1);

--- 69,77 -----
  	register int	nchar = 0;
  
  	getargs(ac, av);
+ # ifdef VENIX
+ 	if ((Inf = fopen(Fortfile, "r")) == NULL) {
+ # else
  	if ((Inf = fopen(Fortfile, "r+")) == NULL) {
  # endif
  		perror(Fortfile);
***************
*** 91,96
  
  	getargs(ac, av);
  	if ((Inf = fopen(Fortfile, "r+")) == NULL) {
  		perror(Fortfile);
  		exit(-1);
  	}

--- 73,79 -----
  	if ((Inf = fopen(Fortfile, "r")) == NULL) {
  # else
  	if ((Inf = fopen(Fortfile, "r+")) == NULL) {
+ # endif
  		perror(Fortfile);
  		exit(-1);
  	}
***************
*** 94,102
  		perror(Fortfile);
  		exit(-1);
  	}
! 	if (fread((char *) &Tbl, sizeof Tbl, 1, Inf) != 1) {	/* NOSTRICT */
! 		fprintf(stderr, "fortune file is truncated\n");
! 		exit(-1);
  	}
  	if (Tbl.str_longlen <= SLEN && Lflag) {
  		fprintf(stderr, "Sorry, no long strings in this file\n");

--- 77,92 -----
  		perror(Fortfile);
  		exit(-1);
  	}
! 	if ((Tabl = fopen(Tblfile, "r"))) {
! 		if (fread((char *) &Tbl, sizeof Tbl, 1, Tabl) != 1) { 	/* NOSTRICT */
! 			fprintf(stderr, "fortune file is truncated\n");
! 			exit(-1);
! 		}
! 	} else {
! 		if (fread((char *) &Tbl, sizeof Tbl, 1, Inf) != 1) {	/* NOSTRICT */
! 			fprintf(stderr, "fortune file is truncated\n");
! 			exit(-1);
! 		}
  	}
  	if (Tbl.str_longlen <= SLEN && Lflag) {
  		fprintf(stderr, "Sorry, no long strings in this file\n");
***************
*** 113,124
  	if (Tbl.str_delims[2] == 0)
  		Tbl.str_delims[2] = Tbl.str_delims[0];
  
- # ifndef NO_REGEX
- 	if (Mflag) {
- 		find_matches();
- 		/* NOTREACHED */
- 	}
- # endif
  
  	do {
  		getfort();

--- 103,108 -----
  	if (Tbl.str_delims[2] == 0)
  		Tbl.str_delims[2] = Tbl.str_delims[0];
  
  
  	do {
  		getfort();
***************
*** 130,135
  		putchar(c);
  	}
  	(void) fflush(stdout);
  	(void) fseek(Inf, 0L, 0);
  # ifdef	LOCK_EX
  	/*

--- 114,123 -----
  		putchar(c);
  	}
  	(void) fflush(stdout);
+ # ifdef VENIX
+ 	(void) fclose(Inf);
+ 	(void) fclose(Tabl);
+ # else
  	(void) fseek(Inf, 0L, 0);
  # endif
  # ifdef	LOCK_EX
***************
*** 131,136
  	}
  	(void) fflush(stdout);
  	(void) fseek(Inf, 0L, 0);
  # ifdef	LOCK_EX
  	/*
  	 * if we can, we exclusive lock, but since it isn't very

--- 119,125 -----
  	(void) fclose(Tabl);
  # else
  	(void) fseek(Inf, 0L, 0);
+ # endif
  # ifdef	LOCK_EX
  	/*
  	 * if we can, we exclusive lock, but since it isn't very
***************
*** 139,145
  	 */
  	(void) flock(fileno(Inf), LOCK_EX);
  # endif	LOCK_EX
! 	if (fwrite((char *) &Tbl, 1, sizeof Tbl, Inf) != sizeof Tbl)
  		fprintf(stderr, "can't update fortune data file\n");
  # ifdef	LOCK_EX
  	(void) flock(fileno(Inf), LOCK_UN);

--- 128,144 -----
  	 */
  	(void) flock(fileno(Inf), LOCK_EX);
  # endif	LOCK_EX
! # ifdef VENIX
! 	if ((Tabl = fopen(Tblfile, "w")) == NULL) {
! 		perror(Tblfile);
! 		exit(-1);
! 	}
! # endif
! # ifdef VENIX
! 	if (fwrite((char *) &Tbl, 1,  sizeof Tbl, Tabl) != sizeof Tbl)
! # else
! 	if (fwrite((char *) &Tbl, 1,  sizeof Tbl, Inf) != sizeof Tbl)
! # endif
  		fprintf(stderr, "can't update fortune data file\n");
  # ifdef	LOCK_EX
  	(void) flock(fileno(Inf), LOCK_UN);
***************
*** 278,298
  				}
  	}
  
- # ifndef NO_REGEX
- 	if (pat != NULL) {
- 		if (ignore_case)
- 			pat = conv_pat(pat);
- 		if (BAD_COMP(RE_COMP(pat))) {
- # ifndef REGCMP
- 			fprintf(stderr, "%s\n", pat);
- # else
- 			fprintf(stderr, "bad pattern: %s\n", pat);
- # endif
- 			bad++;
- 		}
- 	}
- # endif	NO_REGEX
- 
  	if (bad) {
  		printf("use \"%s -\" to get usage\n", av[0]);
  		exit(-1);

--- 277,282 -----
  				}
  	}
  
  	if (bad) {
  		printf("use \"%s -\" to get usage\n", av[0]);
  		exit(-1);
***************
*** 343,441
  {
  	return (i >= j ? i : j);
  }
- 
- # ifndef	NO_REGEX
- /*
-  * conv_pat:
-  *	Convert the pattern to an ignore-case equivalent.
-  */
- char *
- conv_pat(orig)
- register char	*orig;
- {
- 	register char	*sp;
- 	register int	cnt;
- 	register char	*new;
- 
- 	cnt = 1;	/* allow for '\0' */
- 	for (sp = orig; *sp != '\0'; sp++)
- 		if (isalpha(*sp))
- 			cnt += 4;
- 		else
- 			cnt++;
- 	if ((new = malloc(cnt)) == NULL) {
- 		fprintf(stderr, "pattern too long for ignoring case\n");
- 		exit(1);
- 	}
- 
- 	for (sp = new; *orig != '\0'; orig++) {
- 		if (islower(*orig)) {
- 			*sp++ = '[';
- 			*sp++ = *orig;
- 			*sp++ = toupper(*orig);
- 			*sp++ = ']';
- 		}
- 		else if (isupper(*orig)) {
- 			*sp++ = '[';
- 			*sp++ = *orig;
- 			*sp++ = tolower(*orig);
- 			*sp++ = ']';
- 		}
- 		else
- 			*sp++ = *orig;
- 	}
- 	*sp = '\0';
- 	return new;
- }
- 
- /*
-  * find_matches:
-  *	Find all the fortunes which match the pattern we've been given.
-  */
- find_matches()
- {
- 	register char		*sp;
- 	register char		*fortune;
- 	register int		found_one;
- 	register int		i;
- 	register int		start, end;
- 
- 	if (Oflag || Aflag)
- 		end = Tbl.str_numstr;
- 	else
- 		end = Tbl.str_delims[0];
- 	if (Oflag) {
- 		start = Tbl.str_delims[0];
- 		(void) fseek(Inf, Tbl.str_dpos[0], 0);
- 	}
- 	else {
- 		start = 0;
- 		(void) fseek(Inf,
- 			     (off_t) (sizeof Tbl +
- 				      sizeof Seekpts[0] * (Tbl.str_numstr + 1)),
- 			     0);
- 	}
- 
- 	if ((fortune = malloc(Tbl.str_longlen + 1)) == NULL) {
- 		perror("malloc");
- 		exit(1);
- 	}
- 	found_one = FALSE;
- 	for (i = start; i < end; i++) {
- 		sp = fortune;
- 		while ((*sp++ = getc(Inf)) != '\0')
- 			continue;
- 		if (RE_EXEC(fortune)) {
- 			if (found_one)
- 				printf("%%%%\n");
- 			(void) fwrite(fortune, 1, sp - fortune, stdout);
- 			found_one = TRUE;
- 		}
- 	}
- 	if (found_one)
- 		exit(0);
- 	else
- 		exit(1);
- 	/* NOTREACHED */
- }
- # endif	NO_REGEX

--- 327,329 -----
  {
  	return (i >= j ? i : j);
  }