X-Git-Url: https://git.cameronkatri.com/bsdgames-darwin.git/blobdiff_plain/be2e4143844eacde377f9efb27dcb1b55e6ecaf6..f73f1009084e75624e3bc00fef9cf4749de80dcc:/larn/fortune.c?ds=sidebyside diff --git a/larn/fortune.c b/larn/fortune.c index 0efd4418..7f41c8c0 100644 --- a/larn/fortune.c +++ b/larn/fortune.c @@ -1,67 +1,98 @@ -#ifndef lint -static char rcsid[] = "$Id: fortune.c,v 1.2 1993/08/02 17:20:00 mycroft Exp $"; -#endif /* not lint */ - -/* fortune.c Larn is copyrighted 1986 by Noah Morgan. */ -#include -#include -#include +/* $NetBSD: fortune.c,v 1.4 1997/10/18 20:03:18 christos Exp $ */ -#include "header.h" -/* - * function to return a random fortune from the fortune file +/*- + * 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. */ -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 */ +#include +#ifndef lint +#if 0 +static char sccsid[] = "@(#)fortune.c 5.5 (Berkeley) 6/10/91"; +#else +__RCSID("$NetBSD: fortune.c,v 1.4 1997/10/18 20:03:18 christos Exp $"); +#endif +#endif /* not lint */ - /* 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 */ - } +#include - /* 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 */ +#include "header.h" +#include "extern.h" +/* fortune.c Larn is copyrighted 1986 by Noah Morgan. */ - /* 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]); +}