1 #ifdef HAVE_CONFIG_H 2 #include "config.h" 3 #endif 4 5 #if defined (__GLIBC__) && defined(__LCLINT__) 6 /*@-declundef@*/ 7 /*@unchecked@*/ 8 extern __const __int32_t *__ctype_tolower; 9 /*@unchecked@*/ 10 extern __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 @*/ /* LCL: missing annotation */ 40 /*@only@*/ /*@out@*/ 41 void * alloca (size_t __size) 42 /*@ensures MaxSet(result) == (__size - 1) @*/ 43 /*@*/; 44 /*@=declundef =incondefs @*/ 45 #endif 46 47 /* AIX requires this to be the first thing in the file. */ 48 #ifndef __GNUC__ 49 # if HAVE_ALLOCA_H 50 # include <alloca.h> 51 # else 52 # ifdef _AIX 53 #pragma alloca 54 # else 55 # ifndef alloca /* predefined by HP cc +Olibcalls */ 56 char *alloca (); 57 # endif 58 # endif 59 # endif 60 #elif defined(__GNUC__) && defined(__STRICT_ANSI__) 61 #define alloca __builtin_alloca 62 #endif 63 64 /*@-redecl -redef@*/ 65 /*@mayexit@*/ /*@only@*/ /*@unused@*/ 66 char * xstrdup (const char *str) 67 /*@*/; 68 /*@=redecl =redef@*/ 69 70 #if HAVE_MCHECK_H && defined(__GNUC__) 71 #define vmefail() (fprintf(stderr, "virtual memory exhausted.\n"), exit(EXIT_FAILURE), NULL) 72 #define xstrdup(_str) (strcpy((malloc(strlen(_str)+1) ? : vmefail()), (_str))) 73 #else 74 #define xstrdup(_str) strdup(_str) 75 #endif /* HAVE_MCHECK_H && defined(__GNUC__) */ 76 77 #if HAVE___SECURE_GETENV && !defined(__LCLINT__) 78 #define getenv(_s) __secure_getenv(_s) 79 #endif 80 81 #include "popt.h" 82