]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - larn/fortune.c
Tons of changes; re-indent, use termios, fix warnings, add prototypes...
[bsdgames-darwin.git] / larn / fortune.c
index 0efd44186192932daea3958c0f0a1aed576e9b75..7f41c8c06ef8df2c2c6b9bededc58c202542000e 100644 (file)
@@ -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 <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]);
+}