1 #ifndef TSRM_CONFIG_COMMON_H
2 #define TSRM_CONFIG_COMMON_H
3
4 #ifndef __CYGWIN__
5 # ifdef _WIN32
6 # define TSRM_WIN32
7 # endif
8 #endif
9
10 #ifdef TSRM_WIN32
11 # include "tsrm_config.w32.h"
12 #else
13 # include <tsrm_config.h>
14 # include <sys/param.h>
15 #endif
16
17 #if HAVE_ALLOCA_H && !defined(_ALLOCA_H)
18 # include <alloca.h>
19 #endif
20
21
22 #ifndef __GNUC__
23 # ifndef HAVE_ALLOCA_H
24 # ifdef _AIX
25 #pragma alloca
26 # else
27 # ifndef alloca
28 # ifndef NETWARE
29 char *alloca ();
30 # endif
31 # endif
32 # endif
33 # endif
34 #endif
35
36 #if HAVE_UNISTD_H
37 #include <unistd.h>
38 #endif
39
40 #if HAVE_LIMITS_H
41 #include <limits.h>
42 #endif
43
44 #ifndef MAXPATHLEN
45 # ifdef PATH_MAX
46 # define MAXPATHLEN PATH_MAX
47 # elif defined(MAX_PATH)
48 # define MAXPATHLEN MAX_PATH
49 # else
50 # define MAXPATHLEN 256
51 # endif
52 #endif
53
54 #if (HAVE_ALLOCA || (defined (__GNUC__) && __GNUC__ >= 2))
55 # define TSRM_ALLOCA_MAX_SIZE 4096
56 # define TSRM_ALLOCA_FLAG(name) \
57 int name;
58 # define tsrm_do_alloca_ex(size, limit, use_heap) \
59 ((use_heap = ((size) > (limit))) ? malloc(size) : alloca(size))
60 # define tsrm_do_alloca(size, use_heap) \
61 tsrm_do_alloca_ex(size, TSRM_ALLOCA_MAX_SIZE, use_heap)
62 # define tsrm_free_alloca(p, use_heap) \
63 do { if (use_heap) free(p); } while (0)
64 #else
65 # define TSRM_ALLOCA_FLAG(name)
66 # define tsrm_do_alloca(p, use_heap) malloc(p)
67 # define tsrm_free_alloca(p, use_heap) free(p)
68 #endif
69
70 #endif