summaryrefslogtreecommitdiffstats
path: root/adventure/setup.c
diff options
context:
space:
mode:
authorjtc <jtc@NetBSD.org>1994-10-21 20:51:44 +0000
committerjtc <jtc@NetBSD.org>1994-10-21 20:51:44 +0000
commita861bdee374ea33fbbe20e45cd8d3f644374c835 (patch)
tree20f77e0423e6294672f4d175bc7a787ca87ddebf /adventure/setup.c
parentfb73c52b499ea55b081fc042440f4524842c68b6 (diff)
downloadbsdgames-darwin-a861bdee374ea33fbbe20e45cd8d3f644374c835.tar.gz
bsdgames-darwin-a861bdee374ea33fbbe20e45cd8d3f644374c835.tar.zst
bsdgames-darwin-a861bdee374ea33fbbe20e45cd8d3f644374c835.zip
adventure(6), from 44lite
Diffstat (limited to 'adventure/setup.c')
-rw-r--r--adventure/setup.c125
1 files changed, 125 insertions, 0 deletions
diff --git a/adventure/setup.c b/adventure/setup.c
new file mode 100644
index 00000000..06371f5f
--- /dev/null
+++ b/adventure/setup.c
@@ -0,0 +1,125 @@
+/*-
+ * Copyright (c) 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Jim Gillogly at The Rand Corporation.
+ *
+ * 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 copyright[] =
+"@(#) Copyright (c) 1991, 1993\n\
+ The Regents of the University of California. All rights reserved.\n";
+#endif /* not lint */
+
+#ifndef lint
+static char sccsid[] = "@(#)setup.c 8.1 (Berkeley) 5/31/93";
+#endif /* not lint */
+
+/*
+ * Setup: keep the structure of the original Adventure port, but use an
+ * internal copy of the data file, serving as a sort of virtual disk. It's
+ * lightly encrypted to prevent casual snooping of the executable.
+ *
+ * Also do appropriate things to tabs so that bogus editors will do the right
+ * thing with the data file.
+ *
+ */
+
+#define SIG1 " * Jim Gillogly"
+#define SIG2 " * Sterday, 6 Thrimidge S.R. 1993, 15:24"
+
+#include <stdio.h>
+#include "hdr.h" /* SEED lives in there; keep them coordinated. */
+
+#define USAGE "Usage: setup file > data.c (file is typically glorkz)\n"
+
+#define YES 1
+#define NO 0
+
+void fatal();
+
+#define LINE 10 /* How many values do we get on a line? */
+
+main(argc, argv)
+int argc;
+char *argv[];
+{
+ FILE *infile;
+ int c, count, linestart;
+
+ if (argc != 2) fatal(USAGE);
+
+ if ((infile = fopen(argv[1], "r")) == NULL)
+ fatal("Can't read file %s.\n", argv[1]);
+ puts("/*\n * data.c: created by setup from the ascii data file.");
+ puts(SIG1);
+ puts(SIG2);
+ puts(" */");
+ printf("\n\nchar data_file[] =\n{");
+ srandom(SEED);
+ count = 0;
+ linestart = YES;
+
+ while ((c = getc(infile)) != EOF)
+ {
+ if (linestart && c == ' ') /* Convert first spaces to tab */
+ {
+ printf("0x%02x,", ('\t' ^ random()) & 0xFF);
+ while ((c = getc(infile)) == ' ' && c != EOF);
+ /* Drop the non-whitespace character through */
+ linestart = NO;
+ }
+ switch(c)
+ {
+ case '\t':
+ linestart = NO; /* Don't need to convert spaces */
+ break;
+ case '\n':
+ linestart = YES; /* Ready to convert spaces again */
+ break;
+ }
+ if (count++ % LINE == 0) /* Finished a line? */
+ printf("\n\t");
+ printf("0x%02x,", (c ^ random()) & 0xFF);
+ }
+ puts("\n\t0\n};");
+ fclose(infile);
+ exit(0);
+}
+
+
+void fatal(format, arg)
+char *format;
+{
+ fprintf(stderr, format, arg);
+ exit(1);
+}