Commit | Line | Data |
87250799 |
1 | /* config.h |
2 | * This file was hand tailored for compiling under MS-DOS and MSC 5.1. |
3 | * Diomidis Spinellis, March 1990. |
4 | * |
5 | * Then it got mangled again for compiling under OS/2 and MSC 6.0. |
6 | * Raymond Chen, June 1990. |
7 | */ |
8 | #define OS2 /**/ |
9 | |
10 | /* OS/2 supports some additional things MS-DOS doesn't. |
11 | */ |
12 | #ifdef OS2 |
13 | #define PIPE |
14 | #define GETPPID |
15 | #define GETPRIORITY |
16 | #define SETPRIORITY |
17 | #define SYSCALL |
18 | #define KILL |
19 | #endif /* OS2 */ |
20 | |
21 | /* SUFFIX: |
22 | * This symbol, if defined, indicates that the function add_suffix has |
23 | * been supplied in a system-dependent .c file. This function is |
24 | * recommended for operating systems whose filenaming conventions |
25 | * do not permit arbitrary strings as filenames. |
26 | */ |
27 | #define SUFFIX /**/ |
28 | |
29 | /* EUNICE: |
30 | * This symbol, if defined, indicates that the program is being compiled |
31 | * under the EUNICE package under VMS. The program will need to handle |
32 | * things like files that don't go away the first time you unlink them, |
33 | * due to version numbering. It will also need to compensate for lack |
34 | * of a respectable link() command. |
35 | */ |
36 | /* VMS: |
37 | * This symbol, if defined, indicates that the program is running under |
38 | * VMS. It is currently only set in conjunction with the EUNICE symbol. |
39 | */ |
40 | /*#undef EUNICE /**/ |
41 | /*#undef VMS /**/ |
42 | |
43 | /* BIN: |
44 | * This symbol holds the name of the directory in which the user wants |
45 | * to put publicly executable images for the package in question. It |
46 | * is most often a local directory such as /usr/local/bin. |
47 | */ |
48 | #define BIN "/usr/local/bin" /**/ |
49 | |
50 | /* BYTEORDER: |
51 | * This symbol contains an encoding of the order of bytes in a long. |
52 | * Usual values (in octal) are 01234, 04321, 02143, 03412... |
53 | */ |
54 | /* CHECK */ |
55 | #define BYTEORDER 0x1234 /**/ |
56 | |
57 | /* CPPSTDIN: |
58 | * This symbol contains the first part of the string which will invoke |
59 | * the C preprocessor on the standard input and produce to standard |
60 | * output. Typical value of "cc -{" or "/lib/cpp". |
61 | */ |
62 | /* CPPMINUS: |
63 | * This symbol contains the second part of the string which will invoke |
64 | * the C preprocessor on the standard input and produce to standard |
65 | * output. This symbol will have the value "-" if CPPSTDIN needs a minus |
66 | * to specify standard input, otherwise the value is "". |
67 | */ |
68 | /* TODO */ |
69 | #define CPPSTDIN "cc -{" |
70 | #define CPPMINUS "" |
71 | |
72 | /* BCMP: |
73 | * This symbol, if defined, indicates that the bcmp routine is available |
74 | * to compare blocks of memory. If undefined, use memcmp. If that's |
75 | * not available, roll your own. |
76 | */ |
77 | /*#define BCMP /**/ |
78 | |
79 | /* BCOPY: |
80 | * This symbol, if defined, indicates that the bcopy routine is available |
81 | * to copy blocks of memory. Otherwise you should probably use memcpy(). |
82 | */ |
83 | /*#define BCOPY /**/ |
84 | |
85 | /* CHARSPRINTF: |
86 | * This symbol is defined if this system declares "char *sprintf()" in |
87 | * stdio.h. The trend seems to be to declare it as "int sprintf()". It |
88 | * is up to the package author to declare sprintf correctly based on the |
89 | * symbol. |
90 | */ |
91 | /*#define CHARSPRINTF /**/ |
92 | |
93 | /* CRYPT: |
94 | * This symbol, if defined, indicates that the crypt routine is available |
95 | * to encrypt passwords and the like. |
96 | */ |
97 | /* TODO */ |
98 | /*#define CRYPT /**/ |
99 | |
100 | /* DOSUID: |
101 | * This symbol, if defined, indicates that the C program should |
102 | * check the script that it is executing for setuid/setgid bits, and |
103 | * attempt to emulate setuid/setgid on systems that have disabled |
104 | * setuid #! scripts because the kernel can't do it securely. |
105 | * It is up to the package designer to make sure that this emulation |
106 | * is done securely. Among other things, it should do an fstat on |
107 | * the script it just opened to make sure it really is a setuid/setgid |
108 | * script, it should make sure the arguments passed correspond exactly |
109 | * to the argument on the #! line, and it should not trust any |
110 | * subprocesses to which it must pass the filename rather than the |
111 | * file descriptor of the script to be executed. |
112 | */ |
113 | /*#define DOSUID /**/ |
114 | |
115 | /* DUP2: |
116 | * This symbol, if defined, indicates that the dup2 routine is available |
117 | * to dup file descriptors. Otherwise you should use dup(). |
118 | */ |
119 | #define DUP2 /**/ |
120 | |
121 | /* FCHMOD: |
122 | * This symbol, if defined, indicates that the fchmod routine is available |
123 | * to change mode of opened files. If unavailable, use chmod(). |
124 | */ |
125 | /*#define FCHMOD /**/ |
126 | |
127 | /* FCHOWN: |
128 | * This symbol, if defined, indicates that the fchown routine is available |
129 | * to change ownership of opened files. If unavailable, use chown(). |
130 | */ |
131 | /*#define FCHOWN /**/ |
132 | |
133 | /* FCNTL: |
134 | * This symbol, if defined, indicates to the C program that it should |
135 | * include fcntl.h. |
136 | */ |
137 | /*#define FCNTL /**/ |
138 | |
139 | /* FLOCK: |
140 | * This symbol, if defined, indicates that the flock() routine is |
141 | * available to do file locking. |
142 | */ |
143 | /*#define FLOCK /**/ |
144 | |
145 | /* GETGROUPS: |
146 | * This symbol, if defined, indicates that the getgroups() routine is |
147 | * available to get the list of process groups. If unavailable, multiple |
148 | * groups are probably not supported. |
149 | */ |
150 | /*#define GETGROUPS /**/ |
151 | |
152 | /* GETHOSTENT: |
153 | * This symbol, if defined, indicates that the gethostent() routine is |
154 | * available to lookup host names in some data base or other. |
155 | */ |
156 | /*#define GETHOSTENT /**/ |
157 | |
158 | /* GETPGRP: |
159 | * This symbol, if defined, indicates that the getpgrp() routine is |
160 | * available to get the current process group. |
161 | */ |
162 | /*#define GETPGRP /**/ |
163 | |
164 | /* GETPRIORITY: |
165 | * This symbol, if defined, indicates that the getpriority() routine is |
166 | * available to get a process's priority. |
167 | */ |
168 | /*#define GETPRIORITY /**/ |
169 | |
170 | /* HTONS: |
171 | * This symbol, if defined, indicates that the htons routine (and friends) |
172 | * are available to do network order byte swapping. |
173 | */ |
174 | /* HTONL: |
175 | * This symbol, if defined, indicates that the htonl routine (and friends) |
176 | * are available to do network order byte swapping. |
177 | */ |
178 | /* NTOHS: |
179 | * This symbol, if defined, indicates that the ntohs routine (and friends) |
180 | * are available to do network order byte swapping. |
181 | */ |
182 | /* NTOHL: |
183 | * This symbol, if defined, indicates that the ntohl routine (and friends) |
184 | * are available to do network order byte swapping. |
185 | */ |
186 | /*#define HTONS /**/ |
187 | /*#define HTONL /**/ |
188 | /*#define NTOHS /**/ |
189 | /*#define NTOHL /**/ |
190 | |
191 | /* index: |
192 | * This preprocessor symbol is defined, along with rindex, if the system |
193 | * uses the strchr and strrchr routines instead. |
194 | */ |
195 | /* rindex: |
196 | * This preprocessor symbol is defined, along with index, if the system |
197 | * uses the strchr and strrchr routines instead. |
198 | */ |
199 | #define index strchr /* cultural */ |
200 | #define rindex strrchr /* differences? */ |
201 | |
202 | /* IOCTL: |
203 | * This symbol, if defined, indicates that sys/ioctl.h exists and should |
204 | * be included. |
205 | */ |
206 | /*#define IOCTL /**/ |
207 | |
208 | /* KILLPG: |
209 | * This symbol, if defined, indicates that the killpg routine is available |
210 | * to kill process groups. If unavailable, you probably should use kill |
211 | * with a negative process number. |
212 | */ |
213 | /*#define KILLPG /**/ |
214 | |
215 | /* MEMCMP: |
216 | * This symbol, if defined, indicates that the memcmp routine is available |
217 | * to compare blocks of memory. If undefined, roll your own. |
218 | */ |
219 | #define MEMCMP /**/ |
220 | |
221 | /* MEMCPY: |
222 | * This symbol, if defined, indicates that the memcpy routine is available |
223 | * to copy blocks of memory. Otherwise you should probably use bcopy(). |
224 | * If neither is defined, roll your own. |
225 | */ |
226 | #define MEMCPY /**/ |
227 | |
228 | /* MKDIR: |
229 | * This symbol, if defined, indicates that the mkdir routine is available |
230 | * to create directories. Otherwise you should fork off a new process to |
231 | * exec /bin/mkdir. |
232 | */ |
233 | #define MKDIR /**/ |
234 | |
235 | /* NDBM: |
236 | * This symbol, if defined, indicates that ndbm.h exists and should |
237 | * be included. |
238 | */ |
239 | /*#define NDBM /**/ |
240 | |
241 | /* ODBM: |
242 | * This symbol, if defined, indicates that dbm.h exists and should |
243 | * be included. |
244 | */ |
245 | /*#define ODBM /**/ |
246 | |
247 | /* READDIR: |
248 | * This symbol, if defined, indicates that the readdir routine is available |
249 | * from the C library to create directories. |
250 | */ |
251 | #define READDIR /**/ |
252 | |
253 | /* RENAME: |
254 | * This symbol, if defined, indicates that the rename routine is available |
255 | * to rename files. Otherwise you should do the unlink(), link(), unlink() |
256 | * trick. |
257 | */ |
258 | #define RENAME /**/ |
259 | |
260 | /* RMDIR: |
261 | * This symbol, if defined, indicates that the rmdir routine is available |
262 | * to remove directories. Otherwise you should fork off a new process to |
263 | * exec /bin/rmdir. |
264 | */ |
265 | #define RMDIR /**/ |
266 | |
267 | /* SETEGID: |
268 | * This symbol, if defined, indicates that the setegid routine is available |
269 | * to change the effective gid of the current program. |
270 | */ |
271 | /*#define SETEGID /**/ |
272 | |
273 | /* SETEUID: |
274 | * This symbol, if defined, indicates that the seteuid routine is available |
275 | * to change the effective uid of the current program. |
276 | */ |
277 | /*#define SETEUID /**/ |
278 | |
279 | /* SETPGRP: |
280 | * This symbol, if defined, indicates that the setpgrp() routine is |
281 | * available to set the current process group. |
282 | */ |
283 | /*#define SETPGRP /**/ |
284 | |
285 | /* SETPRIORITY: |
286 | * This symbol, if defined, indicates that the setpriority() routine is |
287 | * available to set a process's priority. |
288 | */ |
289 | /*#define SETPRIORITY /**/ |
290 | |
291 | /* SETREGID: |
292 | * This symbol, if defined, indicates that the setregid routine is available |
293 | * to change the real and effective gid of the current program. |
294 | */ |
295 | /*#define SETREGID /**/ |
296 | |
297 | /* SETREUID: |
298 | * This symbol, if defined, indicates that the setreuid routine is available |
299 | * to change the real and effective uid of the current program. |
300 | */ |
301 | /*#define SETREUID /**/ |
302 | |
303 | /* SETRGID: |
304 | * This symbol, if defined, indicates that the setrgid routine is available |
305 | * to change the real gid of the current program. |
306 | */ |
307 | /*#define SETRGID /**/ |
308 | |
309 | /* SETRUID: |
310 | * This symbol, if defined, indicates that the setruid routine is available |
311 | * to change the real uid of the current program. |
312 | */ |
313 | /*#define SETRUID /**/ |
314 | |
315 | /* SOCKET: |
316 | * This symbol, if defined, indicates that the BSD socket interface is |
317 | * supported. |
318 | */ |
319 | /* SOCKETPAIR: |
320 | * This symbol, if defined, indicates that the BSD socketpair call is |
321 | * supported. |
322 | */ |
323 | /* OLDSOCKET: |
324 | * This symbol, if defined, indicates that the 4.1c BSD socket interface |
325 | * is supported instead of the 4.2/4.3 BSD socket interface. |
326 | */ |
327 | /*#undef SOCKET /**/ |
328 | |
329 | /*#undef SOCKETPAIR /**/ |
330 | |
331 | /*#undef OLDSOCKET /**/ |
332 | |
333 | /* STATBLOCKS: |
334 | * This symbol is defined if this system has a stat structure declaring |
335 | * st_blksize and st_blocks. |
336 | */ |
337 | /*#define STATBLOCKS /**/ |
338 | |
339 | /* STDSTDIO: |
340 | * This symbol is defined if this system has a FILE structure declaring |
341 | * _ptr and _cnt in stdio.h. |
342 | */ |
343 | #define STDSTDIO /**/ |
344 | |
345 | /* STRUCTCOPY: |
346 | * This symbol, if defined, indicates that this C compiler knows how |
347 | * to copy structures. If undefined, you'll need to use a block copy |
348 | * routine of some sort instead. |
349 | */ |
350 | #define STRUCTCOPY /**/ |
351 | |
352 | /* SYMLINK: |
353 | * This symbol, if defined, indicates that the symlink routine is available |
354 | * to create symbolic links. |
355 | */ |
356 | /*#define SYMLINK /**/ |
357 | |
358 | /* SYSCALL: |
359 | * This symbol, if defined, indicates that the syscall routine is available |
360 | * to call arbitrary system calls. If undefined, that's tough. |
361 | */ |
362 | /*#define SYSCALL /**/ |
363 | |
364 | /* TMINSYS: |
365 | * This symbol is defined if this system declares "struct tm" in |
366 | * in <sys/time.h> rather than <time.h>. We can't just say |
367 | * -I/usr/include/sys because some systems have both time files, and |
368 | * the -I trick gets the wrong one. |
369 | */ |
370 | /* I_SYSTIME: |
371 | * This symbol is defined if this system has the file <sys/time.h>. |
372 | */ |
373 | /* |
374 | * I_TIME: |
375 | * This symbol is defined if time this system has the file <time.h>. |
376 | */ |
377 | /*#undef TMINSYS /**/ |
378 | /*#define I_SYSTIME /**/ |
379 | #define I_TIME |
380 | |
381 | /* VARARGS: |
382 | * This symbol, if defined, indicates to the C program that it should |
383 | * include varargs.h. |
384 | */ |
385 | #define VARARGS /**/ |
386 | |
387 | /* vfork: |
388 | * This symbol, if defined, remaps the vfork routine to fork if the |
389 | * vfork() routine isn't supported here. |
390 | */ |
391 | /*#undef vfork fork /**/ |
392 | |
393 | /* VOIDSIG: |
394 | * This symbol is defined if this system declares "void (*signal())()" in |
395 | * signal.h. The old way was to declare it as "int (*signal())()". It |
396 | * is up to the package author to declare things correctly based on the |
397 | * symbol. |
398 | */ |
399 | #define VOIDSIG /**/ |
400 | |
401 | /* VPRINTF: |
402 | * This symbol, if defined, indicates that the vprintf routine is available |
403 | * to printf with a pointer to an argument list. If unavailable, you |
404 | * may need to write your own, probably in terms of _doprnt(). |
405 | */ |
406 | /* CHARVSPRINTF: |
407 | * This symbol is defined if this system has vsprintf() returning type |
408 | * (char*). The trend seems to be to declare it as "int vsprintf()". It |
409 | * is up to the package author to declare vsprintf correctly based on the |
410 | * symbol. |
411 | */ |
412 | #define VPRINTF /**/ |
413 | /*#undef CHARVSPRINTF /**/ |
414 | |
415 | /* GIDTYPE: |
416 | * This symbol has a value like gid_t, int, ushort, or whatever type is |
417 | * used to declare group ids in the kernel. |
418 | */ |
419 | /* TODO */ |
420 | #define GIDTYPE int /**/ |
421 | |
422 | /* I_DIRENT: |
423 | * This symbol, if defined, indicates to the C program that it should |
424 | * include dirent.h. |
425 | */ |
426 | /* DIRNAMLEN: |
427 | * This symbol, if defined, indicates to the C program that the length |
428 | * of directory entry names is provided by a d_namlen field. Otherwise |
429 | * you need to do strlen() on the d_name field. |
430 | */ |
431 | /*#undef I_DIRENT /**/ |
432 | #define DIRNAMLEN /**/ |
433 | |
434 | /* I_FCNTL: |
435 | * This symbol, if defined, indicates to the C program that it should |
436 | * include fcntl.h. |
437 | */ |
438 | #define I_FCNTL /**/ |
439 | |
440 | /* I_GRP: |
441 | * This symbol, if defined, indicates to the C program that it should |
442 | * include grp.h. |
443 | */ |
444 | /*#define I_GRP /**/ |
445 | |
446 | /* I_PWD: |
447 | * This symbol, if defined, indicates to the C program that it should |
448 | * include pwd.h. |
449 | */ |
450 | /* PWQUOTA: |
451 | * This symbol, if defined, indicates to the C program that struct passwd |
452 | * contains pw_quota. |
453 | */ |
454 | /* PWAGE: |
455 | * This symbol, if defined, indicates to the C program that struct passwd |
456 | * contains pw_age. |
457 | */ |
458 | /*#define I_PWD /**/ |
459 | /*#define PWQUOTA /**/ |
460 | /*#undef PWAGE /**/ |
461 | |
462 | /* I_SYSDIR: |
463 | * This symbol, if defined, indicates to the C program that it should |
464 | * include sys/dir.h. |
465 | */ |
466 | #define I_SYSDIR /**/ |
467 | |
468 | /* I_SYSIOCTL: |
469 | * This symbol, if defined, indicates that sys/ioctl.h exists and should |
470 | * be included. |
471 | */ |
472 | /*#define I_SYSIOCTL /**/ |
473 | |
474 | /* I_VARARGS: |
475 | * This symbol, if defined, indicates to the C program that it should |
476 | * include varargs.h. |
477 | */ |
478 | #define I_VARARGS /**/ |
479 | |
480 | /* INTSIZE: |
481 | * This symbol contains the size of an int, so that the C preprocessor |
482 | * can make decisions based on it. |
483 | */ |
484 | #define INTSIZE 2 /**/ |
485 | |
486 | /* RANDBITS: |
487 | * This symbol contains the number of bits of random number the rand() |
488 | * function produces. Usual values are 15, 16, and 31. |
489 | */ |
490 | #define RANDBITS 31 /**/ |
491 | |
492 | /* SIG_NAME: |
493 | * This symbol contains an list of signal names in order. |
494 | */ |
495 | #ifdef OS2 |
496 | #define SIG_NAME "ZERO","HUP","INT","QUIT","ILL","TRAP","IOT","EMT","FPE",\ |
497 | /* 0 1 2 3 4 5 6 7 8 */\ |
498 | "KILL","BUS","SEGV","SYS","PIPE","ALRM","TERM","USR1","USR2","CLD",\ |
499 | /* 9 10 11 12 13 14 15 16 17 18 */\ |
500 | "PWR","USR3","BREAK","ABRT" |
501 | /*19 20 21 22 */ |
502 | #else |
503 | #define SIG_NAME "ZERO","HUP","INT","QUIT","ILL","TRAP","IOT","EMT","FPE","KILL","BUS","SEGV","SYS","PIPE","ALRM","TERM","URG","STOP","TSTP","CONT","CHLD","TTIN","TTOU","IO","XCPU","XFSZ","VTALRM","PROF","WINCH","USR1","USR2" /**/ |
504 | #endif /* OS2 */ |
505 | |
506 | /* STDCHAR: |
507 | * This symbol is defined to be the type of char used in stdio.h. |
508 | * It has the values "unsigned char" or "char". |
509 | */ |
510 | #define STDCHAR char /**/ |
511 | |
512 | /* UIDTYPE: |
513 | * This symbol has a value like uid_t, int, ushort, or whatever type is |
514 | * used to declare user ids in the kernel. |
515 | */ |
516 | #define UIDTYPE int /**/ |
517 | |
518 | /* VOIDFLAGS: |
519 | * This symbol indicates how much support of the void type is given by this |
520 | * compiler. What various bits mean: |
521 | * |
522 | * 1 = supports declaration of void |
523 | * 2 = supports arrays of pointers to functions returning void |
524 | * 4 = supports comparisons between pointers to void functions and |
525 | * addresses of void functions |
526 | * |
527 | * The package designer should define VOIDUSED to indicate the requirements |
528 | * of the package. This can be done either by #defining VOIDUSED before |
529 | * including config.h, or by defining defvoidused in Myinit.U. If the |
530 | * latter approach is taken, only those flags will be tested. If the |
531 | * level of void support necessary is not present, defines void to int. |
532 | */ |
533 | #ifndef VOIDUSED |
534 | #define VOIDUSED 7 |
535 | #endif |
536 | #define VOIDFLAGS 7 |
537 | #if (VOIDFLAGS & VOIDUSED) != VOIDUSED |
538 | #define void int /* is void to be avoided? */ |
539 | #define M_VOID /* Xenix strikes again */ |
540 | #endif |
541 | |
542 | /* PRIVLIB: |
543 | * This symbol contains the name of the private library for this package. |
544 | * The library is private in the sense that it needn't be in anyone's |
545 | * execution path, but it should be accessible by the world. The program |
546 | * should be prepared to do ^ expansion. |
547 | */ |
548 | #define PRIVLIB "/usr/local/lib/perl" /**/ |
549 | |
550 | /* |
551 | * BUGGY_MSC: |
552 | * This symbol is defined if you are the unfortunate owner of a buggy |
553 | * Microsoft C compiler and want to use intrinsic functions. Versions |
554 | * up to 5.1 are known conform to this definition. |
555 | */ |
556 | /*#define BUGGY_MSC /**/ |
557 | |
558 | /* |
559 | * BINARY: |
560 | * This symbol is defined if you run under an operating system that |
561 | * distinguishes between binary and text files. If so the function |
562 | * setmode will be used to set the file into binary mode. |
563 | */ |
564 | #define BINARY |
565 | |
566 | #define S_ISUID 0 |
567 | #define S_ISGID 0 |
568 | #define CASTNEGFLOAT |