Bug Summary

File:gromacs/gmxpreprocess/gmxcpp.c
Location:line 511, column 9
Description:Value stored to 'handle' is never read

Annotated Source Code

1/*
2 * This file is part of the GROMACS molecular simulation package.
3 *
4 * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
5 * Copyright (c) 2001-2004, The GROMACS development team.
6 * Copyright (c) 2013,2014, by the GROMACS development team, led by
7 * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
8 * and including many others, as listed in the AUTHORS file in the
9 * top-level source directory and at http://www.gromacs.org.
10 *
11 * GROMACS is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Lesser General Public License
13 * as published by the Free Software Foundation; either version 2.1
14 * of the License, or (at your option) any later version.
15 *
16 * GROMACS is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 * Lesser General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public
22 * License along with GROMACS; if not, see
23 * http://www.gnu.org/licenses, or write to the Free Software Foundation,
24 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25 *
26 * If you want to redistribute modifications to GROMACS, please
27 * consider that scientific software is very special. Version
28 * control is crucial - bugs must be traceable. We will be happy to
29 * consider code for inclusion in the official distribution, but
30 * derived work must not be called official GROMACS. Details are found
31 * in the README & COPYING files - if they are missing, get the
32 * official version at http://www.gromacs.org.
33 *
34 * To help us fund GROMACS development, we humbly ask that you cite
35 * the research papers on the package. Check out http://www.gromacs.org.
36 */
37#ifdef HAVE_CONFIG_H1
38#include <config.h>
39#endif
40
41#include <sys/types.h>
42#include <stdio.h>
43#include <stdlib.h>
44#include <math.h>
45#include <string.h>
46#include <errno(*__errno_location ()).h>
47#include <limits.h>
48#include <ctype.h>
49
50#include "gromacs/utility/cstringutil.h"
51#include "gromacs/utility/smalloc.h"
52#include "gromacs/utility/futil.h"
53#include "macros.h"
54#include "gromacs/utility/fatalerror.h"
55#include "gmxcpp.h"
56
57typedef struct {
58 char *name;
59 char *def;
60} t_define;
61
62static int ndef = 0;
63static t_define *defs = NULL((void*)0);
64static int nincl = 0;
65static char **incl = 0;
66
67/* enum used for handling ifdefs */
68enum {
69 eifTRUE, eifFALSE, eifIGNORE, eifNR
70};
71
72typedef struct gmx_cpp {
73 FILE *fp;
74 char *path, *cwd;
75 char *fn;
76 int line_len;
77 char *line;
78 int line_nr;
79 int nifdef;
80 int *ifdefs;
81 struct gmx_cpp *child, *parent;
82} gmx_cpp;
83
84static gmx_bool is_word_end(char c)
85{
86 return !(isalnum(c)((*__ctype_b_loc ())[(int) ((c))] & (unsigned short int) _ISalnum
)
|| c == '_');
87}
88
89static const char *strstrw(const char *buf, const char *word)
90{
91 const char *ptr;
92
93 while ((ptr = strstr(buf, word)) != NULL((void*)0))
94 {
95 /* Check if we did not find part of a longer word */
96 if (ptr &&
97 is_word_end(ptr[strlen(word)]) &&
98 (((ptr > buf) && is_word_end(ptr[-1])) || (ptr == buf)))
99 {
100 return ptr;
101 }
102
103 buf = ptr + strlen(word);
104 }
105 return NULL((void*)0);
106}
107
108static gmx_bool find_directive(char *buf, char **name, char **val)
109{
110 /* Skip initial whitespace */
111 while (isspace(*buf)((*__ctype_b_loc ())[(int) ((*buf))] & (unsigned short int
) _ISspace)
)
112 {
113 ++buf;
114 }
115 /* Check if this is a directive */
116 if (*buf != '#')
117 {
118 return FALSE0;
119 }
120 /* Skip the hash and any space after it */
121 ++buf;
122 while (isspace(*buf)((*__ctype_b_loc ())[(int) ((*buf))] & (unsigned short int
) _ISspace)
)
123 {
124 ++buf;
125 }
126 /* Set the name pointer and find the next space */
127 *name = buf;
128 while (*buf != 0 && !isspace(*buf)((*__ctype_b_loc ())[(int) ((*buf))] & (unsigned short int
) _ISspace)
)
129 {
130 ++buf;
131 }
132 /* Set the end of the name here, and skip any space */
133 if (*buf != 0)
134 {
135 *buf = 0;
136 ++buf;
137 while (isspace(*buf)((*__ctype_b_loc ())[(int) ((*buf))] & (unsigned short int
) _ISspace)
)
138 {
139 ++buf;
140 }
141 }
142 /* Check if anything is remaining */
143 *val = (*buf != 0) ? buf : NULL((void*)0);
144 return TRUE1;
145}
146
147static gmx_bool is_ifdeffed_out(gmx_cpp_t handle)
148{
149 return ((handle->nifdef > 0) && (handle->ifdefs[handle->nifdef-1] != eifTRUE));
150}
151
152static void add_include(const char *include)
153{
154 int i;
155
156 if (include == NULL((void*)0))
157 {
158 return;
159 }
160
161 for (i = 0; (i < nincl); i++)
162 {
163 if (strcmp(incl[i], include)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(incl[i]) && __builtin_constant_p (include) &&
(__s1_len = strlen (incl[i]), __s2_len = strlen (include), (
!((size_t)(const void *)((incl[i]) + 1) - (size_t)(const void
*)(incl[i]) == 1) || __s1_len >= 4) && (!((size_t
)(const void *)((include) + 1) - (size_t)(const void *)(include
) == 1) || __s2_len >= 4)) ? __builtin_strcmp (incl[i], include
) : (__builtin_constant_p (incl[i]) && ((size_t)(const
void *)((incl[i]) + 1) - (size_t)(const void *)(incl[i]) == 1
) && (__s1_len = strlen (incl[i]), __s1_len < 4) ?
(__builtin_constant_p (include) && ((size_t)(const void
*)((include) + 1) - (size_t)(const void *)(include) == 1) ? __builtin_strcmp
(incl[i], include) : (__extension__ ({ const unsigned char *
__s2 = (const unsigned char *) (const char *) (include); int __result
= (((const unsigned char *) (const char *) (incl[i]))[0] - __s2
[0]); if (__s1_len > 0 && __result == 0) { __result
= (((const unsigned char *) (const char *) (incl[i]))[1] - __s2
[1]); if (__s1_len > 1 && __result == 0) { __result
= (((const unsigned char *) (const char *) (incl[i]))[2] - __s2
[2]); if (__s1_len > 2 && __result == 0) __result =
(((const unsigned char *) (const char *) (incl[i]))[3] - __s2
[3]); } } __result; }))) : (__builtin_constant_p (include) &&
((size_t)(const void *)((include) + 1) - (size_t)(const void
*)(include) == 1) && (__s2_len = strlen (include), __s2_len
< 4) ? (__builtin_constant_p (incl[i]) && ((size_t
)(const void *)((incl[i]) + 1) - (size_t)(const void *)(incl[
i]) == 1) ? __builtin_strcmp (incl[i], include) : (- (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (incl[i]); int __result = (((const unsigned char *) (
const char *) (include))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (include))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (include))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (include))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp
(incl[i], include)))); })
== 0)
164 {
165 break;
166 }
167 }
168 if (i == nincl)
169 {
170 nincl++;
171 srenew(incl, nincl)(incl) = save_realloc("incl", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 171, (incl), (nincl), sizeof(*(incl)))
;
172 incl[nincl-1] = strdup(include)(__extension__ (__builtin_constant_p (include) && ((size_t
)(const void *)((include) + 1) - (size_t)(const void *)(include
) == 1) ? (((const char *) (include))[0] == '\0' ? (char *) calloc
((size_t) 1, (size_t) 1) : ({ size_t __len = strlen (include
) + 1; char *__retval = (char *) malloc (__len); if (__retval
!= ((void*)0)) __retval = (char *) memcpy (__retval, include
, __len); __retval; })) : __strdup (include)))
;
173 }
174}
175
176static void done_includes()
177{
178 int i;
179 for (i = 0; (i < nincl); i++)
180 {
181 sfree(incl[i])save_free("incl[i]", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 181, (incl[i]))
;
182 }
183 sfree(incl)save_free("incl", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 183, (incl))
;
184 incl = NULL((void*)0);
185 nincl = 0;
186}
187
188static void add_define(const char *name, const char *value)
189{
190 int i;
191
192 for (i = 0; (i < ndef); i++)
193 {
194 if (strcmp(defs[i].name, name)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(defs[i].name) && __builtin_constant_p (name) &&
(__s1_len = strlen (defs[i].name), __s2_len = strlen (name),
(!((size_t)(const void *)((defs[i].name) + 1) - (size_t)(const
void *)(defs[i].name) == 1) || __s1_len >= 4) && (
!((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) || __s2_len >= 4)) ? __builtin_strcmp (defs[i
].name, name) : (__builtin_constant_p (defs[i].name) &&
((size_t)(const void *)((defs[i].name) + 1) - (size_t)(const
void *)(defs[i].name) == 1) && (__s1_len = strlen (defs
[i].name), __s1_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (defs[i].name, name) : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) (defs[i].name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (defs[i].name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (defs[i].name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (defs[i].name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s2_len = strlen (name
), __s2_len < 4) ? (__builtin_constant_p (defs[i].name) &&
((size_t)(const void *)((defs[i].name) + 1) - (size_t)(const
void *)(defs[i].name) == 1) ? __builtin_strcmp (defs[i].name
, name) : (- (__extension__ ({ const unsigned char *__s2 = (const
unsigned char *) (const char *) (defs[i].name); int __result
= (((const unsigned char *) (const char *) (name))[0] - __s2
[0]); if (__s2_len > 0 && __result == 0) { __result
= (((const unsigned char *) (const char *) (name))[1] - __s2
[1]); if (__s2_len > 1 && __result == 0) { __result
= (((const unsigned char *) (const char *) (name))[2] - __s2
[2]); if (__s2_len > 2 && __result == 0) __result =
(((const unsigned char *) (const char *) (name))[3] - __s2[3
]); } } __result; })))) : __builtin_strcmp (defs[i].name, name
)))); })
== 0)
195 {
196 break;
197 }
198 }
199 if (i == ndef)
200 {
201 ndef++;
202 srenew(defs, ndef)(defs) = save_realloc("defs", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 202, (defs), (ndef), sizeof(*(defs)))
;
203 i = ndef - 1;
204 defs[i].name = strdup(name)(__extension__ (__builtin_constant_p (name) && ((size_t
)(const void *)((name) + 1) - (size_t)(const void *)(name) ==
1) ? (((const char *) (name))[0] == '\0' ? (char *) calloc (
(size_t) 1, (size_t) 1) : ({ size_t __len = strlen (name) + 1
; char *__retval = (char *) malloc (__len); if (__retval != (
(void*)0)) __retval = (char *) memcpy (__retval, name, __len)
; __retval; })) : __strdup (name)))
;
205 }
206 else if (defs[i].def)
207 {
208 if (debug)
209 {
210 fprintf(debug, "Overriding define %s\n", name);
211 }
212 sfree(defs[i].def)save_free("defs[i].def", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 212, (defs[i].def))
;
213 }
214 if (value && strlen(value) > 0)
215 {
216 defs[i].def = strdup(value)(__extension__ (__builtin_constant_p (value) && ((size_t
)(const void *)((value) + 1) - (size_t)(const void *)(value) ==
1) ? (((const char *) (value))[0] == '\0' ? (char *) calloc (
(size_t) 1, (size_t) 1) : ({ size_t __len = strlen (value) + 1
; char *__retval = (char *) malloc (__len); if (__retval != (
(void*)0)) __retval = (char *) memcpy (__retval, value, __len
); __retval; })) : __strdup (value)))
;
217 }
218 else
219 {
220 defs[i].def = NULL((void*)0);
221 }
222}
223
224static void done_defines()
225{
226 int i;
227 for (i = 0; (i < ndef); i++)
228 {
229 sfree(defs[i].name)save_free("defs[i].name", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 229, (defs[i].name))
;
230 sfree(defs[i].def)save_free("defs[i].def", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 230, (defs[i].def))
;
231 }
232 sfree(defs)save_free("defs", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 232, (defs))
;
233 defs = NULL((void*)0);
234 ndef = 0;
235}
236
237/* Open the file to be processed. The handle variable holds internal
238 info for the cpp emulator. Return integer status */
239int cpp_open_file(const char *filenm, gmx_cpp_t *handle, char **cppopts)
240{
241 gmx_cpp_t cpp;
242 char *buf, *pdum;
243 char *ptr, *ptr2;
244 int i;
245 unsigned int i1;
246
247 /* First process options, they might be necessary for opening files
248 (especially include statements). */
249 i = 0;
250 if (cppopts)
251 {
252 while (cppopts[i])
253 {
254 if (strstr(cppopts[i], "-I") == cppopts[i])
255 {
256 add_include(cppopts[i]+2);
257 }
258 if (strstr(cppopts[i], "-D") == cppopts[i])
259 {
260 /* If the option contains a =, split it into name and value. */
261 ptr = strchr(cppopts[i], '=')(__extension__ (__builtin_constant_p ('=') && !__builtin_constant_p
(cppopts[i]) && ('=') == '\0' ? (char *) __rawmemchr
(cppopts[i], '=') : __builtin_strchr (cppopts[i], '=')))
;
262 if (ptr)
263 {
264 buf = gmx_strndup(cppopts[i] + 2, ptr - cppopts[i] - 2);
265 add_define(buf, ptr + 1);
266 sfree(buf)save_free("buf", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 266, (buf))
;
267 }
268 else
269 {
270 add_define(cppopts[i] + 2, NULL((void*)0));
271 }
272 }
273 i++;
274 }
275 }
276 if (debug)
277 {
278 fprintf(debug, "GMXCPP: added %d command line arguments\n", i);
279 }
280
281 snew(cpp, 1)(cpp) = save_calloc("cpp", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 281, (1), sizeof(*(cpp)))
;
282 *handle = cpp;
283 cpp->fn = NULL((void*)0);
284 /* Find the file. First check whether it is in the current directory. */
285 if (gmx_fexist(filenm))
286 {
287 cpp->fn = strdup(filenm)(__extension__ (__builtin_constant_p (filenm) && ((size_t
)(const void *)((filenm) + 1) - (size_t)(const void *)(filenm
) == 1) ? (((const char *) (filenm))[0] == '\0' ? (char *) calloc
((size_t) 1, (size_t) 1) : ({ size_t __len = strlen (filenm)
+ 1; char *__retval = (char *) malloc (__len); if (__retval !=
((void*)0)) __retval = (char *) memcpy (__retval, filenm, __len
); __retval; })) : __strdup (filenm)))
;
288 }
289 else
290 {
291 /* If not, check all the paths given with -I. */
292 for (i = 0; i < nincl; ++i)
293 {
294 snew(buf, strlen(incl[i]) + strlen(filenm) + 2)(buf) = save_calloc("buf", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 294, (strlen(incl[i]) + strlen(filenm) + 2), sizeof(*(buf))
)
;
295 sprintf(buf, "%s/%s", incl[i], filenm);
296 if (gmx_fexist(buf))
297 {
298 cpp->fn = buf;
299 break;
300 }
301 sfree(buf)save_free("buf", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 301, (buf))
;
302 }
303 /* If still not found, check the Gromacs library search path. */
304 if (!cpp->fn)
305 {
306 cpp->fn = low_gmxlibfn(filenm, FALSE0, FALSE0);
307 }
308 }
309 if (!cpp->fn)
310 {
311 gmx_fatal(FARGS0, "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 311
, "Topology include file \"%s\" not found", filenm);
312 }
313 if (NULL((void*)0) != debug)
314 {
315 fprintf(debug, "GMXCPP: cpp file open %s\n", cpp->fn);
316 }
317 /* If the file name has a path component, we need to change to that
318 * directory. Note that we - just as C - always use UNIX path separators
319 * internally in include file names.
320 */
321 ptr = strrchr(cpp->fn, '/');
322 ptr2 = strrchr(cpp->fn, DIR_SEPARATOR'/');
323
324 if (ptr == NULL((void*)0) || (ptr2 != NULL((void*)0) && ptr2 > ptr))
325 {
326 ptr = ptr2;
327 }
328 if (ptr == NULL((void*)0))
329 {
330 cpp->path = NULL((void*)0);
331 cpp->cwd = NULL((void*)0);
332 }
333 else
334 {
335 cpp->path = cpp->fn;
336 *ptr = '\0';
337 cpp->fn = strdup(ptr+1)(__extension__ (__builtin_constant_p (ptr+1) && ((size_t
)(const void *)((ptr+1) + 1) - (size_t)(const void *)(ptr+1) ==
1) ? (((const char *) (ptr+1))[0] == '\0' ? (char *) calloc (
(size_t) 1, (size_t) 1) : ({ size_t __len = strlen (ptr+1) + 1
; char *__retval = (char *) malloc (__len); if (__retval != (
(void*)0)) __retval = (char *) memcpy (__retval, ptr+1, __len
); __retval; })) : __strdup (ptr+1)))
;
338 snew(cpp->cwd, STRLEN)(cpp->cwd) = save_calloc("cpp->cwd", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 338, (4096), sizeof(*(cpp->cwd)))
;
339
340 gmx_getcwd(cpp->cwd, STRLEN4096);
341 if (NULL((void*)0) != debug)
342 {
343 fprintf(debug, "GMXCPP: cwd %s\n", cpp->cwd);
344 }
345 gmx_chdir(cpp->path);
346
347 if (NULL((void*)0) != debug)
348 {
349 fprintf(debug, "GMXCPP: chdir to %s\n", cpp->path);
350 }
351 }
352 cpp->line_len = 0;
353 cpp->line = NULL((void*)0);
354 cpp->line_nr = 0;
355 cpp->nifdef = 0;
356 cpp->ifdefs = NULL((void*)0);
357 cpp->child = NULL((void*)0);
358 cpp->parent = NULL((void*)0);
359 if (cpp->fp == NULL((void*)0))
360 {
361 if (NULL((void*)0) != debug)
362 {
363 fprintf(debug, "GMXCPP: opening file %s\n", cpp->fn);
364 }
365 cpp->fp = fopen(cpp->fn, "r");
366 }
367 if (cpp->fp == NULL((void*)0))
368 {
369 switch (errno(*__errno_location ()))
370 {
371 case EINVAL22:
372 default:
373 return eCPP_UNKNOWN;
374 }
375 }
376 return eCPP_OK;
377}
378
379static int
380process_directive(gmx_cpp_t *handlep, const char *dname, const char *dval)
381{
382 gmx_cpp_t handle = (gmx_cpp_t)*handlep;
383 int i, i0, len, status;
384 unsigned int i1;
385 char *inc_fn, *name;
386 const char *ptr;
387 int bIfdef, bIfndef;
388
389 /* #ifdef or ifndef statement */
390 bIfdef = (strcmp(dname, "ifdef")__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(dname) && __builtin_constant_p ("ifdef") &&
(__s1_len = strlen (dname), __s2_len = strlen ("ifdef"), (!(
(size_t)(const void *)((dname) + 1) - (size_t)(const void *)(
dname) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("ifdef") + 1) - (size_t)(const void *)("ifdef") == 1
) || __s2_len >= 4)) ? __builtin_strcmp (dname, "ifdef") :
(__builtin_constant_p (dname) && ((size_t)(const void
*)((dname) + 1) - (size_t)(const void *)(dname) == 1) &&
(__s1_len = strlen (dname), __s1_len < 4) ? (__builtin_constant_p
("ifdef") && ((size_t)(const void *)(("ifdef") + 1) -
(size_t)(const void *)("ifdef") == 1) ? __builtin_strcmp (dname
, "ifdef") : (__extension__ ({ const unsigned char *__s2 = (const
unsigned char *) (const char *) ("ifdef"); int __result = ((
(const unsigned char *) (const char *) (dname))[0] - __s2[0])
; if (__s1_len > 0 && __result == 0) { __result = (
((const unsigned char *) (const char *) (dname))[1] - __s2[1]
); if (__s1_len > 1 && __result == 0) { __result =
(((const unsigned char *) (const char *) (dname))[2] - __s2[
2]); if (__s1_len > 2 && __result == 0) __result =
(((const unsigned char *) (const char *) (dname))[3] - __s2[
3]); } } __result; }))) : (__builtin_constant_p ("ifdef") &&
((size_t)(const void *)(("ifdef") + 1) - (size_t)(const void
*)("ifdef") == 1) && (__s2_len = strlen ("ifdef"), __s2_len
< 4) ? (__builtin_constant_p (dname) && ((size_t)
(const void *)((dname) + 1) - (size_t)(const void *)(dname) ==
1) ? __builtin_strcmp (dname, "ifdef") : (- (__extension__ (
{ const unsigned char *__s2 = (const unsigned char *) (const char
*) (dname); int __result = (((const unsigned char *) (const char
*) ("ifdef"))[0] - __s2[0]); if (__s2_len > 0 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
"ifdef"))[1] - __s2[1]); if (__s2_len > 1 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
"ifdef"))[2] - __s2[2]); if (__s2_len > 2 && __result
== 0) __result = (((const unsigned char *) (const char *) ("ifdef"
))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (dname
, "ifdef")))); })
== 0);
391 bIfndef = (strcmp(dname, "ifndef")__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(dname) && __builtin_constant_p ("ifndef") &&
(__s1_len = strlen (dname), __s2_len = strlen ("ifndef"), (!
((size_t)(const void *)((dname) + 1) - (size_t)(const void *)
(dname) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("ifndef") + 1) - (size_t)(const void *)("ifndef") ==
1) || __s2_len >= 4)) ? __builtin_strcmp (dname, "ifndef"
) : (__builtin_constant_p (dname) && ((size_t)(const void
*)((dname) + 1) - (size_t)(const void *)(dname) == 1) &&
(__s1_len = strlen (dname), __s1_len < 4) ? (__builtin_constant_p
("ifndef") && ((size_t)(const void *)(("ifndef") + 1
) - (size_t)(const void *)("ifndef") == 1) ? __builtin_strcmp
(dname, "ifndef") : (__extension__ ({ const unsigned char *__s2
= (const unsigned char *) (const char *) ("ifndef"); int __result
= (((const unsigned char *) (const char *) (dname))[0] - __s2
[0]); if (__s1_len > 0 && __result == 0) { __result
= (((const unsigned char *) (const char *) (dname))[1] - __s2
[1]); if (__s1_len > 1 && __result == 0) { __result
= (((const unsigned char *) (const char *) (dname))[2] - __s2
[2]); if (__s1_len > 2 && __result == 0) __result =
(((const unsigned char *) (const char *) (dname))[3] - __s2[
3]); } } __result; }))) : (__builtin_constant_p ("ifndef") &&
((size_t)(const void *)(("ifndef") + 1) - (size_t)(const void
*)("ifndef") == 1) && (__s2_len = strlen ("ifndef"),
__s2_len < 4) ? (__builtin_constant_p (dname) && (
(size_t)(const void *)((dname) + 1) - (size_t)(const void *)(
dname) == 1) ? __builtin_strcmp (dname, "ifndef") : (- (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (dname); int __result = (((const unsigned char *) (const
char *) ("ifndef"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("ifndef"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("ifndef"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("ifndef"))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp
(dname, "ifndef")))); })
== 0);
392 if (bIfdef || bIfndef)
393 {
394 if ((handle->nifdef > 0) && (handle->ifdefs[handle->nifdef-1] != eifTRUE))
395 {
396 handle->nifdef++;
397 srenew(handle->ifdefs, handle->nifdef)(handle->ifdefs) = save_realloc("handle->ifdefs", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 397, (handle->ifdefs), (handle->nifdef), sizeof(*(handle
->ifdefs)))
;
398 handle->ifdefs[handle->nifdef-1] = eifIGNORE;
399 }
400 else
401 {
402 snew(name, strlen(dval)+1)(name) = save_calloc("name", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 402, (strlen(dval)+1), sizeof(*(name)))
;
403 sscanf(dval, "%s", name);
404 for (i = 0; (i < ndef); i++)
405 {
406 if (strcmp(defs[i].name, name)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(defs[i].name) && __builtin_constant_p (name) &&
(__s1_len = strlen (defs[i].name), __s2_len = strlen (name),
(!((size_t)(const void *)((defs[i].name) + 1) - (size_t)(const
void *)(defs[i].name) == 1) || __s1_len >= 4) && (
!((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) || __s2_len >= 4)) ? __builtin_strcmp (defs[i
].name, name) : (__builtin_constant_p (defs[i].name) &&
((size_t)(const void *)((defs[i].name) + 1) - (size_t)(const
void *)(defs[i].name) == 1) && (__s1_len = strlen (defs
[i].name), __s1_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (defs[i].name, name) : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) (defs[i].name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (defs[i].name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (defs[i].name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (defs[i].name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s2_len = strlen (name
), __s2_len < 4) ? (__builtin_constant_p (defs[i].name) &&
((size_t)(const void *)((defs[i].name) + 1) - (size_t)(const
void *)(defs[i].name) == 1) ? __builtin_strcmp (defs[i].name
, name) : (- (__extension__ ({ const unsigned char *__s2 = (const
unsigned char *) (const char *) (defs[i].name); int __result
= (((const unsigned char *) (const char *) (name))[0] - __s2
[0]); if (__s2_len > 0 && __result == 0) { __result
= (((const unsigned char *) (const char *) (name))[1] - __s2
[1]); if (__s2_len > 1 && __result == 0) { __result
= (((const unsigned char *) (const char *) (name))[2] - __s2
[2]); if (__s2_len > 2 && __result == 0) __result =
(((const unsigned char *) (const char *) (name))[3] - __s2[3
]); } } __result; })))) : __builtin_strcmp (defs[i].name, name
)))); })
== 0)
407 {
408 break;
409 }
410 }
411 handle->nifdef++;
412 srenew(handle->ifdefs, handle->nifdef)(handle->ifdefs) = save_realloc("handle->ifdefs", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 412, (handle->ifdefs), (handle->nifdef), sizeof(*(handle
->ifdefs)))
;
413 if ((bIfdef && (i < ndef)) || (bIfndef && (i == ndef)))
414 {
415 handle->ifdefs[handle->nifdef-1] = eifTRUE;
416 }
417 else
418 {
419 handle->ifdefs[handle->nifdef-1] = eifFALSE;
420 }
421 sfree(name)save_free("name", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 421, (name))
;
422 }
423 return eCPP_OK;
424 }
425
426 /* #else statement */
427 if (strcmp(dname, "else")__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(dname) && __builtin_constant_p ("else") && (
__s1_len = strlen (dname), __s2_len = strlen ("else"), (!((size_t
)(const void *)((dname) + 1) - (size_t)(const void *)(dname) ==
1) || __s1_len >= 4) && (!((size_t)(const void *)
(("else") + 1) - (size_t)(const void *)("else") == 1) || __s2_len
>= 4)) ? __builtin_strcmp (dname, "else") : (__builtin_constant_p
(dname) && ((size_t)(const void *)((dname) + 1) - (size_t
)(const void *)(dname) == 1) && (__s1_len = strlen (dname
), __s1_len < 4) ? (__builtin_constant_p ("else") &&
((size_t)(const void *)(("else") + 1) - (size_t)(const void *
)("else") == 1) ? __builtin_strcmp (dname, "else") : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) ("else"); int __result = (((const unsigned char *) (
const char *) (dname))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (dname))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (dname))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (dname))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
("else") && ((size_t)(const void *)(("else") + 1) - (
size_t)(const void *)("else") == 1) && (__s2_len = strlen
("else"), __s2_len < 4) ? (__builtin_constant_p (dname) &&
((size_t)(const void *)((dname) + 1) - (size_t)(const void *
)(dname) == 1) ? __builtin_strcmp (dname, "else") : (- (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (dname); int __result = (((const unsigned char *) (const
char *) ("else"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("else"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("else"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("else"))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp
(dname, "else")))); })
== 0)
428 {
429 if (handle->nifdef <= 0)
430 {
431 return eCPP_SYNTAX;
432 }
433 if (handle->ifdefs[handle->nifdef-1] == eifTRUE)
434 {
435 handle->ifdefs[handle->nifdef-1] = eifFALSE;
436 }
437 else if (handle->ifdefs[handle->nifdef-1] == eifFALSE)
438 {
439 handle->ifdefs[handle->nifdef-1] = eifTRUE;
440 }
441 return eCPP_OK;
442 }
443
444 /* #endif statement */
445 if (strcmp(dname, "endif")__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(dname) && __builtin_constant_p ("endif") &&
(__s1_len = strlen (dname), __s2_len = strlen ("endif"), (!(
(size_t)(const void *)((dname) + 1) - (size_t)(const void *)(
dname) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("endif") + 1) - (size_t)(const void *)("endif") == 1
) || __s2_len >= 4)) ? __builtin_strcmp (dname, "endif") :
(__builtin_constant_p (dname) && ((size_t)(const void
*)((dname) + 1) - (size_t)(const void *)(dname) == 1) &&
(__s1_len = strlen (dname), __s1_len < 4) ? (__builtin_constant_p
("endif") && ((size_t)(const void *)(("endif") + 1) -
(size_t)(const void *)("endif") == 1) ? __builtin_strcmp (dname
, "endif") : (__extension__ ({ const unsigned char *__s2 = (const
unsigned char *) (const char *) ("endif"); int __result = ((
(const unsigned char *) (const char *) (dname))[0] - __s2[0])
; if (__s1_len > 0 && __result == 0) { __result = (
((const unsigned char *) (const char *) (dname))[1] - __s2[1]
); if (__s1_len > 1 && __result == 0) { __result =
(((const unsigned char *) (const char *) (dname))[2] - __s2[
2]); if (__s1_len > 2 && __result == 0) __result =
(((const unsigned char *) (const char *) (dname))[3] - __s2[
3]); } } __result; }))) : (__builtin_constant_p ("endif") &&
((size_t)(const void *)(("endif") + 1) - (size_t)(const void
*)("endif") == 1) && (__s2_len = strlen ("endif"), __s2_len
< 4) ? (__builtin_constant_p (dname) && ((size_t)
(const void *)((dname) + 1) - (size_t)(const void *)(dname) ==
1) ? __builtin_strcmp (dname, "endif") : (- (__extension__ (
{ const unsigned char *__s2 = (const unsigned char *) (const char
*) (dname); int __result = (((const unsigned char *) (const char
*) ("endif"))[0] - __s2[0]); if (__s2_len > 0 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
"endif"))[1] - __s2[1]); if (__s2_len > 1 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
"endif"))[2] - __s2[2]); if (__s2_len > 2 && __result
== 0) __result = (((const unsigned char *) (const char *) ("endif"
))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (dname
, "endif")))); })
== 0)
446 {
447 if (handle->nifdef <= 0)
448 {
449 return eCPP_SYNTAX;
450 }
451 handle->nifdef--;
452 return eCPP_OK;
453 }
454
455 /* Check whether we're not ifdeffed out. The order of this statement
456 is important. It has to come after #ifdef, #else and #endif, but
457 anything else should be ignored. */
458 if (is_ifdeffed_out(handle))
459 {
460 return eCPP_OK;
461 }
462
463 /* Check for include statements */
464 if (strcmp(dname, "include")__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(dname) && __builtin_constant_p ("include") &&
(__s1_len = strlen (dname), __s2_len = strlen ("include"), (
!((size_t)(const void *)((dname) + 1) - (size_t)(const void *
)(dname) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("include") + 1) - (size_t)(const void *)("include")
== 1) || __s2_len >= 4)) ? __builtin_strcmp (dname, "include"
) : (__builtin_constant_p (dname) && ((size_t)(const void
*)((dname) + 1) - (size_t)(const void *)(dname) == 1) &&
(__s1_len = strlen (dname), __s1_len < 4) ? (__builtin_constant_p
("include") && ((size_t)(const void *)(("include") +
1) - (size_t)(const void *)("include") == 1) ? __builtin_strcmp
(dname, "include") : (__extension__ ({ const unsigned char *
__s2 = (const unsigned char *) (const char *) ("include"); int
__result = (((const unsigned char *) (const char *) (dname))
[0] - __s2[0]); if (__s1_len > 0 && __result == 0)
{ __result = (((const unsigned char *) (const char *) (dname
))[1] - __s2[1]); if (__s1_len > 1 && __result == 0
) { __result = (((const unsigned char *) (const char *) (dname
))[2] - __s2[2]); if (__s1_len > 2 && __result == 0
) __result = (((const unsigned char *) (const char *) (dname)
)[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (
"include") && ((size_t)(const void *)(("include") + 1
) - (size_t)(const void *)("include") == 1) && (__s2_len
= strlen ("include"), __s2_len < 4) ? (__builtin_constant_p
(dname) && ((size_t)(const void *)((dname) + 1) - (size_t
)(const void *)(dname) == 1) ? __builtin_strcmp (dname, "include"
) : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned
char *) (const char *) (dname); int __result = (((const unsigned
char *) (const char *) ("include"))[0] - __s2[0]); if (__s2_len
> 0 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("include"))[1] - __s2[1]); if (__s2_len
> 1 && __result == 0) { __result = (((const unsigned
char *) (const char *) ("include"))[2] - __s2[2]); if (__s2_len
> 2 && __result == 0) __result = (((const unsigned
char *) (const char *) ("include"))[3] - __s2[3]); } } __result
; })))) : __builtin_strcmp (dname, "include")))); })
== 0)
465 {
466 len = -1;
467 i0 = 0;
468 for (i1 = 0; (i1 < strlen(dval)); i1++)
469 {
470 if ((dval[i1] == '"') || (dval[i1] == '<') || (dval[i1] == '>'))
471 {
472 if (len == -1)
473 {
474 i0 = i1+1;
475 len = 0;
476 }
477 else
478 {
479 break;
480 }
481 }
482 else if (len >= 0)
483 {
484 len++;
485 }
486 }
487 if (len == -1)
488 {
489 return eCPP_SYNTAX;
490 }
491 snew(inc_fn, len+1)(inc_fn) = save_calloc("inc_fn", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 491, (len+1), sizeof(*(inc_fn)))
;
492 strncpy(inc_fn, dval+i0, len)__builtin_strncpy (inc_fn, dval+i0, len);
493 inc_fn[len] = '\0';
494
495 if (debug)
496 {
497 fprintf(debug, "Going to open include file '%s' i0 = %d, strlen = %d\n",
498 inc_fn, i0, len);
499 }
500 /* Open include file and store it as a child in the handle structure */
501 status = cpp_open_file(inc_fn, &(handle->child), NULL((void*)0));
502 sfree(inc_fn)save_free("inc_fn", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 502, (inc_fn))
;
503 if (status != eCPP_OK)
504 {
505 handle->child = NULL((void*)0);
506 return status;
507 }
508 /* Make a linked list of open files and move on to the include file */
509 handle->child->parent = handle;
510 *handlep = handle->child;
511 handle = *handlep;
Value stored to 'handle' is never read
512 return eCPP_OK;
513 }
514
515 /* #define statement */
516 if (strcmp(dname, "define")__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(dname) && __builtin_constant_p ("define") &&
(__s1_len = strlen (dname), __s2_len = strlen ("define"), (!
((size_t)(const void *)((dname) + 1) - (size_t)(const void *)
(dname) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("define") + 1) - (size_t)(const void *)("define") ==
1) || __s2_len >= 4)) ? __builtin_strcmp (dname, "define"
) : (__builtin_constant_p (dname) && ((size_t)(const void
*)((dname) + 1) - (size_t)(const void *)(dname) == 1) &&
(__s1_len = strlen (dname), __s1_len < 4) ? (__builtin_constant_p
("define") && ((size_t)(const void *)(("define") + 1
) - (size_t)(const void *)("define") == 1) ? __builtin_strcmp
(dname, "define") : (__extension__ ({ const unsigned char *__s2
= (const unsigned char *) (const char *) ("define"); int __result
= (((const unsigned char *) (const char *) (dname))[0] - __s2
[0]); if (__s1_len > 0 && __result == 0) { __result
= (((const unsigned char *) (const char *) (dname))[1] - __s2
[1]); if (__s1_len > 1 && __result == 0) { __result
= (((const unsigned char *) (const char *) (dname))[2] - __s2
[2]); if (__s1_len > 2 && __result == 0) __result =
(((const unsigned char *) (const char *) (dname))[3] - __s2[
3]); } } __result; }))) : (__builtin_constant_p ("define") &&
((size_t)(const void *)(("define") + 1) - (size_t)(const void
*)("define") == 1) && (__s2_len = strlen ("define"),
__s2_len < 4) ? (__builtin_constant_p (dname) && (
(size_t)(const void *)((dname) + 1) - (size_t)(const void *)(
dname) == 1) ? __builtin_strcmp (dname, "define") : (- (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (dname); int __result = (((const unsigned char *) (const
char *) ("define"))[0] - __s2[0]); if (__s2_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("define"))[1] - __s2[1]); if (__s2_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) ("define"))[2] - __s2[2]); if (__s2_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) ("define"))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp
(dname, "define")))); })
== 0)
517 {
518 /* Split it into name and value. */
519 ptr = dval;
520 while ((*ptr != '\0') && !isspace(*ptr)((*__ctype_b_loc ())[(int) ((*ptr))] & (unsigned short int
) _ISspace)
)
521 {
522 ptr++;
523 }
524 name = gmx_strndup(dval, ptr - dval);
525
526 while ((*ptr != '\0') && isspace(*ptr)((*__ctype_b_loc ())[(int) ((*ptr))] & (unsigned short int
) _ISspace)
)
527 {
528 ptr++;
529 }
530
531 add_define(name, ptr);
532 sfree(name)save_free("name", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 532, (name))
;
533 return eCPP_OK;
534 }
535
536 /* #undef statement */
537 if (strcmp(dname, "undef")__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(dname) && __builtin_constant_p ("undef") &&
(__s1_len = strlen (dname), __s2_len = strlen ("undef"), (!(
(size_t)(const void *)((dname) + 1) - (size_t)(const void *)(
dname) == 1) || __s1_len >= 4) && (!((size_t)(const
void *)(("undef") + 1) - (size_t)(const void *)("undef") == 1
) || __s2_len >= 4)) ? __builtin_strcmp (dname, "undef") :
(__builtin_constant_p (dname) && ((size_t)(const void
*)((dname) + 1) - (size_t)(const void *)(dname) == 1) &&
(__s1_len = strlen (dname), __s1_len < 4) ? (__builtin_constant_p
("undef") && ((size_t)(const void *)(("undef") + 1) -
(size_t)(const void *)("undef") == 1) ? __builtin_strcmp (dname
, "undef") : (__extension__ ({ const unsigned char *__s2 = (const
unsigned char *) (const char *) ("undef"); int __result = ((
(const unsigned char *) (const char *) (dname))[0] - __s2[0])
; if (__s1_len > 0 && __result == 0) { __result = (
((const unsigned char *) (const char *) (dname))[1] - __s2[1]
); if (__s1_len > 1 && __result == 0) { __result =
(((const unsigned char *) (const char *) (dname))[2] - __s2[
2]); if (__s1_len > 2 && __result == 0) __result =
(((const unsigned char *) (const char *) (dname))[3] - __s2[
3]); } } __result; }))) : (__builtin_constant_p ("undef") &&
((size_t)(const void *)(("undef") + 1) - (size_t)(const void
*)("undef") == 1) && (__s2_len = strlen ("undef"), __s2_len
< 4) ? (__builtin_constant_p (dname) && ((size_t)
(const void *)((dname) + 1) - (size_t)(const void *)(dname) ==
1) ? __builtin_strcmp (dname, "undef") : (- (__extension__ (
{ const unsigned char *__s2 = (const unsigned char *) (const char
*) (dname); int __result = (((const unsigned char *) (const char
*) ("undef"))[0] - __s2[0]); if (__s2_len > 0 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
"undef"))[1] - __s2[1]); if (__s2_len > 1 && __result
== 0) { __result = (((const unsigned char *) (const char *) (
"undef"))[2] - __s2[2]); if (__s2_len > 2 && __result
== 0) __result = (((const unsigned char *) (const char *) ("undef"
))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (dname
, "undef")))); })
== 0)
538 {
539 snew(name, strlen(dval)+1)(name) = save_calloc("name", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 539, (strlen(dval)+1), sizeof(*(name)))
;
540 sscanf(dval, "%s", name);
541 for (i = 0; (i < ndef); i++)
542 {
543 if (strcmp(defs[i].name, name)__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p
(defs[i].name) && __builtin_constant_p (name) &&
(__s1_len = strlen (defs[i].name), __s2_len = strlen (name),
(!((size_t)(const void *)((defs[i].name) + 1) - (size_t)(const
void *)(defs[i].name) == 1) || __s1_len >= 4) && (
!((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) || __s2_len >= 4)) ? __builtin_strcmp (defs[i
].name, name) : (__builtin_constant_p (defs[i].name) &&
((size_t)(const void *)((defs[i].name) + 1) - (size_t)(const
void *)(defs[i].name) == 1) && (__s1_len = strlen (defs
[i].name), __s1_len < 4) ? (__builtin_constant_p (name) &&
((size_t)(const void *)((name) + 1) - (size_t)(const void *)
(name) == 1) ? __builtin_strcmp (defs[i].name, name) : (__extension__
({ const unsigned char *__s2 = (const unsigned char *) (const
char *) (name); int __result = (((const unsigned char *) (const
char *) (defs[i].name))[0] - __s2[0]); if (__s1_len > 0 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (defs[i].name))[1] - __s2[1]); if (__s1_len > 1 &&
__result == 0) { __result = (((const unsigned char *) (const
char *) (defs[i].name))[2] - __s2[2]); if (__s1_len > 2 &&
__result == 0) __result = (((const unsigned char *) (const char
*) (defs[i].name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p
(name) && ((size_t)(const void *)((name) + 1) - (size_t
)(const void *)(name) == 1) && (__s2_len = strlen (name
), __s2_len < 4) ? (__builtin_constant_p (defs[i].name) &&
((size_t)(const void *)((defs[i].name) + 1) - (size_t)(const
void *)(defs[i].name) == 1) ? __builtin_strcmp (defs[i].name
, name) : (- (__extension__ ({ const unsigned char *__s2 = (const
unsigned char *) (const char *) (defs[i].name); int __result
= (((const unsigned char *) (const char *) (name))[0] - __s2
[0]); if (__s2_len > 0 && __result == 0) { __result
= (((const unsigned char *) (const char *) (name))[1] - __s2
[1]); if (__s2_len > 1 && __result == 0) { __result
= (((const unsigned char *) (const char *) (name))[2] - __s2
[2]); if (__s2_len > 2 && __result == 0) __result =
(((const unsigned char *) (const char *) (name))[3] - __s2[3
]); } } __result; })))) : __builtin_strcmp (defs[i].name, name
)))); })
== 0)
544 {
545 sfree(defs[i].name)save_free("defs[i].name", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 545, (defs[i].name))
;
546 sfree(defs[i].def)save_free("defs[i].def", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 546, (defs[i].def))
;
547 break;
548 }
549 }
550 sfree(name)save_free("name", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 550, (name))
;
551 for (; (i < ndef-1); i++)
552 {
553 defs[i].name = defs[i+1].name;
554 defs[i].def = defs[i+1].def;
555 }
556 ndef--;
557
558 return eCPP_OK;
559 }
560
561 /* If we haven't matched anything, this is an unknown directive */
562 return eCPP_SYNTAX;
563}
564
565/* Return one whole line from the file into buf which holds at most n
566 characters, for subsequent processing. Returns integer status. This
567 routine also does all the "intelligent" work like processing cpp
568 directives and so on. Note that often the routine is called
569 recursively and no cpp directives are printed. */
570int cpp_read_line(gmx_cpp_t *handlep, int n, char buf[])
571{
572 gmx_cpp_t handle = (gmx_cpp_t)*handlep;
573 int i, nn, len, status;
574 const char *ptr, *ptr2;
575 char *name;
576 char *dname, *dval;
577 gmx_bool bEOF;
578
579 if (!handle)
580 {
581 return eCPP_INVALID_HANDLE;
582 }
583 if (!handle->fp)
584 {
585 return eCPP_FILE_NOT_OPEN;
586 }
587
588 bEOF = feof(handle->fp);
589 if (!bEOF)
590 {
591 /* Read the actual line now. */
592 if (fgets2(buf, n-1, handle->fp) == NULL((void*)0))
593 {
594 /* Recheck EOF, since we could have been at the end before
595 * the fgets2 call, but we need to read past the end to know.
596 */
597 bEOF = feof(handle->fp);
598 if (!bEOF)
599 {
600 /* Something strange happened, fgets returned NULL,
601 * but we are not at EOF.
602 */
603 return eCPP_UNKNOWN;
604 }
605 }
606 }
607
608 if (bEOF)
609 {
610 if (handle->parent == NULL((void*)0))
611 {
612 return eCPP_EOF;
613 }
614 cpp_close_file(handlep);
615 *handlep = handle->parent;
616 handle->child = NULL((void*)0);
617 return cpp_read_line(handlep, n, buf);
618 }
619 else
620 {
621 if (n > handle->line_len)
622 {
623 handle->line_len = n;
624 srenew(handle->line, n)(handle->line) = save_realloc("handle->line", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 624, (handle->line), (n), sizeof(*(handle->line)))
;
625 }
626 strcpy(handle->line, buf);
627 handle->line_nr++;
628 }
629 /* Now we've read a line! */
630 if (debug)
631 {
632 fprintf(debug, "%s : %4d : %s\n", handle->fn, handle->line_nr, buf);
633 }
634
635 /* Process directives if this line contains one */
636 if (find_directive(buf, &dname, &dval))
637 {
638 status = process_directive(handlep, dname, dval);
639 if (status != eCPP_OK)
640 {
641 return status;
642 }
643 /* Don't print lines with directives, go on to the next */
644 return cpp_read_line(handlep, n, buf);
645 }
646
647 /* Check whether we're not ifdeffed out. The order of this statement
648 is important. It has to come after #ifdef, #else and #endif, but
649 anything else should be ignored. */
650 if (is_ifdeffed_out(handle))
651 {
652 return cpp_read_line(handlep, n, buf);
653 }
654
655 /* Check whether we have any defines that need to be replaced. Note
656 that we have to use a best fit algorithm, rather than first come
657 first go. We do this by sorting the defines on length first, and
658 then on alphabetical order. */
659 for (i = 0; (i < ndef); i++)
660 {
661 if (defs[i].def)
662 {
663 nn = 0;
664 ptr = buf;
665 while ((ptr = strstrw(ptr, defs[i].name)) != NULL((void*)0))
666 {
667 nn++;
668 ptr += strlen(defs[i].name);
669 }
670 if (nn > 0)
671 {
672 len = strlen(buf) + nn*max(4, 4+strlen(defs[i].def)-strlen(defs[i].name))(((4) > (4+strlen(defs[i].def)-strlen(defs[i].name))) ? (4
) : (4+strlen(defs[i].def)-strlen(defs[i].name)) )
;
673 snew(name, len)(name) = save_calloc("name", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 673, (len), sizeof(*(name)))
;
674 ptr = buf;
675 while ((ptr2 = strstrw(ptr, defs[i].name)) != NULL((void*)0))
676 {
677 strncat(name, ptr, (int)(ptr2-ptr))__builtin_strncat (name, ptr, (int)(ptr2-ptr));
678 strcat(name, defs[i].def);
679 ptr = ptr2 + strlen(defs[i].name);
680 }
681 strcat(name, ptr);
682 strcpy(buf, name);
683 sfree(name)save_free("name", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 683, (name))
;
684 }
685 }
686 }
687
688 return eCPP_OK;
689}
690
691char *cpp_cur_file(const gmx_cpp_t *handlep)
692{
693 return (*handlep)->fn;
694}
695
696int cpp_cur_linenr(const gmx_cpp_t *handlep)
697{
698 return (*handlep)->line_nr;
699}
700
701/* Close the file! Return integer status. */
702int cpp_close_file(gmx_cpp_t *handlep)
703{
704 int i;
705 gmx_cpp_t handle = (gmx_cpp_t)*handlep;
706
707 if (!handle)
708 {
709 return eCPP_INVALID_HANDLE;
710 }
711 if (!handle->fp)
712 {
713 return eCPP_FILE_NOT_OPEN;
714 }
715 if (debug)
716 {
717 fprintf(debug, "GMXCPP: closing file %s\n", handle->fn);
718 }
719 fclose(handle->fp);
720 if (NULL((void*)0) != handle->cwd)
721 {
722 if (NULL((void*)0) != debug)
723 {
724 fprintf(debug, "GMXCPP: chdir to %s\n", handle->cwd);
725 }
726 gmx_chdir(handle->cwd);
727 }
728
729 if (0)
730 {
731 switch (errno(*__errno_location ()))
732 {
733 case 0:
734 break;
735 case ENOENT2:
736 return eCPP_FILE_NOT_FOUND;
737 case EBADF9:
738 return eCPP_FILE_NOT_OPEN;
739 case EINTR4:
740 return eCPP_INTERRUPT;
741 default:
742 if (debug)
743 {
744 fprintf(debug, "Strange stuff closing file, errno = %d", errno(*__errno_location ()));
745 }
746 return eCPP_UNKNOWN;
747 }
748 }
749 handle->fp = NULL((void*)0);
750 handle->line_nr = 0;
751 if (NULL((void*)0) != handle->fn)
752 {
753 sfree(handle->fn)save_free("handle->fn", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 753, (handle->fn))
;
754 handle->fn = NULL((void*)0);
755 }
756 if (NULL((void*)0) != handle->line)
757 {
758 sfree(handle->line)save_free("handle->line", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 758, (handle->line))
;
759 handle->line = NULL((void*)0);
760 }
761 if (NULL((void*)0) != handle->ifdefs)
762 {
763 sfree(handle->ifdefs)save_free("handle->ifdefs", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 763, (handle->ifdefs))
;
764 }
765 handle->nifdef = 0;
766 if (NULL((void*)0) != handle->path)
767 {
768 sfree(handle->path)save_free("handle->path", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 768, (handle->path))
;
769 }
770 if (NULL((void*)0) != handle->cwd)
771 {
772 sfree(handle->cwd)save_free("handle->cwd", "/home/alexxy/Develop/gromacs/src/gromacs/gmxpreprocess/gmxcpp.c"
, 772, (handle->cwd))
;
773 }
774
775 return eCPP_OK;
776}
777
778void cpp_done()
779{
780 done_includes();
781 done_defines();
782}
783
784/* Return a string containing the error message coresponding to status
785 variable */
786char *cpp_error(gmx_cpp_t *handlep, int status)
787{
788 char buf[256];
789 const char *ecpp[] = {
790 "OK", "File not found", "End of file", "Syntax error", "Interrupted",
791 "Invalid file handle",
792 "File not open", "Unknown error", "Error status out of range"
793 };
794 gmx_cpp_t handle = (gmx_cpp_t)*handlep;
795
796 if (!handle)
797 {
798 return (char *)ecpp[eCPP_INVALID_HANDLE];
799 }
800
801 if ((status < 0) || (status >= eCPP_NR))
802 {
803 status = eCPP_NR;
804 }
805
806 sprintf(buf, "%s - File %s, line %d\nLast line read:\n'%s'",
807 ecpp[status],
808 (handle && handle->fn) ? handle->fn : "unknown",
809 (handle) ? handle->line_nr : -1,
810 handle->line ? handle->line : "");
811
812 return strdup(buf)(__extension__ (__builtin_constant_p (buf) && ((size_t
)(const void *)((buf) + 1) - (size_t)(const void *)(buf) == 1
) ? (((const char *) (buf))[0] == '\0' ? (char *) calloc ((size_t
) 1, (size_t) 1) : ({ size_t __len = strlen (buf) + 1; char *
__retval = (char *) malloc (__len); if (__retval != ((void*)0
)) __retval = (char *) memcpy (__retval, buf, __len); __retval
; })) : __strdup (buf)))
;
813}