FREAD -> O_RDONLY
[unix-history] / usr / src / games / battlestar / parse.c
CommitLineData
fdc7d56f 1/*
e95fc82a
KB
2 * Copyright (c) 1983 Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
28c5bacc
KB
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley. The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
fdc7d56f
EW
16 */
17
4560ad02 18#ifndef lint
28c5bacc 19static char sccsid[] = "@(#)parse.c 5.2 (Berkeley) %G%";
e95fc82a 20#endif /* not lint */
4560ad02
EW
21
22#include "externs.h"
23
24wordinit()
25{
26 register struct wlist *w;
27
28 for (w = wlist; w->string; w++)
29 install(w);
30}
31
32hash(s)
33 register char *s;
34{
35 register hashval = 0;
36
37 while (*s) {
38 hashval += *s++;
39 hashval *= HASHMUL;
40 hashval &= HASHMASK;
41 }
42 return hashval;
43}
44
45struct wlist *
46lookup(s)
47 char *s;
48{
49 register struct wlist *wp;
50
51 for (wp = hashtab[hash(s)]; wp != NULL; wp = wp->next)
52 if (*s == *wp->string && strcmp(s, wp->string) == 0)
53 return wp;
54 return NULL;
55}
56
57install(wp)
58 register struct wlist *wp;
59{
60 int hashval;
61
62 if (lookup(wp->string) == NULL) {
63 hashval = hash(wp->string);
64 wp->next = hashtab[hashval];
65 hashtab[hashval] = wp;
66 } else
67 printf("Multiply defined %s.\n", wp->string);
68}
69
70parse()
71{
72 register struct wlist *wp;
73 register n;
74
75 wordnumber = 0; /* for cypher */
76 for (n = 0; n <= wordcount; n++) {
77 if ((wp = lookup(words[n])) == NULL) {
78 wordvalue[n] = -1;
79 wordtype[n] = -1;
80 } else {
81 wordvalue[n] = wp -> value;
82 wordtype[n] = wp -> article;
83 }
84 }
85}