Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.1 6/24/83; site ttrda.UUCP
Path: utzoo!watmath!clyde!burl!ulysses!mhuxr!mhuxj!mhuxn!ihnp4!nwuxg!cuuxc!cuuxb!ltuxa!ttrdc!ttrda!estes
From: estes@ttrda.UUCP (Edward Estes )
Newsgroups: net.sources.games
Subject: Phantasia 3.3 (new setup.c)
Message-ID: <128@ttrda.UUCP>
Date: Tue, 16-Jul-85 01:52:01 EDT
Article-I.D.: ttrda.128
Posted: Tue Jul 16 01:52:01 1985
Date-Received: Thu, 11-Jul-85 08:31:14 EDT
Organization: AT&T Teletype Corp., Skokie, IL
Lines: 150
The posted version of 'setup.c' for Phantasia 3.3 was missing a semicolon.
Here is a fixed version. Sorry about that.
Ted Estes
AT&T Teletype Corporation
Skokie, IL
...!ihnp4!ttrdc!ttrda!estes
===============
: This is a shar archieve. Extract with sh, not csh.
: The rest of this file will extract:
: setup.c
echo extracting - setup.c
sed 's/^X//' > setup.c << '!EOR!'
X/*
X * setup.c Program to set up all files for Phantasia
X *
X * This program tries to verify the parameters specified in
X * the Makefile. Since Phantasia assumes its files exist,
X * simple errors can result in core dumps.
X *
X * This program tries to check against this.
X *
X * Note that this is not fool-proof, and that this could
X * be much more clever in checking everything.
X */
X
X#include "phant.h"
X#include
X#include
X
Xmain(argc,argv) /* program to init. files for Phantasia */
Xint argc;
Xchar **argv;
X{
XFILE *fp;
Xstruct stats sbuf;
Xstruct nrgvoid grail;
Xstruct stat fbuf;
Xregister int loop;
Xchar stbuf[128];
X
X srand((int) time(NULL)); /* prime random numbers */
X /* try to check RAND definition */
X for (loop = 1000; loop; loop--)
X {
X if (rand() > ((int) RAND))
X {
X sprintf(stbuf,"%.1f",(double) RAND);
X Error("%s is a bad value for RAND.\n",stbuf);
X }
X }
X umask(077);
X /* check where Phantasia lives */
X if (stat(PATH",&fbuf) < 0)
X {
X perror(PATH");
X exit(1);
X /*NOTREACHED*/
X }
X if (fbuf.st_mode & S_IFDIR == 0)
X Error("%s is not a directory.\n",PATH");
X /* try to create data files */
X if ((fp = fopen(goldfile,"w")) == NULL)
X Error("cannot create %s.\n",goldfile);
X else
X fclose(fp);
X if ((fp = fopen(motd,"w")) == NULL)
X Error("cannot create %s.\n",motd);
X else
X fclose(fp);
X if ((fp = fopen(messfile,"w")) == NULL)
X Error("cannot create %s.\n",messfile);
X else
X fclose(fp);
X /* do not reset character file if it already exists */
X if (stat(peoplefile,&fbuf) < 0)
X {
X buildchar(&sbuf);
X strcpy(sbuf.name,"");
X if ((fp = fopen(peoplefile,"w")) == NULL)
X Error("cannot create %s.\n",peoplefile);
X else
X {
X fwrite(&sbuf,sizeof(sbuf),1,fp);
X fclose(fp);
X }
X }
X grail.active = TRUE;
X grail.x = roll(-1.0e6,2.0e6);
X grail.y = roll(-1.0e6,2.0e6);
X if ((fp = fopen(voidfile,"w")) == NULL)
X Error("cannot create %s.\n",voidfile);
X else
X {
X fwrite(&grail,sizeof(grail),1,fp);
X fclose(fp);
X }
X if ((fp = fopen(lastdead,"w")) == NULL)
X Error("cannot create %s.\n",lastdead);
X else
X {
X fputs(" ",fp);
X fclose(fp);
X }
X#ifdef ENEMY
X if ((fp = fopen(enemyfile,"w")) == NULL)
X Error("cannot create %s.\n",enemyfile);
X else
X fclose(fp);
X#endif
X if ((fp = fopen(sbfile,"w")) == NULL)
X Error("cannot create %s.\n",sbfile);
X else
X fclose(fp);
X if (getuid() != UID)
X fprintf(stderr,"Warning: UID (%d) is not equal to current uid.\n",UID);
X exit(0);
X}
X
Xbuildchar(stat) /* put in some default values */
X/* Note that this function is almost the same as initchar().
X It is used to insure that unexpected values will not be found in a
X new character file. */
Xstruct stats *stat;
X{
X stat->x = roll(-125,251);
X stat->y = roll(-125,251);
X stat->exp = stat->lvl = stat->sin = 0;
X stat->crn = stat->psn = 0;
X stat->rng.type = NONE;
X stat->rng.duration = 0;
X stat->pal = FALSE;
X stat->hw = stat->amu = stat->bls = 0;
X stat->chm = 0;
X stat->gem = 0.1;
X stat->gld = roll(25,50) + roll(0,25) + 0.1;
X stat->quks = stat->swd = stat->shd = 0;
X stat->vrg = FALSE;
X stat->typ = 0;
X}
X
XError(str,file) /* print an error message, and exit */
Xchar *str, *file;
X{
X fprintf(stderr,"Error: ");
X fprintf(stderr,str,file);
X exit(1);
X /*NOTREACHED*/
X}
!EOR!