]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - adventure/save.c
KNFify
[bsdgames-darwin.git] / adventure / save.c
index e748ad2e25ef82b214d3f3831cf11ad433800945..8eed7e141b4b801f6388566fe3be25eeb30fa490 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: save.c,v 1.2 1995/03/21 12:05:08 cgd Exp $     */
+/*     $NetBSD: save.c,v 1.4 1997/10/11 01:53:33 lukem Exp $   */
 
 /*-
  * Copyright (c) 1991, 1993
  * SUCH DAMAGE.
  */
 
+#include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)save.c     8.1 (Berkeley) 5/31/93";
 #else
-static char rcsid[] = "$NetBSD: save.c,v 1.2 1995/03/21 12:05:08 cgd Exp $";
+__RCSID("$NetBSD: save.c,v 1.4 1997/10/11 01:53:33 lukem Exp $");
 #endif
-#endif /* not lint */
+#endif                         /* not lint */
 
 #include <stdio.h>
+#include <stdlib.h>
 #include "hdr.h"
+#include "extern.h"
 
-struct savestruct
-{
-       void *address;
-       int width;
+struct savestruct {
+       void   *address;
+       int     width;
 };
 
 struct savestruct save_array[] =
 {
-       &abbnum,        sizeof(abbnum),
-       &attack,        sizeof(attack),
-       &blklin,        sizeof(blklin),
-       &bonus,         sizeof(bonus),
-       &chloc,         sizeof(chloc),
-       &chloc2,        sizeof(chloc2),
-       &clock1,        sizeof(clock1),
-       &clock2,        sizeof(clock2),
-       &closed,        sizeof(closed),
-       &closng,        sizeof(closng),
-       &daltlc,        sizeof(daltlc),
-       &demo,          sizeof(demo),
-       &detail,        sizeof(detail),
-       &dflag,         sizeof(dflag),
-       &dkill,         sizeof(dkill),
-       &dtotal,        sizeof(dtotal),
-       &foobar,        sizeof(foobar),
-       &gaveup,        sizeof(gaveup),
-       &holdng,        sizeof(holdng),
-       &iwest,         sizeof(iwest),
-       &k,             sizeof(k),
-       &k2,            sizeof(k2),
-       &knfloc,        sizeof(knfloc),
-       &kq,            sizeof(kq),
-       &latncy,        sizeof(latncy),
-       &limit,         sizeof(limit),
-       &lmwarn,        sizeof(lmwarn),
-       &loc,           sizeof(loc),
-       &maxdie,        sizeof(maxdie),
-       &mxscor,        sizeof(mxscor),
-       &newloc,        sizeof(newloc),
-       &numdie,        sizeof(numdie),
-       &obj,           sizeof(obj),
-       &oldlc2,        sizeof(oldlc2),
-       &oldloc,        sizeof(oldloc),
-       &panic,         sizeof(panic),
-       &saved,         sizeof(saved),
-       &savet,         sizeof(savet),
-       &scorng,        sizeof(scorng),
-       &spk,           sizeof(spk),
-       &stick,         sizeof(stick),
-       &tally,         sizeof(tally),
-       &tally2,        sizeof(tally2),
-       &tkk,           sizeof(tkk),
-       &turns,         sizeof(turns),
-       &verb,          sizeof(verb),
-       &wd1,           sizeof(wd1),
-       &wd2,           sizeof(wd2),
-       &wzdark,        sizeof(wzdark),
-       &yea,           sizeof(yea),
-       atloc,          sizeof(atloc),
-       dloc,           sizeof(dloc),
-       dseen,          sizeof(dseen),
-       fixed,          sizeof(fixed),
-       hinted,         sizeof(hinted),
-       link,           sizeof(link),
-       odloc,          sizeof(odloc),
-       place,          sizeof(place),
-       prop,           sizeof(prop),
-       tk,             sizeof(tk),
+       {&abbnum, sizeof(abbnum)},
+       {&attack, sizeof(attack)},
+       {&blklin, sizeof(blklin)},
+       {&bonus, sizeof(bonus)},
+       {&chloc, sizeof(chloc)},
+       {&chloc2, sizeof(chloc2)},
+       {&clock1, sizeof(clock1)},
+       {&clock2, sizeof(clock2)},
+       {&closed, sizeof(closed)},
+       {&closng, sizeof(closng)},
+       {&daltlc, sizeof(daltlc)},
+       {&demo, sizeof(demo)},
+       {&detail, sizeof(detail)},
+       {&dflag, sizeof(dflag)},
+       {&dkill, sizeof(dkill)},
+       {&dtotal, sizeof(dtotal)},
+       {&foobar, sizeof(foobar)},
+       {&gaveup, sizeof(gaveup)},
+       {&holdng, sizeof(holdng)},
+       {&iwest, sizeof(iwest)},
+       {&k, sizeof(k)},
+       {&k2, sizeof(k2)},
+       {&knfloc, sizeof(knfloc)},
+       {&kq, sizeof(kq)},
+       {&latncy, sizeof(latncy)},
+       {&limit, sizeof(limit)},
+       {&lmwarn, sizeof(lmwarn)},
+       {&loc, sizeof(loc)},
+       {&maxdie, sizeof(maxdie)},
+       {&mxscor, sizeof(mxscor)},
+       {&newloc, sizeof(newloc)},
+       {&numdie, sizeof(numdie)},
+       {&obj, sizeof(obj)},
+       {&oldlc2, sizeof(oldlc2)},
+       {&oldloc, sizeof(oldloc)},
+       {&panic, sizeof(panic)},
+       {&saved, sizeof(saved)},
+       {&savet, sizeof(savet)},
+       {&scorng, sizeof(scorng)},
+       {&spk, sizeof(spk)},
+       {&stick, sizeof(stick)},
+       {&tally, sizeof(tally)},
+       {&tally2, sizeof(tally2)},
+       {&tkk, sizeof(tkk)},
+       {&turns, sizeof(turns)},
+       {&verb, sizeof(verb)},
+       {&wd1, sizeof(wd1)},
+       {&wd2, sizeof(wd2)},
+       {&wzdark, sizeof(wzdark)},
+       {&yea, sizeof(yea)},
+       {atloc, sizeof(atloc)},
+       {dloc, sizeof(dloc)},
+       {dseen, sizeof(dseen)},
+       {fixed, sizeof(fixed)},
+       {hinted, sizeof(hinted)},
+       {links, sizeof(links)},
+       {odloc, sizeof(odloc)},
+       {place, sizeof(place)},
+       {prop, sizeof(prop)},
+       {tk, sizeof(tk)},
 
-       NULL,   0
+       {NULL, 0}
 };
 
-save(outfile)   /* Two passes on data: first to get checksum, second */
-char *outfile;  /* to output the data using checksum to start random #s */
+int
+save(outfile)                  /* Two passes on data: first to get checksum,
+                                * second */
+       char   *outfile;        /* to output the data using checksum to start
+                                * random #s */
 {
-       FILE *out;
+       FILE   *out;
        struct savestruct *p;
-       char *s;
-       long sum;
-       int i;
+       char   *s;
+       long    sum;
+       int     i;
 
        crc_start();
        for (p = save_array; p->address != NULL; p++)
                sum = crc(p->address, p->width);
        srandom((int) sum);
 
-       if ((out = fopen(outfile, "wb")) == NULL)
-       {
-           fprintf(stderr,
-               "Hmm.  The name \"%s\" appears to be magically blocked.\n",
-               outfile);
-           return 1;
+       if ((out = fopen(outfile, "wb")) == NULL) {
+               fprintf(stderr,
+                   "Hmm.  The name \"%s\" appears to be magically blocked.\n",
+                   outfile);
+               return 1;
        }
-       fwrite(&sum, sizeof(sum), 1, out);      /* Here's the random() key */
-       for (p = save_array; p->address != NULL; p++)
-       {
+       fwrite(&sum, sizeof(sum), 1, out);      /* Here's the random() key */
+       for (p = save_array; p->address != NULL; p++) {
                for (s = p->address, i = 0; i < p->width; i++, s++)
-                       *s = (*s ^ random()) & 0xFF;      /* Lightly encrypt */
+                       *s = (*s ^ random()) & 0xFF;    /* Lightly encrypt */
                fwrite(p->address, p->width, 1, out);
        }
        fclose(out);
        return 0;
 }
 
+int
 restore(infile)
-char *infile;
+       char   *infile;
 {
-       FILE *in;
+       FILE   *in;
        struct savestruct *p;
-       char *s;
-       long sum, cksum;
-       int i;
+       char   *s;
+       long    sum, cksum = 0;
+       int     i;
 
-       if ((in = fopen(infile, "rb")) == NULL)
-       {
-           fprintf(stderr,
-               "Hmm.  The file \"%s\" appears to be magically blocked.\n",
-               infile);
-           return 1;
+       if ((in = fopen(infile, "rb")) == NULL) {
+               fprintf(stderr,
+                   "Hmm.  The file \"%s\" appears to be magically blocked.\n",
+                   infile);
+               return 1;
        }
-       fread(&sum, sizeof(sum), 1, in);        /* Get the seed */
+       fread(&sum, sizeof(sum), 1, in);        /* Get the seed */
        srandom((int) sum);
-       for (p = save_array; p->address != NULL; p++)
-       {
+       for (p = save_array; p->address != NULL; p++) {
                fread(p->address, p->width, 1, in);
                for (s = p->address, i = 0; i < p->width; i++, s++)
-                       *s = (*s ^ random()) & 0xFF;  /* Lightly decrypt */
+                       *s = (*s ^ random()) & 0xFF;    /* Lightly decrypt */
        }
        fclose(in);
 
-       crc_start();                            /* See if she cheated */
+       crc_start();            /* See if she cheated */
        for (p = save_array; p->address != NULL; p++)
                cksum = crc(p->address, p->width);
-       if (sum != cksum)                       /* Tsk tsk */
-           return 2;                           /* Altered the file */
+       if (sum != cksum)       /* Tsk tsk */
+               return 2;       /* Altered the file */
        /* We successfully restored, so this really was a save file */
        /* Get rid of the file, but don't bother checking that we did */
        return 0;