-#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 <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
+/* $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 <sys/cdefs.h>
+#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 <stdlib.h>
- /* 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<base+stat.st_size; p++) /* count lines */
- if (*p == '\n') *p=0,lines++;
- nlines = lines;
+/*
+ * function to return a random fortune from the fortune file
+ */
- /* 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]);
+}