Commit | Line | Data |
---|---|---|
e790d959 C |
1 | /* |
2 | * | |
3 | * $Header: init_et.c,v 1.1 86/11/10 21:42:26 spook Exp $ | |
4 | * $Source: /mit/s/p/spook/Work/et/RCS/init_et.c,v $ | |
5 | * $Locker: spook $ | |
6 | * | |
7 | * Copyright 1986 by MIT Information Systems and | |
8 | * MIT Student Information Processing Board | |
9 | * | |
10 | * For copyright info, see mit-sipb-copyright.h. | |
11 | * | |
12 | */ | |
13 | ||
14 | #include <stdio.h> | |
15 | #include "error_table.h" | |
16 | #include "mit-sipb-copyright.h" | |
17 | ||
18 | static char copyright[] = "Copyright 1987 by MIT Student Information Processing Board"; | |
19 | ||
20 | extern char *malloc(), *realloc(); | |
21 | ||
22 | /* useful */ | |
23 | typedef error_table *etp; | |
24 | typedef etp *etpp; | |
25 | ||
26 | etpp _et_list = (etpp)NULL; | |
27 | static int n_allocated = 0, n_used = 0; | |
28 | ||
29 | int | |
30 | init_error_table(msgs, base, count) | |
31 | char **msgs; | |
32 | register int base; | |
33 | int count; | |
34 | { | |
35 | register int i; | |
36 | register etp new_et; | |
37 | register etpp list; | |
38 | ||
39 | if (!base || !count || !msgs) | |
40 | return; | |
41 | ||
42 | new_et = (etp)malloc(sizeof(error_table)); | |
43 | new_et->msgs = msgs; | |
44 | new_et->base = base; | |
45 | new_et->n_msgs= count; | |
46 | ||
47 | list = _et_list; | |
48 | if (list == (etpp)NULL) { | |
49 | _et_list = (etpp) malloc(10*sizeof(etp)); | |
50 | list = _et_list; | |
51 | if (list == (etpp)NULL) | |
52 | return; /* oops */ | |
53 | list[0] = new_et; | |
54 | list[1] = (etp)NULL; | |
55 | n_allocated = 10; | |
56 | n_used = 1; | |
57 | return; | |
58 | } | |
59 | for (i = 0; i < n_used; i++) | |
60 | if (list[i]->base == base) | |
61 | return; /* avoid duplicates */ | |
62 | if (n_used+2 > n_allocated) { | |
63 | n_allocated += 10; /* don't re-allocate too often */ | |
64 | list = (etpp) realloc((char *)list, | |
65 | (unsigned)n_allocated * sizeof(etp)); | |
66 | _et_list = list; | |
67 | if (list == (etpp)NULL) | |
68 | return; /* oops */ | |
69 | } | |
70 | list[n_used++] = new_et; | |
71 | list[n_used] = (etp)NULL; | |
72 | } |