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