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