4.4BSD snapshot (revision 8.1); add 1993 to copyright
[unix-history] / usr / src / games / adventure / setup.c
CommitLineData
b4686327 1/*-
9189ca05
KB
2 * Copyright (c) 1991, 1993
3 * The Regents of the University of California. All rights reserved.
b4686327
KB
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Jim Gillogly at The Rand Corporation.
7 *
8 * %sccs.include.redist.c%
9 */
10
11#ifndef lint
9189ca05
KB
12static char copyright[] =
13"@(#) Copyright (c) 1991, 1993\n\
14 The Regents of the University of California. All rights reserved.\n";
b4686327
KB
15#endif /* not lint */
16
17#ifndef lint
9189ca05 18static char sccsid[] = "@(#)setup.c 8.1 (Berkeley) %G%";
b4686327
KB
19#endif /* not lint */
20
21/*
22 * Setup: keep the structure of the original Adventure port, but use an
23 * internal copy of the data file, serving as a sort of virtual disk. It's
24 * lightly encrypted to prevent casual snooping of the executable.
25 *
26 * Also do appropriate things to tabs so that bogus editors will do the right
27 * thing with the data file.
28 *
29 */
30
31#define SIG1 " * Jim Gillogly"
32#define SIG2 " * Sterday, 6 Thrimidge S.R. 1993, 15:24"
33
34#include <stdio.h>
35#include "hdr.h" /* SEED lives in there; keep them coordinated. */
36
37#define USAGE "Usage: setup file > data.c (file is typically glorkz)\n"
38
39#define YES 1
40#define NO 0
41
42void fatal();
43
44#define LINE 10 /* How many values do we get on a line? */
45
46main(argc, argv)
47int argc;
48char *argv[];
49{
50 FILE *infile;
51 int c, count, linestart;
52
53 if (argc != 2) fatal(USAGE);
54
55 if ((infile = fopen(argv[1], "r")) == NULL)
56 fatal("Can't read file %s.\n", argv[1]);
57 puts("/*\n * data.c: created by setup from the ascii data file.");
58 puts(SIG1);
59 puts(SIG2);
60 puts(" */");
61 printf("\n\nchar data_file[] =\n{");
62 srandom(SEED);
63 count = 0;
64 linestart = YES;
65
66 while ((c = getc(infile)) != EOF)
67 {
68 if (linestart && c == ' ') /* Convert first spaces to tab */
69 {
70 printf("0x%02x,", ('\t' ^ random()) & 0xFF);
71 while ((c = getc(infile)) == ' ' && c != EOF);
72 /* Drop the non-whitespace character through */
73 linestart = NO;
74 }
75 switch(c)
76 {
77 case '\t':
78 linestart = NO; /* Don't need to convert spaces */
79 break;
80 case '\n':
81 linestart = YES; /* Ready to convert spaces again */
82 break;
83 }
84 if (count++ % LINE == 0) /* Finished a line? */
85 printf("\n\t");
86 printf("0x%02x,", (c ^ random()) & 0xFF);
87 }
88 puts("\n\t0\n};");
89 fclose(infile);
90 exit(0);
91}
92
93
94void fatal(format, arg)
95char *format;
96{
97 fprintf(stderr, format, arg);
98 exit(1);
99}