update from MirBSD CVS
[alioth/jupp.git] / config.h
1 #ifndef _JOE_CONFIG_H
2 #define _JOE_CONFIG_H
3
4 /* see bottom for RCSID on this one */
5
6 #ifndef TEST
7 #include "autoconf.h"
8 #else
9 #define HAVE_DECL_STRLCAT 1
10 #define HAVE_DECL_STRLCPY 1
11 #define HAVE_GETCWD 1
12 #define HAVE_MKSTEMP 1
13 #define HAVE_SNPRINTF 1
14 #define HAVE_SYS_TYPES_H 1
15 #define HAVE_SYS_STAT_H 1
16 #define HAVE_DIRENT_H 1
17 #define HAVE_LIMITS_H 1
18 #define HAVE_SIGNAL_H 1
19 #define HAVE_STDLIB_H 1
20 #define HAVE_UNISTD_H 1
21 #define RETSIGTYPE void
22 #define PARAMS(protos) protos
23 #endif
24
25 #ifdef HAVE_SYS_TYPES_H
26 #include <sys/types.h>
27 #endif
28
29 #ifdef HAVE_SNPRINTF
30
31 #define joe_snprintf_0(buf,len,fmt) snprintf((buf),(len),(fmt))
32 #define joe_snprintf_1(buf,len,fmt,a) snprintf((buf),(len),(fmt),(a))
33 #define joe_snprintf_2(buf,len,fmt,a,b) snprintf((buf),(len),(fmt),(a),(b))
34 #define joe_snprintf_3(buf,len,fmt,a,b,c) snprintf((buf),(len),(fmt),(a),(b),(c))
35 #define joe_snprintf_4(buf,len,fmt,a,b,c,d) snprintf((buf),(len),(fmt),(a),(b),(c),(d))
36 #define joe_snprintf_5(buf,len,fmt,a,b,c,d,e) snprintf((buf),(len),(fmt),(a),(b),(c),(d),(e))
37 #define joe_snprintf_6(buf,len,fmt,a,b,c,d,e,f) snprintf((buf),(len),(fmt),(a),(b),(c),(d),(e),(f))
38 #define joe_snprintf_7(buf,len,fmt,a,b,c,d,e,f,g) snprintf((buf),(len),(fmt),(a),(b),(c),(d),(e),(f),(g))
39 #define joe_snprintf_8(buf,len,fmt,a,b,c,d,e,f,g,h) snprintf((buf),(len),(fmt),(a),(b),(c),(d),(e),(f),(g),(h))
40 #define joe_snprintf_9(buf,len,fmt,a,b,c,d,e,f,g,h,i) snprintf((buf),(len),(fmt),(a),(b),(c),(d),(e),(f),(g),(h),(i))
41 #define joe_snprintf_10(buf,len,fmt,a,b,c,d,e,f,g,h,i,j) snprintf((buf),(len),(fmt),(a),(b),(c),(d),(e),(f),(g),(h),(i),(j))
42
43 #else
44
45 #define joe_snprintf_0(buf,len,fmt) sprintf((buf),(fmt))
46 #define joe_snprintf_1(buf,len,fmt,a) sprintf((buf),(fmt),(a))
47 #define joe_snprintf_2(buf,len,fmt,a,b) sprintf((buf),(fmt),(a),(b))
48 #define joe_snprintf_3(buf,len,fmt,a,b,c) sprintf((buf),(fmt),(a),(b),(c))
49 #define joe_snprintf_4(buf,len,fmt,a,b,c,d) sprintf((buf),(fmt),(a),(b),(c),(d))
50 #define joe_snprintf_5(buf,len,fmt,a,b,c,d,e) sprintf((buf),(fmt),(a),(b),(c),(d),(e))
51 #define joe_snprintf_6(buf,len,fmt,a,b,c,d,e,f) sprintf((buf),(fmt),(a),(b),(c),(d),(e),(f))
52 #define joe_snprintf_7(buf,len,fmt,a,b,c,d,e,f,g) sprintf((buf),(fmt),(a),(b),(c),(d),(e),(f),(g))
53 #define joe_snprintf_8(buf,len,fmt,a,b,c,d,e,f,g,h) sprintf((buf),(fmt),(a),(b),(c),(d),(e),(f),(g),(h))
54 #define joe_snprintf_9(buf,len,fmt,a,b,c,d,e,f,g,h,i) sprintf((buf),(fmt),(a),(b),(c),(d),(e),(f),(g),(h),(i))
55 #define joe_snprintf_10(buf,len,fmt,a,b,c,d,e,f,g,h,i,j) sprintf((buf),(fmt),(a),(b),(c),(d),(e),(f),(g),(h),(i),(j))
56
57 #endif
58
59 #include <stdio.h>
60 #ifndef EOF
61 #define EOF -1
62 #endif
63 #define NO_MORE_DATA EOF
64
65 #if defined __MSDOS__ && SIZEOF_INT == 2 /* real mode ms-dos compilers */
66 #if SIZEOF_VOID_P == 4 /* real mode ms-dos compilers with 'far' memory model or something like that */
67 #define physical(a)  (((unsigned long)(a)&0xFFFF)+(((unsigned long)(a)&0xFFFF0000)>>12))
68 #define normalize(a) ((void *)(((unsigned long)(a)&0xFFFF000F)+(((unsigned long)(a)&0x0000FFF0)<<12)))
69 #else
70 #define physical(a) ((unsigned long)(a))
71 #define normalize(a) (a)
72 #endif /* sizeof(void *) == 4 */
73
74 #define SEGSIZ 1024
75 #define PGSIZE 1024
76 #define LPGSIZE 10
77 #define ILIMIT (PGSIZE*96L)
78 #define HTSIZE 128
79
80 #else /* not real mode ms-dos */
81
82 #define physical(a) ((unsigned long)(a))
83 #define normalize(a) (a)
84 #ifdef PAGE_SIZE
85 #define PGSIZE PAGE_SIZE
86 #else
87 #define PGSIZE 4096
88 #endif
89 #define SEGSIZ PGSIZE
90 #define LPGSIZE 12
91 #define ILIMIT (PGSIZE*1024)
92 #define HTSIZE 2048
93
94 #endif /* real mode ms-dos */
95
96 #if !defined(__GNUC__) && !defined(__attribute__)
97 #define __attribute__(p) /* nothing */
98 #endif
99
100 #define ATTR_UNUSED     __attribute__((__unused__))
101
102 #ifdef HAVE_GCC_ATTRIBUTE_BOUNDED
103 #define ATTR_BOUNDED(p) __attribute__((__bounded__ p))
104 #else
105 #define ATTR_BOUNDED(p) /* nothing */
106 #endif
107
108 #if !HAVE_DECL_STRLCAT
109 size_t strlcat(char *, const char *, size_t)
110     ATTR_BOUNDED((__string__, 1, 3));
111 #endif
112 #if !HAVE_DECL_STRLCPY
113 size_t strlcpy(char *, const char *, size_t)
114     ATTR_BOUNDED((__string__, 1, 3));
115 #endif
116
117 /* from mksh */
118
119 #define BIT(i)          (1U << (i))
120 #define NELEM(a)        (sizeof(a) / sizeof((a)[0]))
121
122 #if defined(MirBSD) && (MirBSD >= 0x09A1) && \
123     defined(__ELF__) && defined(__GNUC__) && \
124     !defined(__llvm__) && !defined(__NWCC__)
125 /*
126  * We got usable __IDSTRING __COPYRIGHT __RCSID __SCCSID macros
127  * which work for all cases; no need to redefine them using the
128  * "portable" macros from below when we might have the "better"
129  * gcc+ELF specific macros or other system dependent ones.
130  */
131 #else
132 #undef __IDSTRING
133 #undef __IDSTRING_CONCAT
134 #undef __IDSTRING_EXPAND
135 #undef __COPYRIGHT
136 #undef __RCSID
137 #undef __SCCSID
138 #define __IDSTRING_CONCAT(l,p)          __LINTED__ ## l ## _ ## p
139 #define __IDSTRING_EXPAND(l,p)          __IDSTRING_CONCAT(l,p)
140 #ifdef MKSH_DONT_EMIT_IDSTRING
141 #define __IDSTRING(prefix, string)      /* nothing */
142 #elif defined(__ELF__) && defined(__GNUC__) && \
143     !defined(__llvm__) && !defined(__NWCC__) && !defined(NO_ASM)
144 #define __IDSTRING(prefix, string)                              \
145         __asm__(".section .comment"                             \
146         "\n     .ascii  \"@(\"\"#)" #prefix ": \""              \
147         "\n     .asciz  \"" string "\""                         \
148         "\n     .previous")
149 #else
150 #define __IDSTRING(prefix, string)                              \
151         static const char __IDSTRING_EXPAND(__LINE__,prefix) [] \
152             __attribute__((__used__)) = "@(""#)" #prefix ": " string
153 #endif
154 #define __COPYRIGHT(x)          __IDSTRING(copyright,x)
155 #define __RCSID(x)              __IDSTRING(rcsid,x)
156 #define __SCCSID(x)             __IDSTRING(sccsid,x)
157 #endif
158
159 #ifdef EXTERN
160 __IDSTRING(rcsid_config_h, "$MirOS: contrib/code/jupp/config.h,v 1.10 2017/12/02 17:00:48 tg Exp $");
161 #endif
162
163 #endif /* ifndef _JOE_CONFIG_H */