1/* memalloc.h -- consolidate code for including alloca.h or malloc.h and
2   defining alloca. */
3
4/* Copyright (C) 1993 Free Software Foundation, Inc.
5
6   This file is part of GNU Bash, the Bourne Again SHell.
7
8   Bash is free software; you can redistribute it and/or modify it under
9   the terms of the GNU General Public License as published by the Free
10   Software Foundation; either version 2, or (at your option) any later
11   version.
12
13   Bash is distributed in the hope that it will be useful, but WITHOUT ANY
14   WARRANTY; without even the implied warranty of MERCHANTABILITY or
15   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
16   for more details.
17
18   You should have received a copy of the GNU General Public License along
19   with Bash; see the file COPYING.  If not, write to the Free Software
20   Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
21
22#if !defined (_MEMALLOC_H_)
23#  define _MEMALLOC_H_
24
25#if defined (sparc) && defined (sun) && !defined (HAVE_ALLOCA_H)
26#  define HAVE_ALLOCA_H
27#endif
28
29#if defined (__GNUC__) && !defined (HAVE_ALLOCA)
30#  define HAVE_ALLOCA
31#endif
32
33#if defined (HAVE_ALLOCA_H) && !defined (HAVE_ALLOCA) && !defined (C_ALLOCA)
34#  define HAVE_ALLOCA
35#endif /* HAVE_ALLOCA_H && !HAVE_ALLOCA */
36
37#if defined (__GNUC__) && !defined (C_ALLOCA)
38#  undef alloca
39#  define alloca __builtin_alloca
40#else /* !__GNUC__ || C_ALLOCA */
41#  if defined (HAVE_ALLOCA_H) && !defined (C_ALLOCA)
42#    if defined (IBMESA)
43#      include <malloc.h>
44#    else /* !IBMESA */
45#      include <alloca.h>
46#    endif /* !IBMESA */
47#  else  /* !HAVE_ALLOCA_H || C_ALLOCA */
48#    if defined (__hpux) && defined (__STDC__) && !defined (alloca)
49extern void *alloca ();
50#    else
51#      if !defined (alloca)
52#        if defined (__STDC__)
53extern void *alloca (size_t);
54#        else
55extern char *alloca ();
56#        endif /* !__STDC__ */
57#      endif /* !alloca */
58#    endif /* !__hpux || !__STDC__ && !alloca */
59#  endif /* !HAVE_ALLOCA_H || C_ALLOCA */
60#endif /* !__GNUC__ || C_ALLOCA */
61
62#endif /* _MEMALLOC_H_ */
63