1#ifdef HAVE_CONFIG_H
2#include "config.h"
3#endif
4
5#include <ctype.h>
6#include <errno.h>
7#include <fcntl.h>
8#include <limits.h>
9
10#if HAVE_MCHECK_H
11#include <mcheck.h>
12#endif
13
14#include <stdio.h>
15#include <stdlib.h>
16#include <string.h>
17
18#if HAVE_UNISTD_H
19#include <unistd.h>
20#endif
21
22#if !defined(__GNUC__) || defined(APPLE)
23/* Apparently the OS X port of gcc gags on __attribute__.
24 *
25 * <http://www.opensource.apple.com/bugs/X/gcc/2512150.html> */
26#define __attribute__(x)
27
28#endif
29
30#ifdef __NeXT
31/* access macros are not declared in non posix mode in unistd.h -
32 don't try to use posix on NeXTstep 3.3 ! */
33#include <libc.h>
34#endif
35
36#if defined(__LCLINT__)
37/*@-declundef -incondefs -redecl@*/ /* LCL: missing annotation */
38/*@only@*/ void * alloca (size_t __size)
39	/*@ensures MaxSet(result) == (__size - 1) @*/
40	/*@*/;
41/*@=declundef =incondefs =redecl@*/
42#endif
43
44/* AIX requires this to be the first thing in the file.  */
45#ifndef __GNUC__
46# if HAVE_ALLOCA_H
47#  include <alloca.h>
48# else
49#  ifdef _AIX
50#pragma alloca
51#  else
52#   if HAVE_ALLOCA
53#    ifndef alloca /* predefined by HP cc +Olibcalls */
54char *alloca ();
55#    endif
56#   else
57#    ifdef alloca
58#     undef alloca
59#    endif
60#    define alloca(sz) malloc(sz) /* Kludge this for now */
61#   endif
62#  endif
63# endif
64#elif defined(__GNUC__) && defined(__STRICT_ANSI__)
65#define alloca __builtin_alloca
66#endif
67
68/*@-redecl -redef@*/
69/*@mayexit@*/ /*@only@*/ char * xstrdup (const char *str)
70	/*@*/;
71/*@=redecl =redef@*/
72
73#if HAVE_MCHECK_H && defined(__GNUC__)
74#define	vmefail()	(fprintf(stderr, "virtual memory exhausted.\n"), exit(EXIT_FAILURE), NULL)
75#define xstrdup(_str)   (strcpy((malloc(strlen(_str)+1) ? : vmefail()), (_str)))
76#else
77#define	xstrdup(_str)	strdup(_str)
78#endif  /* HAVE_MCHECK_H && defined(__GNUC__) */
79
80#define UNUSED(x) x __attribute__((__unused__))
81
82#include "popt.h"
83