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