From 94b5353c71e7246077d468afe68d51ce85fc213d Mon Sep 17 00:00:00 2001 From: cgd Date: Thu, 23 Mar 1995 08:28:00 +0000 Subject: merge with Lite, new RCS id conventions, etc. --- larn/fortune.c | 138 +++++++++++++++++++++++++++++++++------------------------ 1 file changed, 81 insertions(+), 57 deletions(-) (limited to 'larn/fortune.c') diff --git a/larn/fortune.c b/larn/fortune.c index 0efd4418..54a7a955 100644 --- a/larn/fortune.c +++ b/larn/fortune.c @@ -1,67 +1,91 @@ +/*- + * Copyright (c) 1991 The Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + #ifndef lint -static char rcsid[] = "$Id: fortune.c,v 1.2 1993/08/02 17:20:00 mycroft Exp $"; +#if 0 +static char sccsid[] = "@(#)fortune.c 5.5 (Berkeley) 6/10/91"; +#else +static char rcsid[] = "$NetBSD: fortune.c,v 1.3 1995/03/23 08:33:23 cgd Exp $"; +#endif #endif /* not lint */ /* fortune.c Larn is copyrighted 1986 by Noah Morgan. */ -#include -#include -#include -#include "header.h" /* - * function to return a random fortune from the fortune file + * function to return a random fortune from the fortune file */ -static char *base=0; /* pointer to the fortune text */ -static char **flines=0; /* array of pointers to each fortune */ -static int fd=0; /* true if we have load the fortune info */ -static int nlines=0; /* # lines in fortune database */ - -char *fortune(file) - char *file; - { - register char *p; - register int lines,tmp; - struct stat stat; - char *malloc(); - if (fd==0) - { - if ((fd=open(file,O_RDONLY)) < 0) /* open the file */ - return(0); /* can't find file */ - - /* find out how big fortune file is and get memory for it */ - stat.st_size = 16384; - if ((fstat(fd,&stat) < 0) || ((base=malloc(1+stat.st_size)) == 0)) - { - close(fd); fd= -1; free((char*)base); return(0); /* can't stat file */ - } - - /* read in the entire fortune file */ - if (read(fd,base,stat.st_size) != stat.st_size) - { - close(fd); fd= -1; free((char*)base); return(0); /* can't read file */ - } - close(fd); base[stat.st_size]=0; /* final NULL termination */ - - /* count up all the lines (and NULL terminate) to know memory needs */ - for (p=base,lines=0; p temptation", + "the greatest weapon in the game has not the highest Weapon Class", + "you can't buy the most powerful scroll", + "identify things before you use them", + "there's more than one way through a wall" +}; - /* now assign each pointer to a line */ - for (p=base,tmp=0; tmp 2) /* if we have a database to look at */ - return(flines[rund((nlines<=0)?1:nlines)]); - else - return(0); - } +char * +fortune() +{ + return (flines[random() % NFORTUNES]); +} -- cgit v1.2.3