Upgrade from popt 1.2 to a cut-down 1.5
[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
28/* AIX requires this to be the first thing in the file. */
29#ifndef __GNUC__
30# if HAVE_ALLOCA_H
31# include <alloca.h>
32# else
33# ifdef _AIX
34#pragma alloca
35# else
36# ifndef alloca /* predefined by HP cc +Olibcalls */
37char *alloca ();
38# endif
39# endif
40# endif
41#elif defined(__GNUC__) && defined(__STRICT_ANSI__)
42#define alloca __builtin_alloca
43#endif
44
45/*@only@*/ char * xstrdup (const char *str);
46
47#if HAVE_MCHECK_H && defined(__GNUC__)
48#define vmefail() (fprintf(stderr, "virtual memory exhausted.\n"), exit(EXIT_FAILURE), NULL)
49#define xstrdup(_str) (strcpy((malloc(strlen(_str)+1) ? : vmefail()), (_str)))
50#else
51#define xstrdup(_str) strdup(_str)
52#endif /* HAVE_MCHECK_H && defined(__GNUC__) */
53
54
55#include "popt.h"