/[MITgcm]/MITgcm/tools/cyrus-imapd-makedepend/cppsetup.c
ViewVC logotype

Annotation of /MITgcm/tools/cyrus-imapd-makedepend/cppsetup.c

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Wed Feb 25 18:19:54 2004 UTC (20 years, 1 month ago) by edhill
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint58l_post, checkpoint64z, checkpoint57t_post, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint64j, checkpoint64m, checkpoint64l, checkpoint64o, checkpoint64n, checkpoint64a, checkpoint57o_post, checkpoint64c, checkpoint64b, checkpoint64e, checkpoint64d, checkpoint64g, checkpoint64f, checkpoint52l_pre, checkpoint58e_post, mitgcm_mapl_00, checkpoint52n_post, checkpoint53d_post, checkpoint58u_post, checkpoint58w_post, checkpoint54a_pre, checkpoint57m_post, checkpoint55c_post, checkpoint54e_post, checkpoint57s_post, checkpoint54a_post, checkpoint63p, checkpoint63q, checkpoint63r, checkpoint63s, checkpoint63l, checkpoint63m, checkpoint63n, checkpoint63o, checkpoint63h, checkpoint63i, checkpoint63j, checkpoint63k, checkpoint63d, checkpoint63e, checkpoint63f, checkpoint63g, checkpoint53c_post, checkpoint63a, checkpoint63b, checkpoint63c, checkpoint57k_post, checkpoint55d_pre, checkpoint57d_post, checkpoint57g_post, checkpoint64, checkpoint65, checkpoint60, checkpoint61, checkpoint62, checkpoint63, checkpoint57b_post, checkpoint57c_pre, checkpoint58r_post, checkpoint55j_post, checkpoint56b_post, checkpoint57i_post, checkpoint57y_post, checkpoint57e_post, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint52l_post, checkpoint55h_post, checkpoint58n_post, checkpoint53b_post, checkpoint58x_post, checkpoint57g_pre, checkpoint54b_post, checkpoint53b_pre, checkpoint55b_post, checkpoint58t_post, checkpoint58h_post, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint54d_post, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint56c_post, checkpoint52m_post, checkpoint57y_pre, checkpoint55, checkpoint53a_post, checkpoint57f_pre, checkpoint57a_post, checkpoint54, checkpoint58q_post, checkpoint54f_post, checkpoint57v_post, checkpoint59q, checkpoint59p, checkpoint55g_post, checkpoint59r, checkpoint58j_post, checkpoint59e, checkpoint59d, checkpoint59g, checkpoint59f, checkpoint59a, checkpoint55f_post, checkpoint59c, checkpoint59b, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint59i, checkpoint59h, checkpoint59k, checkpoint59j, checkpoint57r_post, checkpoint59, checkpoint58, checkpoint57a_pre, checkpoint55i_post, checkpoint57, checkpoint56, checkpoint53, eckpoint57e_pre, checkpoint57h_done, checkpoint58f_post, checkpoint53g_post, checkpoint57x_post, checkpoint57n_post, checkpoint58d_post, checkpoint58c_post, checkpoint57w_post, checkpoint57p_post, checkpint57u_post, checkpoint57f_post, checkpoint58a_post, checkpoint58i_post, checkpoint57q_post, checkpoint58g_post, hrcube5, checkpoint58o_post, checkpoint57z_post, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62s, checkpoint62r, checkpoint62q, checkpoint62p, checkpoint62w, checkpoint62v, checkpoint62u, checkpoint62t, checkpoint57c_post, checkpoint62z, checkpoint62y, checkpoint62x, checkpoint58y_post, checkpoint55e_post, checkpoint58k_post, checkpoint58v_post, checkpoint53f_post, checkpoint55a_post, checkpoint53d_pre, checkpoint54c_post, checkpoint58s_post, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint58p_post, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint57j_post, checkpoint61z, checkpoint61x, checkpoint61y, checkpoint58b_post, checkpoint57h_pre, checkpoint58m_post, checkpoint57l_post, checkpoint57h_post, checkpoint56a_post, checkpoint55d_post, HEAD
File MIME type: text/plain
 o initial check-in of a better makedepend implementation for AJA

1 edhill 1.1 /* $XConsortium: cppsetup.c,v 1.13 94/04/17 20:10:32 gildea Exp $ */
2    
3     /*
4     * Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved.
5     *
6     * Redistribution and use in source and binary forms, with or without
7     * modification, are permitted provided that the following conditions
8     * are met:
9     *
10     * 1. Redistributions of source code must retain the above copyright
11     * notice, this list of conditions and the following disclaimer.
12     *
13     * 2. Redistributions in binary form must reproduce the above copyright
14     * notice, this list of conditions and the following disclaimer in
15     * the documentation and/or other materials provided with the
16     * distribution.
17     *
18     * 3. The name "Carnegie Mellon University" must not be used to
19     * endorse or promote products derived from this software without
20     * prior written permission. For permission or any other legal
21     * details, please contact
22     * Office of Technology Transfer
23     * Carnegie Mellon University
24     * 5000 Forbes Avenue
25     * Pittsburgh, PA 15213-3890
26     * (412) 268-4387, fax: (412) 268-7395
27     * tech-transfer@andrew.cmu.edu
28     *
29     * 4. Redistributions of any form whatsoever must retain the following
30     * acknowledgment:
31     * "This product includes software developed by Computing Services
32     * at Carnegie Mellon University (http://www.cmu.edu/computing/)."
33     *
34     * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
35     * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
36     * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
37     * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
38     * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
39     * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
40     * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
41     *
42     */
43     /*
44    
45     Copyright (c) 1993, 1994 X Consortium
46    
47     Permission is hereby granted, free of charge, to any person obtaining a copy
48     of this software and associated documentation files (the "Software"), to deal
49     in the Software without restriction, including without limitation the rights
50     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
51     copies of the Software, and to permit persons to whom the Software is
52     furnished to do so, subject to the following conditions:
53    
54     The above copyright notice and this permission notice shall be included in
55     all copies or substantial portions of the Software.
56    
57     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
58     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
59     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
60     X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
61     AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
62     CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
63    
64     Except as contained in this notice, the name of the X Consortium shall not be
65     used in advertising or otherwise to promote the sale, use or other dealings
66     in this Software without prior written authorization from the X Consortium.
67    
68     */
69    
70     #include "def.h"
71    
72     #ifdef CPP
73     /*
74     * This file is strictly for the sake of cpy.y and yylex.c (if
75     * you indeed have the source for cpp).
76     */
77     #define IB 1
78     #define SB 2
79     #define NB 4
80     #define CB 8
81     #define QB 16
82     #define WB 32
83     #define SALT '#'
84     #if pdp11 | vax | ns16000 | mc68000 | ibm032
85     #define COFF 128
86     #else
87     #define COFF 0
88     #endif
89     /*
90     * These variables used by cpy.y and yylex.c
91     */
92     extern char *outp, *inp, *newp, *pend;
93     extern char *ptrtab;
94     extern char fastab[];
95     extern char slotab[];
96    
97     /*
98     * cppsetup
99     */
100     struct filepointer *currentfile;
101     struct inclist *currentinc;
102    
103     cppsetup(line, filep, inc)
104     register char *line;
105     register struct filepointer *filep;
106     register struct inclist *inc;
107     {
108     register char *p, savec;
109     static boolean setupdone = FALSE;
110     boolean value;
111    
112     if (!setupdone) {
113     cpp_varsetup();
114     setupdone = TRUE;
115     }
116    
117     currentfile = filep;
118     currentinc = inc;
119     inp = newp = line;
120     for (p=newp; *p; p++)
121     ;
122    
123     /*
124     * put a newline back on the end, and set up pend, etc.
125     */
126     *p++ = '\n';
127     savec = *p;
128     *p = '\0';
129     pend = p;
130    
131     ptrtab = slotab+COFF;
132     *--inp = SALT;
133     outp=inp;
134     value = yyparse();
135     *p = savec;
136     return(value);
137     }
138    
139     struct symtab *lookup(symbol)
140     char *symbol;
141     {
142     static struct symtab undefined;
143     struct symtab *sp;
144    
145     sp = isdefined(symbol, currentinc, NULL);
146     if (sp == NULL) {
147     sp = &undefined;
148     sp->s_value = NULL;
149     }
150     return (sp);
151     }
152    
153     pperror(tag, x0,x1,x2,x3,x4)
154     int tag,x0,x1,x2,x3,x4;
155     {
156     warning("\"%s\", line %d: ", currentinc->i_file, currentfile->f_line);
157     warning(x0,x1,x2,x3,x4);
158     }
159    
160    
161     yyerror(s)
162     register char *s;
163     {
164     fatalerr("Fatal error: %s\n", s);
165     }
166     #else /* not CPP */
167    
168     #include "ifparser.h"
169     struct _parse_data {
170     struct filepointer *filep;
171     struct inclist *inc;
172     const char *line;
173     };
174    
175     static const char *
176     _my_if_errors (ip, cp, expecting)
177     IfParser *ip;
178     const char *cp;
179     const char *expecting;
180     {
181     struct _parse_data *pd = (struct _parse_data *) ip->data;
182     int lineno = pd->filep->f_line;
183     char *filename = pd->inc->i_file;
184     char prefix[300];
185     int prefixlen;
186     int i;
187    
188     sprintf (prefix, "\"%s\":%d", filename, lineno);
189     prefixlen = strlen(prefix);
190     fprintf (stderr, "%s: %s", prefix, pd->line);
191     i = cp - pd->line;
192     if (i > 0 && pd->line[i-1] != '\n') {
193     putc ('\n', stderr);
194     }
195     for (i += prefixlen + 3; i > 0; i--) {
196     putc (' ', stderr);
197     }
198     fprintf (stderr, "^--- expecting %s\n", expecting);
199     return NULL;
200     }
201    
202    
203     #define MAXNAMELEN 256
204    
205     static struct symtab *
206     _lookup_variable (ip, var, len)
207     IfParser *ip;
208     const char *var;
209     int len;
210     {
211     char tmpbuf[MAXNAMELEN + 1];
212     struct _parse_data *pd = (struct _parse_data *) ip->data;
213    
214     if (len > MAXNAMELEN)
215     return 0;
216    
217     strncpy (tmpbuf, var, len);
218     tmpbuf[len] = '\0';
219     return isdefined (tmpbuf, pd->inc, NULL);
220     }
221    
222    
223     static int
224     _my_eval_defined (ip, var, len)
225     IfParser *ip;
226     const char *var;
227     int len;
228     {
229     if (_lookup_variable (ip, var, len))
230     return 1;
231     else
232     return 0;
233     }
234    
235     #define isvarfirstletter(ccc) (isalpha(ccc) || (ccc) == '_')
236    
237     static int
238     _my_eval_variable (ip, var, len)
239     IfParser *ip;
240     const char *var;
241     int len;
242     {
243     struct symtab *s;
244    
245     s = _lookup_variable (ip, var, len);
246     if (!s)
247     return 0;
248     do {
249     var = s->s_value;
250     if (!isvarfirstletter(*var))
251     break;
252     s = _lookup_variable (ip, var, strlen(var));
253     } while (s);
254    
255     return atoi(var);
256     }
257    
258    
259     cppsetup(line, filep, inc)
260     register char *line;
261     register struct filepointer *filep;
262     register struct inclist *inc;
263     {
264     IfParser ip;
265     struct _parse_data pd;
266     int val = 0;
267    
268     pd.filep = filep;
269     pd.inc = inc;
270     pd.line = line;
271     ip.funcs.handle_error = _my_if_errors;
272     ip.funcs.eval_defined = _my_eval_defined;
273     ip.funcs.eval_variable = _my_eval_variable;
274     ip.data = (char *) &pd;
275    
276     (void) ParseIfExpression (&ip, line, &val);
277     if (val)
278     return IF;
279     else
280     return IFFALSE;
281     }
282     #endif /* CPP */
283    

  ViewVC Help
Powered by ViewVC 1.1.22