1: # include   <stdio.h>
   2: # include   "deck.h"
   3: 
   4: /*
   5:  *	This program initializes the card files for monopoly.
   6:  * It reads in a data file with Com. Chest cards, followed by
   7:  * the Chance card.  The two are seperated by a line of "%-".
   8:  * All other cards are seperated by lines of "%%".  In the front
   9:  * of the file is the data for the decks in the same order.
  10:  * This includes the seek pointer for the start of each card.
  11:  * All cards start with their execution code, followed by the
  12:  * string to print, terminated with a null byte.
  13:  */
  14: 
  15: # define    TRUE    1
  16: # define    FALSE   0
  17: 
  18: # define    bool    char
  19: # define    reg register
  20: 
  21: char    *infile     = "cards.inp",      /* input file		*/
  22:     *outfile    = "cards.pck";      /* "packed" file	*/
  23: 
  24: long    ftell();
  25: 
  26: DECK    deck[2];
  27: 
  28: FILE    *inf, *outf;
  29: 
  30: main(ac, av)
  31: int ac;
  32: char    *av[]; {
  33: 
  34:     getargs(ac, av);
  35:     if ((inf = fopen(infile, "r")) == NULL) {
  36:         perror(infile);
  37:         exit(1);
  38:     }
  39:     count();
  40:     /*
  41: 	 * allocate space for pointers.
  42: 	 */
  43:     CC_D.offsets = calloc(CC_D.num_cards + 1, sizeof (long));
  44:     CH_D.offsets = calloc(CH_D.num_cards + 1, sizeof (long));
  45:     fseek(inf, 0L, 0);
  46:     if ((outf = fopen(outfile, "w")) == NULL) {
  47:         perror(outfile);
  48:         exit(0);
  49:     }
  50: 
  51:     fwrite(deck, sizeof (DECK), 2, outf);
  52:     fwrite(CC_D.offsets, sizeof (long), CC_D.num_cards, outf);
  53:     fwrite(CH_D.offsets, sizeof (long), CH_D.num_cards, outf);
  54:     putem();
  55: 
  56:     fclose(inf);
  57:     fseek(outf, 0, 0L);
  58:     fwrite(deck, sizeof (DECK), 2, outf);
  59:     fwrite(CC_D.offsets, sizeof (long), CC_D.num_cards, outf);
  60:     fwrite(CH_D.offsets, sizeof (long), CH_D.num_cards, outf);
  61:     fclose(outf);
  62:     printf("There were %d com. chest and %d chance cards\n", CC_D.num_cards, CH_D.num_cards);
  63:     exit(0);
  64: }
  65: 
  66: getargs(ac, av)
  67: int ac;
  68: char    *av[]; {
  69: 
  70:     if (ac > 2) {
  71:         infile = av[2] ? av[2] : infile;
  72:         if (ac > 3)
  73:             outfile = av[3];
  74:     }
  75: }
  76: /*
  77:  * count the cards
  78:  */
  79: count() {
  80: 
  81:     reg bool    newline;
  82:     reg DECK    *in_deck;
  83:     reg char    c;
  84: 
  85:     newline = TRUE;
  86:     in_deck = &CC_D;
  87:     while ((c=getc(inf)) != EOF)
  88:         if (newline && c == '%') {
  89:             newline = FALSE;
  90:             in_deck->num_cards++;
  91:             if (getc(inf) == '-')
  92:                 in_deck = &CH_D;
  93:         }
  94:         else
  95:             newline = (c == '\n');
  96:     in_deck->num_cards++;
  97: }
  98: /*
  99:  *	put strings in the file
 100:  */
 101: putem() {
 102: 
 103:     reg bool    newline;
 104:     reg DECK    *in_deck;
 105:     reg char    c;
 106:     reg int     num;
 107: 
 108:     in_deck = &CC_D;
 109:     CC_D.num_cards = 1;
 110:     CH_D.num_cards = 0;
 111:     CC_D.offsets[0] = ftell(outf);
 112:     putc(getc(inf), outf);
 113:     putc(getc(inf), outf);
 114:     for (num = 0; (c=getc(inf)) != '\n'; )
 115:         num = num * 10 + (c - '0');
 116:     putw(num, outf);
 117:     newline = FALSE;
 118:     while ((c=getc(inf)) != EOF)
 119:         if (newline && c == '%') {
 120:             putc('\0', outf);
 121:             newline = FALSE;
 122:             if (getc(inf) == '-')
 123:                 in_deck = &CH_D;
 124:             while (getc(inf) != '\n')
 125:                 continue;
 126:             in_deck->offsets[in_deck->num_cards++] = ftell(outf);
 127:             if ((c=getc(inf)) == EOF)
 128:                 break;
 129:             putc(c, outf);
 130:             putc(c = getc(inf), outf);
 131:             for (num = 0; (c=getc(inf)) != EOF && c != '\n'; )
 132:                 num = num * 10 + (c - '0');
 133:             putw(num, outf);
 134:         }
 135:         else {
 136:             putc(c, outf);
 137:             newline = (c == '\n');
 138:         }
 139:     putc('\0', outf);
 140: }

Defined functions

count defined in line 79; used 1 times
  • in line 39
getargs defined in line 66; used 1 times
  • in line 34
main defined in line 30; never used
putem defined in line 101; used 1 times
  • in line 54

Defined variables

deck defined in line 26; used 2 times
infile defined in line 21; used 4 times

Defined macros

FALSE defined in line 16; used 3 times
TRUE defined in line 15; used 1 times
  • in line 85
bool defined in line 18; used 2 times
reg defined in line 19; used 7 times
Last modified: 1982-06-09
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1193
Valid CSS Valid XHTML 1.0 Strict