diff options
Diffstat (limited to 'larn/fortune.c')
| -rw-r--r-- | larn/fortune.c | 138 |
1 files changed, 81 insertions, 57 deletions
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 <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#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<base+stat.st_size; p++) /* count lines */ - if (*p == '\n') *p=0,lines++; - nlines = lines; - /* get memory for array of pointers to each fortune */ - if ((flines=(char**)malloc(nlines*sizeof(char*))) == 0) - { - free((char*)base); fd= -1; return(0); /* malloc() failure */ - } +char *flines[] = { + "gem value = gem * 2 ^ perfection", + "sitting down can have unexpected results", + "don't pry into the affairs of others", + "drinking can be hazardous to your health", + "beware of the gusher!", + "some monsters are greedy", + "nymphs have light fingers", + "try kissing a disenchantress!", + "hammers and brains don't mix", + "what does a potion of cure dianthroritis taste like?", + "hit point gain/loss when raising a level depends on constitution", + "healing a mighty wizard can be exhilarating", + "be sure to pay your taxes", + "are Vampires afraid of something?", + "some dragons can fly", + "dos thou strive for perfection?", + "patience is a virtue, unless your daughter dies", + "what does the Eye of Larn see in its guardian?", + "a level 25 player casts like crazy!", + "energy rings affect spell regeneration", + "difficulty affects regeneration", + "control of the pesty spirits is most helpful", + "don't fall into a bottomless pit", + "dexterity allows you to carry more", + "you can get 2 points of WC for the price of one", + "never enter the dungeon naked! the monsters will laugh at you!", + "did someone put itching powder in your armor?", + "you klutz!", + "avoid opening doors. you never know whats on the other side.", + "infinite regeneration ---> 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<nlines; tmp++) - { - flines[tmp]=p; while (*p++); /* advance to next line */ - } - } +#define NFORTUNES 34 - if (fd > 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]); +} |
