[BACK]Return to setup.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / games / adventure

Annotation of src/games/adventure/setup.c, Revision 1.12

1.12    ! rillig      1: /* $NetBSD: setup.c,v 1.11 2005/07/01 00:03:36 jmc Exp $ */
1.2       cgd         2:
1.1       jtc         3: /*-
                      4:  * Copyright (c) 1991, 1993
                      5:  *     The Regents of the University of California.  All rights reserved.
                      6:  *
                      7:  * This code is derived from software contributed to Berkeley by
                      8:  * Jim Gillogly at The Rand Corporation.
                      9:  *
                     10:  * Redistribution and use in source and binary forms, with or without
                     11:  * modification, are permitted provided that the following conditions
                     12:  * are met:
                     13:  * 1. Redistributions of source code must retain the above copyright
                     14:  *    notice, this list of conditions and the following disclaimer.
                     15:  * 2. Redistributions in binary form must reproduce the above copyright
                     16:  *    notice, this list of conditions and the following disclaimer in the
                     17:  *    documentation and/or other materials provided with the distribution.
1.10      agc        18:  * 3. Neither the name of the University nor the names of its contributors
1.1       jtc        19:  *    may be used to endorse or promote products derived from this software
                     20:  *    without specific prior written permission.
                     21:  *
                     22:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
                     23:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
                     24:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
                     25:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
                     26:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
                     27:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
                     28:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     29:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
                     30:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
                     31:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
                     32:  * SUCH DAMAGE.
                     33:  */
                     34:
                     35: #ifndef lint
1.8       simonb     36: static char copyright[] = "@(#) Copyright (c) 1991, 1993\n\
                     37:        The Regents of the University of California.  All rights reserved.\n";
1.1       jtc        38:
1.2       cgd        39: #if 0
1.1       jtc        40: static char sccsid[] = "@(#)setup.c    8.1 (Berkeley) 5/31/93";
1.2       cgd        41: #else
1.12    ! rillig     42: static char rcsid[] = "$NetBSD: setup.c,v 1.11 2005/07/01 00:03:36 jmc Exp $";
1.2       cgd        43: #endif
1.3       lukem      44: #endif                         /* not lint */
1.1       jtc        45:
                     46: /*
                     47:  * Setup: keep the structure of the original Adventure port, but use an
                     48:  * internal copy of the data file, serving as a sort of virtual disk.  It's
                     49:  * lightly encrypted to prevent casual snooping of the executable.
                     50:  *
                     51:  * Also do appropriate things to tabs so that bogus editors will do the right
                     52:  * thing with the data file.
                     53:  *
                     54:  */
                     55:
                     56: #define SIG1 " *      Jim Gillogly"
                     57: #define SIG2 " *      Sterday, 6 Thrimidge S.R. 1993, 15:24"
                     58:
                     59: #include <stdio.h>
1.8       simonb     60: #include <errno.h>
                     61: #include <string.h>
1.6       hubertf    62: #include <stdlib.h>
1.11      jmc        63: #include "hdr.h"       /* SEED lives in there; keep them coordinated. */
1.1       jtc        64:
1.9       jsm        65: #define USAGE "Usage: setup file > data.c (file is typically glorkz)\n"
1.1       jtc        66:
                     67: #define YES 1
                     68: #define NO  0
                     69:
1.3       lukem      70: #define LINE 10                        /* How many values do we get on a line? */
1.1       jtc        71:
1.8       simonb     72: int main(int, char *[]);
1.6       hubertf    73:
1.4       lukem      74: int
1.11      jmc        75: main(int argc, char *argv[])
1.1       jtc        76: {
1.3       lukem      77:        FILE   *infile;
                     78:        int     c, count, linestart;
1.1       jtc        79:
1.8       simonb     80:        if (argc != 2) {
                     81:                fprintf(stderr, USAGE);
                     82:                exit(1);
                     83:        }
1.1       jtc        84:
1.8       simonb     85:        if ((infile = fopen(argv[1], "r")) == NULL) {
                     86:                fprintf(stderr, "Can't read file %s: %s\n", argv[1],
                     87:                    strerror(errno));
                     88:                exit(1);
                     89:        }
1.1       jtc        90:        puts("/*\n * data.c: created by setup from the ascii data file.");
                     91:        puts(SIG1);
                     92:        puts(SIG2);
                     93:        puts(" */");
                     94:        printf("\n\nchar data_file[] =\n{");
                     95:        srandom(SEED);
                     96:        count = 0;
                     97:        linestart = YES;
                     98:
1.3       lukem      99:        while ((c = getc(infile)) != EOF) {
1.11      jmc       100:                if (linestart && c == ' ') { /* Convert first spaces to tab */
1.12    ! rillig    101:                        printf("0x%02x,",
1.11      jmc       102:                            (unsigned int)('\t' ^ random()) & 0xFF);
1.1       jtc       103:                        while ((c = getc(infile)) == ' ' && c != EOF);
                    104:                        /* Drop the non-whitespace character through */
                    105:                        linestart = NO;
                    106:                }
1.3       lukem     107:                switch (c) {
                    108:                case '\t':
                    109:                        linestart = NO; /* Don't need to convert spaces */
1.1       jtc       110:                        break;
1.3       lukem     111:                case '\n':
                    112:                        linestart = YES;        /* Ready to convert spaces
                    113:                                                 * again */
1.1       jtc       114:                        break;
                    115:                }
1.3       lukem     116:                if (count++ % LINE == 0)        /* Finished a line? */
1.1       jtc       117:                        printf("\n\t");
1.5       hubertf   118:                printf("0x%02x,", (unsigned int)(c ^ random()) & 0xFF);
1.1       jtc       119:        }
                    120:        puts("\n\t0\n};");
                    121:        fclose(infile);
1.7       hubertf   122:        fflush(stdout);
1.8       simonb    123:        if (ferror(stdout)) {
                    124:                perror("error writing standard output");
                    125:                exit(1);
                    126:        }
1.1       jtc       127:        exit(0);
                    128: }

CVSweb <webmaster@jp.NetBSD.org>