Reduced the severity of the warning about missing alloca to a warning, and
[rsync/rsync.git] / popt / system.h
CommitLineData
b348deae
MP
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#ifdef __NeXT
23/* access macros are not declared in non posix mode in unistd.h -
24 don't try to use posix on NeXTstep 3.3 ! */
25#include <libc.h>
26#endif
27
cc248aae
WD
28#if defined(__LCLINT__)
29/*@-declundef -incondefs -redecl@*/ /* LCL: missing annotation */
30/*@only@*/ void * alloca (size_t __size)
31 /*@ensures MaxSet(result) == (__size - 1) @*/
32 /*@*/;
33/*@=declundef =incondefs =redecl@*/
34#endif
35
b348deae
MP
36/* AIX requires this to be the first thing in the file. */
37#ifndef __GNUC__
38# if HAVE_ALLOCA_H
39# include <alloca.h>
40# else
41# ifdef _AIX
42#pragma alloca
43# else
44# ifndef alloca /* predefined by HP cc +Olibcalls */
45char *alloca ();
46# endif
47# endif
48# endif
49#elif defined(__GNUC__) && defined(__STRICT_ANSI__)
50#define alloca __builtin_alloca
51#endif
52
cc248aae
WD
53/*@-redecl -redef@*/
54/*@mayexit@*/ /*@only@*/ char * xstrdup (const char *str)
55 /*@*/;
56/*@=redecl =redef@*/
b348deae
MP
57
58#if HAVE_MCHECK_H && defined(__GNUC__)
59#define vmefail() (fprintf(stderr, "virtual memory exhausted.\n"), exit(EXIT_FAILURE), NULL)
60#define xstrdup(_str) (strcpy((malloc(strlen(_str)+1) ? : vmefail()), (_str)))
61#else
62#define xstrdup(_str) strdup(_str)
63#endif /* HAVE_MCHECK_H && defined(__GNUC__) */
64
65
66#include "popt.h"