perl 3.0 patch #37 (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
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