perl 3.0 patch #29 (combined patch)
[p5sagit/p5-mst-13.2.git] / os2 / config.h
CommitLineData
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