aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ckaliases.c385
-rw-r--r--gram.y330
-rw-r--r--lex.l188
3 files changed, 436 insertions, 467 deletions
diff --git a/ckaliases.c b/ckaliases.c
index d77e62d..da0a5c1 100644
--- a/ckaliases.c
+++ b/ckaliases.c
@@ -33,52 +33,46 @@
33void 33void
34TC (unsigned *R, int n) 34TC(unsigned *R, int n)
35{ 35{
36 register int rowsize; 36 register int rowsize;
37 register unsigned mask; 37 register unsigned mask;
38 register unsigned *rowj; 38 register unsigned *rowj;
39 register unsigned *rp; 39 register unsigned *rp;
40 register unsigned *rend; 40 register unsigned *rend;
41 register unsigned *ccol; 41 register unsigned *ccol;
42 42
43 unsigned *relend; 43 unsigned *relend;
44 unsigned *cword; 44 unsigned *cword;
45 unsigned *rowi; 45 unsigned *rowi;
46 46
47 rowsize = WORDSIZE (n) * sizeof (unsigned); 47 rowsize = WORDSIZE(n) * sizeof(unsigned);
48 relend = (unsigned *) ((char *) R + (n * rowsize)); 48 relend = (unsigned *) ((char *) R + (n * rowsize));
49 49
50 cword = R; 50 cword = R;
51 mask = 1; 51 mask = 1;
52 rowi = R; 52 rowi = R;
53 while (rowi < relend) 53 while (rowi < relend) {
54 { 54 ccol = cword;
55 ccol = cword; 55 rowj = R;
56 rowj = R; 56
57 57 while (rowj < relend) {
58 while (rowj < relend) 58 if (*ccol & mask) {
59 { 59 rp = rowi;
60 if (*ccol & mask) 60 rend = (unsigned *) ((char *) rowj + rowsize);
61 { 61
62 rp = rowi; 62 while (rowj < rend)
63 rend = (unsigned *) ((char *) rowj + rowsize); 63 *rowj++ |= *rp++;
64 64 } else {
65 while (rowj < rend) 65 rowj = (unsigned *) ((char *) rowj + rowsize);
66 *rowj++ |= *rp++; 66 }
67 } 67
68 else 68 ccol = (unsigned *) ((char *) ccol + rowsize);
69 { 69 }
70 rowj = (unsigned *) ((char *) rowj + rowsize); 70
71 } 71 mask <<= 1;
72 72 if (mask == 0) {
73 ccol = (unsigned *) ((char *) ccol + rowsize); 73 mask = 1;
74 cword++;
75 }
76 rowi = (unsigned *) ((char *) rowi + rowsize);
74 } 77 }
75
76 mask <<= 1;
77 if (mask == 0)
78 {
79 mask = 1;
80 cword++;
81 }
82 rowi = (unsigned *) ((char *) rowi + rowsize);
83 }
84} 78}
@@ -87,25 +81,21 @@ TC (unsigned *R, int n)
87void 81void
88slist_add (SLIST **plist, char *str) 82slist_add(SLIST **plist, char *str)
89{ 83{
90 struct string_list *p = xmalloc (sizeof (*p)); 84 struct string_list *p = xmalloc(sizeof(*p));
91 p->str = str; 85 p->str = str;
92 p->next = NULL; 86 p->next = NULL;
93 87
94 if (!*plist) 88 if (!*plist) {
95 { 89 *plist = xmalloc(sizeof(**plist));
96 *plist = xmalloc (sizeof (**plist)); 90 (*plist)->head = NULL;
97 (*plist)->head = NULL; 91 }
98 } 92
99 93 if ((*plist)->head == NULL) {
100 if ((*plist)->head == NULL) 94 (*plist)->head = p;
101 { 95 (*plist)->count = 0;
102 (*plist)->head = p; 96 } else {
103 (*plist)->count = 0; 97 (*plist)->tail->next = p;
104 } 98 (*plist)->count++;
105 else 99 }
106 { 100 (*plist)->tail = p;
107 (*plist)->tail->next = p;
108 (*plist)->count++;
109 }
110 (*plist)->tail = p;
111} 101}
@@ -113,21 +103,20 @@ slist_add (SLIST **plist, char *str)
113void 103void
114slist_append (SLIST **pdst, SLIST *src) 104slist_append(SLIST **pdst, SLIST *src)
115{ 105{
116 struct string_list *tail; 106 struct string_list *tail;
117 107
118 if (!*pdst) 108 if (!*pdst) {
119 { 109 *pdst = xmalloc(sizeof(**pdst));
120 *pdst = xmalloc (sizeof (**pdst)); 110 (*pdst)->head = NULL;
121 (*pdst)->head = NULL; 111 (*pdst)->count = 0;
122 (*pdst)->count = 0; 112 }
123 }
124 113
125 if ((*pdst)->head = NULL) 114 if ((*pdst)->head = NULL)
126 (*pdst)->head = src->head; 115 (*pdst)->head = src->head;
127 116
128 for (tail = src->tail; tail->next; tail = tail->next) 117 for (tail = src->tail; tail->next; tail = tail->next)
129 ; 118 ;
130 119
131 (*pdst)->tail = tail; 120 (*pdst)->tail = tail;
132 (*pdst)->count += src->count; 121 (*pdst)->count += src->count;
133} 122}
@@ -135,11 +124,11 @@ slist_append (SLIST **pdst, SLIST *src)
135char * 124char *
136slist_member (SLIST *plist, char *name) 125slist_member(SLIST *plist, char *name)
137{ 126{
138 struct string_list *p; 127 struct string_list *p;
139 128
140 if (plist) 129 if (plist)
141 for (p = plist->head; p; p = p->next) 130 for (p = plist->head; p; p = p->next)
142 if (p->str && strcmp (p->str, name) == 0) 131 if (p->str && strcmp(p->str, name) == 0)
143 return p->str; 132 return p->str;
144 return NULL; 133 return NULL;
145} 134}
@@ -147,16 +136,15 @@ slist_member (SLIST *plist, char *name)
147void 136void
148slist_destroy (SLIST **plist) 137slist_destroy(SLIST **plist)
149{ 138{
150 struct string_list *p; 139 struct string_list *p;
151 if (!plist || !*plist) 140 if (!plist || !*plist)
152 return; 141 return;
153 p = (*plist)->head; 142 p = (*plist)->head;
154 while (p) 143 while (p) {
155 { 144 struct string_list *next = p->next;
156 struct string_list *next = p->next; 145 free(p);
157 free (p); 146 p = next;
158 p = next; 147 }
159 } 148 free(*plist);
160 free (*plist); 149 *plist = NULL;
161 *plist = NULL;
162} 150}
@@ -164,6 +152,5 @@ slist_destroy (SLIST **plist)
164 152
165typedef struct 153typedef struct {
166{ 154 char *name;
167 char *name; 155 SLIST *exp;
168 SLIST *exp;
169} ALIAS; 156} ALIAS;
@@ -175,9 +162,9 @@ ALIAS *aliases;
175void 162void
176regalias (char *name, SLIST *exp) 163regalias(char *name, SLIST *exp)
177{ 164{
178 ALIAS a; 165 ALIAS a;
179 a.name = name; 166 a.name = name;
180 a.exp = exp; 167 a.exp = exp;
181 obstack_grow (&alias_stk, &a, sizeof a); 168 obstack_grow(&alias_stk, &a, sizeof a);
182 alias_count++; 169 alias_count++;
183} 170}
@@ -185,5 +172,5 @@ regalias (char *name, SLIST *exp)
185void 172void
186begin_aliases () 173begin_aliases()
187{ 174{
188 obstack_init (&alias_stk); 175 obstack_init(&alias_stk);
189} 176}
@@ -191,5 +178,5 @@ begin_aliases ()
191static int 178static int
192alias_cmp (const void *a, const void *b) 179alias_cmp(const void *a, const void *b)
193{ 180{
194 return strcmp (((ALIAS *) a)->name, ((ALIAS *) b)->name); 181 return strcmp(((ALIAS *) a)->name, ((ALIAS *) b)->name);
195} 182}
@@ -197,25 +184,25 @@ alias_cmp (const void *a, const void *b)
197static int 184static int
198alias_cmp2 (const void *a, const void *b) 185alias_cmp2(const void *a, const void *b)
199{ 186{
200 char *aname = ((ALIAS *) a)->name; 187 char *aname = ((ALIAS *) a)->name;
201 char *bname = ((ALIAS *) b)->name; 188 char *bname = ((ALIAS *) b)->name;
202 int rc; 189 int rc;
203 int alen; 190 int alen;
204 int blen; 191 int blen;
205 char *p; 192 char *p;
206 193
207 if ((p = strchr (aname, '@')) && slist_member (cw_list, p + 1)) 194 if ((p = strchr(aname, '@')) && slist_member(cw_list, p + 1))
208 alen = p - aname; 195 alen = p - aname;
209 else 196 else
210 alen = strlen (aname); 197 alen = strlen(aname);
211 198
212