This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
add Data-Dumper, up patchlevel to 71, various misc tweaks to
[perl5.git] / win32 / config_H.vc
index c3b8dc7..b5c5c49 100644 (file)
@@ -7,55 +7,24 @@
  * that running config_h.SH again will wipe out any changes you've made.
  * For a more permanent change edit config.sh and rerun config_h.SH.
  *
- * $Id: Config_h.U,v 3.0.1.4 1995/09/25 09:10:49 ram Exp $
+ * $Id: Config_h.U,v 3.0.1.5 1997/02/28 14:57:43 ram Exp $
  */
 
-/* Configuration time: undef
- * Configured by: nick
- * Target system: 
+/*
+ * Package name      : perl5
+ * Source directory  : 
+ * Configuration time: undef
+ * Configured by     : gsar
+ * Target system     : 
  */
 
 #ifndef _config_h_
 #define _config_h_
 
-#ifdef PERL_OBJECT
-#ifdef PERL_GLOBAL_STRUCT
-#error PERL_GLOBAL_STRUCT cannot be defined with PERL_OBJECT
-#endif
-#define win32_perllib_path PerlEnv_lib_path
-#endif
-
-
-/* MEM_ALIGNBYTES:
- *     This symbol contains the number of bytes required to align a
- *     double. Usual values are 2, 4 and 8.
- *     On NeXT starting with 3.2, you can build "Fat" Multiple Architecture
- *     Binaries (MAB) for targets with varying alignment.  This only matters
- *     for perl, where the config.h can be generated and installed on one
- *     system, and used by a different architecture to build an extension.
- *     The default is eight, for safety.
- */
-#ifndef NeXT
-#define MEM_ALIGNBYTES 8       /**/
-#else  /* NeXT */
-#ifdef __m68k__
-#define MEM_ALIGNBYTES 2
-#else
-#ifdef __i386__
-#define MEM_ALIGNBYTES 4
-#else /* __hppa__, __sparc__ and default for unknown architectures */
-#define MEM_ALIGNBYTES 8
-#endif /* __i386__ */
-#endif /* __m68k__ */
-#endif /* NeXT */
-
-/* ARCHNAME:
- *     This symbol holds a string representing the architecture name.
- *     It may be used to construct an architecture-dependant pathname
- *     where library files may be held under a private library, for
- *     instance.
+/* LOC_SED:
+ *     This symbol holds the complete pathname to the sed program.
  */
-#define ARCHNAME "MSWin32-x86"         /**/
+#define LOC_SED        ""      /**/
 
 /* BIN:
  *     This symbol holds the path of the bin directory where the package will
  *     This symbol is the filename expanded version of the BIN symbol, for
  *     programs that do not want to deal with that at run-time.
  */
-#define BIN "c:\\perl5004.5x\\bin"     /**/
-#define BIN_EXP "c:\\perl5004.5x\\bin" /**/
-
-/* CAT2:
- *     This macro catenates 2 tokens together.
- */
-/* STRINGIFY:
- *     This macro surrounds its token with double quotes.
- */
-#if 42 == 1
-#define CAT2(a,b)a/**/b
-#define CAT3(a,b,c)a/**/b/**/c
-#define CAT4(a,b,c,d)a/**/b/**/c/**/d
-#define CAT5(a,b,c,d,e)a/**/b/**/c/**/d/**/e
-#define STRINGIFY(a)"a"
-               /* If you can get stringification with catify, tell me how! */
-#endif
-#if 42 == 42
-#define CAT2(a,b)a ## b
-#define CAT3(a,b,c)a ## b ## c
-#define CAT4(a,b,c,d)a ## b ## c ## d
-#define CAT5(a,b,c,d,e)a ## b ## c ## d ## e
-#define StGiFy(a)# a
-#define STRINGIFY(a)StGiFy(a)
-#define SCAT2(a,b)StGiFy(a) StGiFy(b)
-#define SCAT3(a,b,c)StGiFy(a) StGiFy(b) StGiFy(c)
-#define SCAT4(a,b,c,d)StGiFy(a) StGiFy(b) StGiFy(c) StGiFy(d)
-#define SCAT5(a,b,c,d,e)StGiFy(a) StGiFy(b) StGiFy(c) StGiFy(d) StGiFy(e)
-#endif
-#ifndef CAT2
-#include "Bletch: How does this C preprocessor catenate tokens?"
-#endif
+#define BIN "c:\\perl\\5.00471\\bin\\MSWin32-x86"      /**/
+#define BIN_EXP "c:\\perl\\5.00471\\bin\\MSWin32-x86"  /**/
 
 /* CPPSTDIN:
  *     This symbol contains the first part of the string which will invoke
  */
 /*#define HAS_BZERO    /**/
 
-/* CASTI32:
- *     This symbol is defined if the C compiler can cast negative
- *     or large floating point numbers to 32-bit ints.
- */
-#define        CASTI32         /**/
-
-/* CASTNEGFLOAT:
- *     This symbol is defined if the C compiler can cast negative
- *     numbers to unsigned longs, ints and shorts.
- */
-/* CASTFLAGS:
- *     This symbol contains flags that say what difficulties the compiler
- *     has casting odd floating values to unsigned long:
- *             0 = ok
- *             1 = couldn't cast < 0
- *             2 = couldn't cast >= 0x80000000
- *             4 = couldn't cast in argument expression list
- */
-#define        CASTNEGFLOAT            /**/
-#define CASTFLAGS 0            /**/
-
 /* HAS_CHOWN:
  *     This symbol, if defined, indicates that the chown routine is
  *     available.
  */
 #define        HAS_CHSIZE              /**/
 
-/* VOID_CLOSEDIR:
- *     This symbol, if defined, indicates that the closedir() routine
- *     does not return a value.
- */
-/*#define VOID_CLOSEDIR                /**/
-
 /* HASCONST:
  *     This symbol, if defined, indicates that this C compiler knows about
  *     the const type. There is no need to actually test for that symbol
  */
 #define HAS_DLERROR    /**/
 
+/* SETUID_SCRIPTS_ARE_SECURE_NOW:
+ *     This symbol, if defined, indicates that the bug that prevents
+ *     setuid scripts from being secure is not present in this kernel.
+ */
+/* DOSUID:
+ *     This symbol, if defined, indicates that the C program should
+ *     check the script that it is executing for setuid/setgid bits, and
+ *     attempt to emulate setuid/setgid on systems that have disabled
+ *     setuid #! scripts because the kernel can't do it securely.
+ *     It is up to the package designer to make sure that this emulation
+ *     is done securely.  Among other things, it should do an fstat on
+ *     the script it just opened to make sure it really is a setuid/setgid
+ *     script, it should make sure the arguments passed correspond exactly
+ *     to the argument on the #! line, and it should not trust any
+ *     subprocesses to which it must pass the filename rather than the
+ *     file descriptor of the script to be executed.
+ */
+/*#define SETUID_SCRIPTS_ARE_SECURE_NOW        /**/
+/*#define DOSUID               /**/
+
 /* HAS_DUP2:
  *     This symbol, if defined, indicates that the dup2 routine is
  *     available to duplicate file descriptors.
  *     available to get the list of process groups.  If unavailable, multiple
  *     groups are probably not supported.
  */
-/* HAS_SETGROUPS:
- *     This symbol, if defined, indicates that the setgroups() routine is
- *     available to set the list of process groups.  If unavailable, multiple
- *     groups are probably not supported.
- */
 /*#define HAS_GETGROUPS                /**/
-/*#define HAS_SETGROUPS                /**/
-
-/* HAS_GETHOSTENT:
- *     This symbol, if defined, indicates that the gethostent routine is
- *     available to lookup host names in some data base or other.
- */
-/*#define HAS_GETHOSTENT               /**/
-
-/* HAS_GETHOSTBYADDR:
- *     This symbol, if defined, indicates that the gethostbyaddr routine is
- *     available to lookup hosts by their IP addresses.
- */
-#define HAS_GETHOSTBYADDR              /**/
-
-/* Netdb_host_t:
- *     This symbol holds the type used for the 1st argument
- *     to gethostbyaddr().
- */
-#define Netdb_host_t           char *
-
-/* Netdb_hlen_t:
- *     This symbol holds the type used for the 2nd argument
- *     to gethostbyaddr().
- */
-#define Netdb_hlen_t           int
-
-/* HAS_GETHOSTBYNAME:
- *     This symbol, if defined, indicates that the gethostbyname routine is
- *     available to lookup hosts by their DNS names.
- */
-#define HAS_GETHOSTBYNAME              /**/
-
-/* Netdb_name_t:
- *     This symbol holds the type used for the 1st argument
- *     to gethostbyname(), the 1st argument to getnetbyname(),
- *     the 1st argument to getprotobyname(), the 1st argument to
- *     getservbyname(), the 2nd argument to getservbyname(),
- *     and the 2nd argument to getservbyport().
- */
-#define Netdb_name_t           char *
-
-/* HAS_GETNETBYADDR:
- *     This symbol, if defined, indicates that the getnetbyaddr routine is
- *     available to lookup networks by their IP addresses.
- */
-/*#define HAS_GETNETBYADDR             /**/
-
-/* Netdb_net_t:
- *     This symbol holds the type used for the 1st argument
- *     to getnetbyaddr().
- */
-#define Netdb_net_t            long
-
-/* HAS_GETNETBYNAME:
- *     This symbol, if defined, indicates that the getnetbyname routine is
- *     available to lookup networks by their names.
- */
-/*#define HAS_GETNETBYNAME             /**/
-
-/* HAS_GETPROTOBYNAME:
- *     This symbol, if defined, indicates that the getprotobyname routine is
- *     available to lookup protocols by their names.
- */
-#define HAS_GETPROTOBYNAME             /**/
-
-/* HAS_GETPROTOBYNUMBER:
- *     This symbol, if defined, indicates that the getprotobynumber routine is
- *     available to lookup protocols by their numbers.
- */
-#define HAS_GETPROTOBYNUMBER           /**/
-
-/* HAS_GETSERVBYNAME:
- *     This symbol, if defined, indicates that the getservbyname routine is
- *     available to lookup services by their names.
- */
-#define HAS_GETSERVBYNAME              /**/
-
-/* HAS_GETSERVBYPORT:
- *     This symbol, if defined, indicates that the getservbyport routine is
- *     available to lookup services by their ports.
- */
-#define HAS_GETSERVBYPORT              /**/
 
 /* HAS_UNAME:
  *     This symbol, if defined, indicates that the C program may use the
  */
 #define HAS_GETLOGIN           /**/
 
+/* HAS_GETPGID:
+ *     This symbol, if defined, indicates to the C program that 
+ *     the getpgid(pid) function is available to get the
+ *     process group id.
+ */
+/*#define HAS_GETPGID          /**/
+
+/* HAS_GETPGRP:
+ *     This symbol, if defined, indicates that the getpgrp routine is
+ *     available to get the current process group.
+ */
+/* USE_BSD_GETPGRP:
+ *     This symbol, if defined, indicates that getpgrp needs one
+ *     arguments whereas USG one needs none.
+ */
+/*#define HAS_GETPGRP          /**/
+/*#define USE_BSD_GETPGRP      /**/
+
 /* HAS_GETPGRP2:
  *     This symbol, if defined, indicates that the getpgrp2() (as in DG/UX)
  *     routine is available to get the current process group.
 #define HAS_NTOHL              /**/
 #define HAS_NTOHS              /**/
 
-/* HAS_ISASCII:
- *     This manifest constant lets the C program know that isascii 
- *     is available.
+/* HAS_INET_ATON:
+ *     This symbol, if defined, indicates to the C program that the
+ *     inet_aton() function is available to parse IP address "dotted-quad"
+ *     strings.
  */
-#define HAS_ISASCII            /**/
+/*#define HAS_INET_ATON                /**/
 
 /* HAS_KILLPG:
  *     This symbol, if defined, indicates that the killpg routine is available
  */
 /*#define HAS_MKFIFO           /**/
 
+/* HAS_MKNOD:
+ *     This symbol, if defined, indicates that the mknod routine is
+ *     available to create character and block special files. Otherwise,
+ *     mknod should be able to do it for you. However, if mknod is there,
+ *     mknod might require super-user privileges which mknod will not.
+ */
+/*#define HAS_MKNOD            /**/
+
 /* HAS_MKTIME:
  *     This symbol, if defined, indicates that the mktime routine is
  *     available.
  */
 /*#define HAS_NICE             /**/
 
-/* HAS_OPEN3:
- *     This manifest constant lets the C program know that the three
- *     argument form of open(2) is available.
- */
-/*#define HAS_OPEN3            /**/
-
 /* HAS_PATHCONF:
  *     This symbol, if defined, indicates that pathconf() is available
  *     to determine file-system related limits and options associated
 
 /* HAS_POLL:
  *     This symbol, if defined, indicates that the poll routine is
- *     available to poll active file descriptors.
+ *     available to poll active file descriptors. You may safely
+ *     include <poll.h> when this symbol is defined.
  */
 /*#define HAS_POLL             /**/
 
-/* HAS_PTHREAD_YIELD:
- *     This symbol, if defined, indicates that the pthread_yield routine is
- *     available to yield the execution of the current thread.
- */
-#undef HAS_PTHREAD_YIELD
-
 /* HAS_READDIR:
  *     This symbol, if defined, indicates that the readdir routine is
  *     available to read directory entries. You may have to include
  */
 #define HAS_READDIR            /**/
 
-/* HAS_SCHED_YIELD:
- *     This symbol, if defined, indicates that the sched_yield
- *     routine is available to yield the execution of the current thread.
- */
-#undef HAS_SCHED_YIELD
-
 /* HAS_SEEKDIR:
  *     This symbol, if defined, indicates that the seekdir routine is
  *     available. You may have to include <dirent.h>. See I_DIRENT.
  */
 #define HAS_RMDIR              /**/
 
-/* HAS_SAFE_BCOPY:
- *     This symbol, if defined, indicates that the bcopy routine is available
- *     to copy potentially overlapping memory blocks. Otherwise you should
- *     probably use memmove() or memcpy(). If neither is defined, roll your
- *     own version.
- */
-/*#define HAS_SAFE_BCOPY       /**/
-
-/* HAS_SAFE_MEMCPY:
- *     This symbol, if defined, indicates that the memcpy routine is available
- *     to copy potentially overlapping memory blocks. Otherwise you should
- *     probably use memmove() or memcpy(). If neither is defined, roll your
- *     own version.
- */
-/*#define HAS_SAFE_MEMCPY      /**/
-
-/* HAS_SANE_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     and can be used to compare relative magnitudes of chars with their high
- *     bits set.  If it is not defined, roll your own version.
- */
-#define HAS_SANE_MEMCMP        /**/
-
 /* HAS_SELECT:
  *     This symbol, if defined, indicates that the select routine is
  *     available to select active file descriptors. If the timeout field
  */
 #define HAS_SETLOCALE  /**/
 
+/* HAS_SETPGID:
+ *     This symbol, if defined, indicates that the setpgid(pid, gpid)
+ *     routine is available to set process group ID.
+ */
+/*#define HAS_SETPGID  /**/
+
+/* HAS_SETPGRP:
+ *     This symbol, if defined, indicates that the setpgrp routine is
+ *     available to set the current process group.
+ */
+/* USE_BSD_SETPGRP:
+ *     This symbol, if defined, indicates that setpgrp needs two
+ *     arguments whereas USG one needs none.  See also HAS_SETPGID
+ *     for a POSIX interface.
+ */
+/*#define HAS_SETPGRP          /**/
+/*#define USE_BSD_SETPGRP      /**/
+
 /* HAS_SETPGRP2:
  *     This symbol, if defined, indicates that the setpgrp2() (as in DG/UX)
  *     routine is available to set the current process group.
 #define Shmat_t void * /**/
 /*#define HAS_SHMAT_PROTOTYPE  /**/
 
-/* HAS_SIGACTION:
- *     This symbol, if defined, indicates that Vr4's sigaction() routine
- *     is available.
- */
-/*#define HAS_SIGACTION        /**/
-
-/* HAS_SOCKET:
- *     This symbol, if defined, indicates that the BSD socket interface is
- *     supported.
- */
-/* HAS_SOCKETPAIR:
- *     This symbol, if defined, indicates that the BSD socketpair() call is
- *     supported.
- */
-#define HAS_SOCKET             /**/
-/*#define HAS_SOCKETPAIR       /**/
-
 /* USE_STAT_BLOCKS:
  *     This symbol is defined if this system has a stat structure declaring
  *     st_blksize and st_blocks.
  */
 /*#define USE_STAT_BLOCKS      /**/
 
-/* USE_STDIO_PTR:
- *     This symbol is defined if the _ptr and _cnt fields (or similar)
- *     of the stdio FILE structure can be used to access the stdio buffer
- *     for a file handle.  If this is defined, then the FILE_ptr(fp)
- *     and FILE_cnt(fp) macros will also be defined and should be used
- *     to access these fields.
- */
-/* FILE_ptr:
- *     This macro is used to access the _ptr field (or equivalent) of the
- *     FILE structure pointed to by its argument. This macro will always be
- *     defined if USE_STDIO_PTR is defined.
- */
-/* STDIO_PTR_LVALUE:
- *     This symbol is defined if the FILE_ptr macro can be used as an
- *     lvalue.
- */
-/* FILE_cnt:
- *     This macro is used to access the _cnt field (or equivalent) of the
- *     FILE structure pointed to by its argument. This macro will always be
- *     defined if USE_STDIO_PTR is defined.
- */
-/* STDIO_CNT_LVALUE:
- *     This symbol is defined if the FILE_cnt macro can be used as an
- *     lvalue.
- */
-#define USE_STDIO_PTR  /**/
-#ifdef USE_STDIO_PTR
-#define FILE_ptr(fp)   ((fp)->_ptr)
-#define STDIO_PTR_LVALUE               /**/
-#define FILE_cnt(fp)   ((fp)->_cnt)
-#define STDIO_CNT_LVALUE               /**/
-#endif
-
-/* USE_STDIO_BASE:
- *     This symbol is defined if the _base field (or similar) of the
- *     stdio FILE structure can be used to access the stdio buffer for
- *     a file handle.  If this is defined, then the FILE_base(fp) macro
- *     will also be defined and should be used to access this field.
- *     Also, the FILE_bufsiz(fp) macro will be defined and should be used
- *     to determine the number of bytes in the buffer.  USE_STDIO_BASE
- *     will never be defined unless USE_STDIO_PTR is.
- */
-/* FILE_base:
- *     This macro is used to access the _base field (or equivalent) of the
- *     FILE structure pointed to by its argument. This macro will always be
- *     defined if USE_STDIO_BASE is defined.
- */
-/* FILE_bufsiz:
- *     This macro is used to determine the number of bytes in the I/O
- *     buffer pointed to by _base field (or equivalent) of the FILE
- *     structure pointed to its argument. This macro will always be defined
- *     if USE_STDIO_BASE is defined.
- */
-#define USE_STDIO_BASE         /**/
-#ifdef USE_STDIO_BASE
-#define FILE_base(fp)  ((fp)->_base)
-#define FILE_bufsiz(fp)        ((fp)->_cnt + (fp)->_ptr - (fp)->_base)
-#endif
-
-/* HAS_STRCHR:
- *     This symbol is defined to indicate that the strchr()/strrchr()
- *     functions are available for string searching. If not, try the
- *     index()/rindex() pair.
+/* HAS_STRCHR:
+ *     This symbol is defined to indicate that the strchr()/strrchr()
+ *     functions are available for string searching. If not, try the
+ *     index()/rindex() pair.
  */
 /* HAS_INDEX:
  *     This symbol is defined to indicate that the index()/rindex()
  */
 /*#define HAS_TCSETPGRP                /**/
 
-/* Time_t:
- *     This symbol holds the type returned by time(). It can be long,
- *     or time_t on BSD sites (in which case <sys/types.h> should be
- *     included).
- */
-#define Time_t time_t          /* Time type */
-
-/* HAS_TIMES:
- *     This symbol, if defined, indicates that the times() routine exists.
- *     Note that this became obsolete on some systems (SUNOS), which now
- * use getrusage(). It may be necessary to include <sys/times.h>.
- */
-#define HAS_TIMES              /**/
-
 /* HAS_TRUNCATE:
  *     This symbol, if defined, indicates that the truncate routine is
  *     available to truncate files.
  */
 /*#define HAS_VFORK    /**/
 
-/* Signal_t:
- *     This symbol's value is either "void" or "int", corresponding to the
- *     appropriate return type of a signal handler.  Thus, you can declare
- *     a signal handler using "Signal_t (*handler)()", and define the
- *     handler using "Signal_t handler(sig)".
- */
-#define Signal_t void  /* Signal handler's return type */
-
 /* HASVOLATILE:
  *     This symbol, if defined, indicates that this C compiler knows about
  *     the volatile declaration.
 #define volatile
 #endif
 
-/* HAS_VPRINTF:
- *     This symbol, if defined, indicates that the vprintf routine is available
- *     to printf with a pointer to an argument list.  If unavailable, you
- *     may need to write your own, probably in terms of _doprnt().
- */
-/* USE_CHAR_VSPRINTF:
- *     This symbol is defined if this system has vsprintf() returning type
- *     (char*).  The trend seems to be to declare it as "int vsprintf()".  It
- *     is up to the package author to declare vsprintf correctly based on the
- *     symbol.
- */
-#define HAS_VPRINTF    /**/
-/*#define USE_CHAR_VSPRINTF    /**/
-
 /* HAS_WAIT4:
  *     This symbol, if defined, indicates that wait4() exists.
  */
  *     This symbol, if defined, indicates that the waitpid routine is
  *     available to wait for child process.
  */
-/*#define HAS_WAITPID  /**/
+#define HAS_WAITPID    /**/
 
 /* HAS_WCSTOMBS:
  *     This symbol, if defined, indicates that the wcstombs routine is
  */
 #define HAS_WCTOMB             /**/
 
-/* Fpos_t:
- *     This symbol holds the type used to declare file positions in libc.
- *     It can be fpos_t, long, uint, etc... It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
- */
-#define Fpos_t fpos_t          /* File position type */
-
-/* Gid_t:
- *     This symbol holds the return type of getgid() and the type of
- *     argument to setrgid() and related functions.  Typically,
- *     it is the type of group ids in the kernel. It can be int, ushort,
- *     uid_t, etc... It may be necessary to include <sys/types.h> to get
- *     any typedef'ed information.
- */
-#define Gid_t gid_t            /* Type for getgid(), etc... */
-
-/* Groups_t:
- *     This symbol holds the type used for the second argument to
- *     [gs]etgroups().  Usually, this is the same of gidtype, but
- *     sometimes it isn't.  It can be int, ushort, uid_t, etc... 
- *     It may be necessary to include <sys/types.h> to get any 
- *     typedef'ed information.  This is only required if you have
- *     getgroups() or setgroups().
- */
-#if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS)
-#define Groups_t gid_t /* Type for 2nd arg to [gs]etgroups() */
-#endif
-
-/* DB_Prefix_t:
- *     This symbol contains the type of the prefix structure element
- *     in the <db.h> header file.  In older versions of DB, it was
- *     int, while in newer ones it is u_int32_t.
+/* I_DBM:
+ *     This symbol, if defined, indicates that <dbm.h> exists and should
+ *     be included.
  */
-/* DB_Hash_t:
- *     This symbol contains the type of the prefix structure element
- *     in the <db.h> header file.  In older versions of DB, it was
- *     int, while in newer ones it is size_t.
+/* I_RPCSVC_DBM:
+ *     This symbol, if defined, indicates that <rpcsvc/dbm.h> exists and
+ *     should be included.
  */
-#define DB_Hash_t      int             /**/
-#define DB_Prefix_t    int     /**/
+/*#define I_DBM        /**/
+#define I_RPCSVC_DBM   /**/
 
 /* I_DIRENT:
  *     This symbol, if defined, indicates to the C program that it should
  */
 #define I_LIMITS               /**/
 
+/* I_LOCALE:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <locale.h>.
+ */
+#define        I_LOCALE                /**/
+
 /* I_MATH:
  *     This symbol, if defined, indicates to the C program that it should
  *     include <math.h>.
  */
 /*#define I_NETINET_IN /**/
 
-/* I_NETDB:
- *     This symbol, if defined, indicates that <netdb.h> exists and 
- *     should be included.
- */
-/*#define I_NETDB              /**/
-
-/* I_PWD:
+/* I_SFIO:
  *     This symbol, if defined, indicates to the C program that it should
- *     include <pwd.h>.
- */
-/* PWQUOTA:
- *     This symbol, if defined, indicates to the C program that struct passwd
- *     contains pw_quota.
- */
-/* PWAGE:
- *     This symbol, if defined, indicates to the C program that struct passwd
- *     contains pw_age.
- */
-/* PWCHANGE:
- *     This symbol, if defined, indicates to the C program that struct passwd
- *     contains pw_change.
- */
-/* PWCLASS:
- *     This symbol, if defined, indicates to the C program that struct passwd
- *     contains pw_class.
- */
-/* PWEXPIRE:
- *     This symbol, if defined, indicates to the C program that struct passwd
- *     contains pw_expire.
- */
-/* PWCOMMENT:
- *     This symbol, if defined, indicates to the C program that struct passwd
- *     contains pw_comment.
+ *     include <sfio.h>.
  */
-/*#define I_PWD                /**/
-/*#define PWQUOTA      /**/
-/*#define PWAGE        /**/
-/*#define PWCHANGE     /**/
-/*#define PWCLASS      /**/
-/*#define PWEXPIRE     /**/
-/*#define PWCOMMENT    /**/
+/*#define      I_SFIO          /**/
 
 /* I_STDDEF:
  *     This symbol, if defined, indicates that <stddef.h> exists and should
  */
 /*#define I_SYS_SELECT /**/
 
+/* I_SYS_STAT:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/stat.h>.
+ */
+#define        I_SYS_STAT              /**/
+
 /* I_SYS_TIMES:
  *     This symbol, if defined, indicates to the C program that it should
  *     include <sys/times.h>.
 /*#define I_TERMIOS            /**/
 /*#define I_SGTTY              /**/
 
-/* I_TIME:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <time.h>.
- */
-/* I_SYS_TIME:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/time.h>.
- */
-/* I_SYS_TIME_KERNEL:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/time.h> with KERNEL defined.
- */
-#define I_TIME         /**/
-/*#define I_SYS_TIME           /**/
-/*#define I_SYS_TIME_KERNEL            /**/
-
 /* I_UNISTD:
  *     This symbol, if defined, indicates to the C program that it should
  *     include <unistd.h>.
  */
 #define I_UTIME                /**/
 
+/* I_VALUES:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <values.h> to get definition of symbols like MINFLOAT or
+ *     MAXLONG, i.e. machine dependant limitations.  Probably, you
+ *     should use <limits.h> instead, if it is available.
+ */
+/*#define I_VALUES             /**/
+
 /* I_STDARG:
  *     This symbol, if defined, indicates that <stdarg.h> exists and should
  *     be included.
  */
 /*#define I_VFORK      /**/
 
-/* INTSIZE:
- *     This symbol contains the value of sizeof(int) so that the C
- *     preprocessor can make decisions based on it.
- */
-/* LONGSIZE:
- *     This symbol contains the value of sizeof(long) so that the C
- *     preprocessor can make decisions based on it.
- */
-/* SHORTSIZE:
- *     This symbol contains the value of sizeof(short) so that the C
- *     preprocessor can make decisions based on it.
+/* Free_t:
+ *     This variable contains the return type of free().  It is usually
+ * void, but occasionally int.
  */
-#define INTSIZE 4              /**/
-#define LONGSIZE 4             /**/
-#define SHORTSIZE 2            /**/
-
-/* Off_t:
- *     This symbol holds the type used to declare offsets in the kernel.
- *     It can be int, long, off_t, etc... It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
+/* Malloc_t:
+ *     This symbol is the type of pointer returned by malloc and realloc.
  */
-#define Off_t off_t            /* <offset> type */
+#define Malloc_t void *                        /**/
+#define Free_t void                    /**/
 
-/* Mode_t:
- *     This symbol holds the type used to declare file modes 
- *     for systems calls.  It is usually mode_t, but may be
- *     int or unsigned short.  It may be necessary to include <sys/types.h>
- *     to get any typedef'ed information.
+/* MYMALLOC:
+ *     This symbol, if defined, indicates that we're using our own malloc.
  */
-#define Mode_t mode_t   /* file mode parameter for system calls */
+/*#define MYMALLOC                     /**/
 
-/* VAL_O_NONBLOCK:
- *     This symbol is to be used during open() or fcntl(F_SETFL) to turn on
- *     non-blocking I/O for the file descriptor. Note that there is no way
- *     back, i.e. you cannot turn it blocking again this way. If you wish to
- *     alternatively switch between blocking and non-blocking, use the
- *     ioctl(FIOSNBIO) call instead, but that is not supported by all devices.
- */
-/* VAL_EAGAIN:
- *     This symbol holds the errno error code set by read() when no data was
- *     present on the non-blocking file descriptor.
- */
-/* RD_NODATA:
- *     This symbol holds the return code from read() when no data is present
- *     on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is
- *     not defined, then you can't distinguish between no data and EOF by
- *     issuing a read(). You'll have to find another way to tell for sure!
- */
-/* EOF_NONBLOCK:
- *     This symbol, if defined, indicates to the C program that a read() on
- *     a non-blocking file descriptor will return 0 on EOF, and not the value
- *     held in RD_NODATA (-1 usually, in that case!).
- */
-#define VAL_O_NONBLOCK O_NONBLOCK
-#define VAL_EAGAIN EAGAIN
-#define RD_NODATA -1
-#define EOF_NONBLOCK
-
-/* CAN_PROTOTYPE:
- *     If defined, this macro indicates that the C compiler can handle
- *     function prototypes.
+/* CAN_PROTOTYPE:
+ *     If defined, this macro indicates that the C compiler can handle
+ *     function prototypes.
  */
 /* _:
  *     This macro is used to declare function parameters for folks who want
 #define        _(args) ()
 #endif
 
-/* RANDBITS:
- *     This symbol contains the number of bits of random number the rand()
- *     function produces.  Usual values are 15, 16, and 31.
- */
-#define RANDBITS 15            /**/
-
-/* Select_fd_set_t:
- *     This symbol holds the type used for the 2nd, 3rd, and 4th
- *     arguments to select.  Usually, this is 'fd_set *', if HAS_FD_SET
- *     is defined, and 'int *' otherwise.  This is only useful if you 
- *     have select(), of course.
- */
-#define Select_fd_set_t        Perl_fd_set *   /**/
-
-/* Size_t:
- *     This symbol holds the type used to declare length parameters
- *     for string functions.  It is usually size_t, but may be
- *     unsigned long, int, etc.  It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
- */
-#define Size_t size_t   /* length paramater for string functions */
-
-/* SSize_t:
- *     This symbol holds the type used by functions that return
- *     a count of bytes or an error condition.  It must be a signed type.
- *     It is usually ssize_t, but may be long or int, etc.
- *     It may be necessary to include <sys/types.h> or <unistd.h>
- *     to get any typedef'ed information.
- *     We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
+/* SH_PATH:
+ *     This symbol contains the full pathname to the shell used on this
+ *     on this system to execute Bourne shell scripts.  Usually, this will be
+ *     /bin/sh, though it's possible that some systems will have /bin/ksh,
+ *     /bin/pdksh, /bin/ash, /bin/bash, or even something such as
+ *     D:/bin/sh.exe.
  */
-#define SSize_t int     /* signed count of bytes */
+#define SH_PATH "cmd /x /c"  /**/
 
 /* STDCHAR:
  *     This symbol is defined to be the type of char used in stdio.h.
  */
 #define STDCHAR char   /**/
 
-/* Uid_t:
- *     This symbol holds the type used to declare user ids in the kernel.
- *     It can be int, ushort, uid_t, etc... It may be necessary to include
- *     <sys/types.h> to get any typedef'ed information.
- */
-#define Uid_t uid_t            /* UID type */
-
-/* LOC_SED:
- *     This symbol holds the complete pathname to the sed program.
- */
-#define LOC_SED        ""      /**/
-
-/* OSNAME:
- *     This symbol contains the name of the operating system, as determined
- *     by Configure.  You shouldn't rely on it too much; the specific
- *     feature tests from Configure are generally more reliable.
- */
-#define OSNAME "MSWin32"               /**/
-
-/* ARCHLIB:
- *     This variable, if defined, holds the name of the directory in
- *     which the user wants to put architecture-dependent public
- *     library files for perl5.  It is most often a local directory
- *     such as /usr/local/lib.  Programs using this variable must be
- *     prepared to deal with filename expansion.  If ARCHLIB is the
- *     same as PRIVLIB, it is not defined, since presumably the
- *     program already searches PRIVLIB.
- */
-/* ARCHLIB_EXP:
- *     This symbol contains the ~name expanded version of ARCHLIB, to be used
- *     in programs that are not prepared to deal with ~ expansion at run-time.
+/* VOIDFLAGS:
+ *     This symbol indicates how much support of the void type is given by this
+ *     compiler.  What various bits mean:
+ *
+ *         1 = supports declaration of void
+ *         2 = supports arrays of pointers to functions returning void
+ *         4 = supports comparisons between pointers to void functions and
+ *                 addresses of void functions
+ *         8 = suports declaration of generic void pointers
+ *
+ *     The package designer should define VOIDUSED to indicate the requirements
+ *     of the package.  This can be done either by #defining VOIDUSED before
+ *     including config.h, or by defining defvoidused in Myinit.U.  If the
+ *     latter approach is taken, only those flags will be tested.  If the
+ *     level of void support necessary is not present, defines void to int.
  */
-#define ARCHLIB "c:\\perl\\lib\\MSWin32-x86"           /**/
-#define ARCHLIB_EXP (win32_perllib_path(ARCHNAME,NULL))        /**/
+#ifndef VOIDUSED
+#define VOIDUSED 15
+#endif
+#define VOIDFLAGS 15
+#if (VOIDFLAGS & VOIDUSED) != VOIDUSED
+#define void int               /* is void to be avoided? */
+#define M_VOID                 /* Xenix strikes again */
+#endif
 
-/* BINCOMPAT3:
- *     This symbol, if defined, indicates that Perl 5.004 should be
- *     binary-compatible with Perl 5.003.
+/* MEM_ALIGNBYTES:
+ *      This symbol contains the number of bytes required to align a
+ *      double. Usual values are 2, 4 and 8.
+ *      On NeXT starting with 3.2, you can build "Fat" Multiple Architecture
+ *      Binaries (MAB) for targets with varying alignment.  This only matters
+ *      for perl, where the config.h can be generated and installed on one
+ *      system, and used by a different architecture to build an extension.
+ *      The default is eight, for safety.
  */
-/*#define BINCOMPAT3                   /**/
+#define MEM_ALIGNBYTES 8       /**/
 
 /* BYTEORDER:
  *     This symbol holds the hexadecimal constant defined in byteorder,
 #endif /* ENDIAN CHECK */
 #endif /* NeXT */
 
-/* CSH:
- *     This symbol, if defined, indicates that the C-shell exists.
- *     If defined, contains the full pathname of csh.
+/* CASTI32:
+ *     This symbol is defined if the C compiler can cast negative
+ *     or large floating point numbers to 32-bit ints.
  */
-/*#define CSH ""               /**/
+#define        CASTI32         /**/
 
-/* DLSYM_NEEDS_UNDERSCORE:
- *     This symbol, if defined, indicates that we need to prepend an
- *     underscore to the symbol name before calling dlsym().  This only
- *     makes sense if you *have* dlsym, which we will presume is the
- *     case if you're using dl_dlopen.xs.
+/* CASTNEGFLOAT:
+ *     This symbol is defined if the C compiler can cast negative
+ *     numbers to unsigned longs, ints and shorts.
  */
-/*#define      DLSYM_NEEDS_UNDERSCORE  /**/
-
-/* SETUID_SCRIPTS_ARE_SECURE_NOW:
- *     This symbol, if defined, indicates that the bug that prevents
- *     setuid scripts from being secure is not present in this kernel.
+/* CASTFLAGS:
+ *     This symbol contains flags that say what difficulties the compiler
+ *     has casting odd floating values to unsigned long:
+ *             0 = ok
+ *             1 = couldn't cast < 0
+ *             2 = couldn't cast >= 0x80000000
+ *             4 = couldn't cast in argument expression list
  */
-/* DOSUID:
- *     This symbol, if defined, indicates that the C program should
- *     check the script that it is executing for setuid/setgid bits, and
- *     attempt to emulate setuid/setgid on systems that have disabled
- *     setuid #! scripts because the kernel can't do it securely.
- *     It is up to the package designer to make sure that this emulation
- *     is done securely.  Among other things, it should do an fstat on
- *     the script it just opened to make sure it really is a setuid/setgid
- *     script, it should make sure the arguments passed correspond exactly
- *     to the argument on the #! line, and it should not trust any
- *     subprocesses to which it must pass the filename rather than the
- *     file descriptor of the script to be executed.
+#define        CASTNEGFLOAT            /**/
+#define CASTFLAGS 0            /**/
+
+/* VOID_CLOSEDIR:
+ *     This symbol, if defined, indicates that the closedir() routine
+ *     does not return a value.
  */
-/*#define SETUID_SCRIPTS_ARE_SECURE_NOW        /**/
-/*#define DOSUID               /**/
+/*#define VOID_CLOSEDIR                /**/
 
 /* Gconvert:
  *     This preprocessor macro is defined to convert a floating point
  */
 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
 
-/* HAS_GETPGID:
+/* HAS_GNULIBC:
  *     This symbol, if defined, indicates to the C program that 
- *     the getpgid(pid) function is available to get the
- *     process group id.
- */
-/*#define HAS_GETPGID          /**/
-
-/* HAS_GETPGRP:
- *     This symbol, if defined, indicates that the getpgrp routine is
- *     available to get the current process group.
+ *     the GNU C library is being used.
  */
-/* USE_BSD_GETPGRP:
- *     This symbol, if defined, indicates that getpgrp needs one
- *     arguments whereas USG one needs none.
+/*#define HAS_GNULIBC          /**/
+/* HAS_ISASCII:
+ *     This manifest constant lets the C program know that isascii 
+ *     is available.
  */
-/*#define HAS_GETPGRP          /**/
-/*#define USE_BSD_GETPGRP      /**/
+#define HAS_ISASCII            /**/
 
-/* HAS_INET_ATON:
- *     This symbol, if defined, indicates to the C program that the
- *     inet_aton() function is available to parse IP address "dotted-quad"
- *     strings.
+/* HAS_LCHOWN:
+ *     This symbol, if defined, indicates that the lchown routine is
+ *     available to operate on a symbolic link (instead of following the
+ *     link).
  */
-/*#define HAS_INET_ATON                /**/
+/*#define HAS_LCHOWN           /**/
 
-/* HAS_SETPGID:
- *     This symbol, if defined, indicates to the C program that 
- *     the setpgid(pid, gpid) function is available to set the
- *     process group id.
+/* HAS_OPEN3:
+ *     This manifest constant lets the C program know that the three
+ *     argument form of open(2) is available.
  */
-/*#define HAS_SETPGID          /**/
+/*#define HAS_OPEN3            /**/
 
-/* HAS_SETPGRP:
- *     This symbol, if defined, indicates that the setpgrp routine is
- *     available to set the current process group.
- */
-/* USE_BSD_SETPGRP:
- *     This symbol, if defined, indicates that setpgrp needs two
- *     arguments whereas USG one needs none.  See also HAS_SETPGID
- *     for a POSIX interface.
+/* HAS_SAFE_BCOPY:
+ *     This symbol, if defined, indicates that the bcopy routine is available
+ *     to copy potentially overlapping memory blocks. Otherwise you should
+ *     probably use memmove() or memcpy(). If neither is defined, roll your
+ *     own version.
  */
-/* USE_BSDPGRP:
- *     This symbol, if defined, indicates that the BSD notion of process
- *     group is to be used. For instance, you have to say setpgrp(pid, pgrp)
- *     instead of the USG setpgrp().  This should be obsolete since
- *     there are systems which have BSD-ish setpgrp but USG-ish getpgrp.
+/*#define HAS_SAFE_BCOPY       /**/
+
+/* HAS_SAFE_MEMCPY:
+ *     This symbol, if defined, indicates that the memcpy routine is available
+ *     to copy potentially overlapping memory blocks. Otherwise you should
+ *     probably use memmove() or memcpy(). If neither is defined, roll your
+ *     own version.
  */
-/*#define HAS_SETPGRP          /**/
-/*#define USE_BSD_SETPGRP      /**/
-/*#define USE_BSDPGRP          /**/
+/*#define HAS_SAFE_MEMCPY      /**/
 
-/* USE_SFIO:
- *     This symbol, if defined, indicates that sfio should
- *     be used.
+/* HAS_SANE_MEMCMP:
+ *     This symbol, if defined, indicates that the memcmp routine is available
+ *     and can be used to compare relative magnitudes of chars with their high
+ *     bits set.  If it is not defined, roll your own version.
  */
-/*#define      USE_SFIO                /**/
+#define HAS_SANE_MEMCMP        /**/
 
-/* PTHREADS_CREATED_JOINABLE:
- *     This symbol, if defined, indicates that pthreads are created
- *     in the joinable (aka undetached) state.
+/* HAS_SIGACTION:
+ *     This symbol, if defined, indicates that Vr4's sigaction() routine
+ *     is available.
  */
-/*#define      PTHREADS_CREATED_JOINABLE               /**/
+/*#define HAS_SIGACTION        /**/
 
 /* Sigjmp_buf:
  *     This is the buffer type to be used with Sigsetjmp and Siglongjmp.
 #define Siglongjmp(buf,retval) longjmp((buf),(retval))
 #endif
 
-/* USE_DYNAMIC_LOADING:
- *     This symbol, if defined, indicates that dynamic loading of
- *     some sort is available.
+/* USE_STDIO_PTR:
+ *     This symbol is defined if the _ptr and _cnt fields (or similar)
+ *     of the stdio FILE structure can be used to access the stdio buffer
+ *     for a file handle.  If this is defined, then the FILE_ptr(fp)
+ *     and FILE_cnt(fp) macros will also be defined and should be used
+ *     to access these fields.
  */
-#define USE_DYNAMIC_LOADING            /**/
-
-/* I_DBM:
- *     This symbol, if defined, indicates that <dbm.h> exists and should
- *     be included.
+/* FILE_ptr:
+ *     This macro is used to access the _ptr field (or equivalent) of the
+ *     FILE structure pointed to by its argument. This macro will always be
+ *     defined if USE_STDIO_PTR is defined.
  */
-/* I_RPCSVC_DBM:
- *     This symbol, if defined, indicates that <rpcsvc/dbm.h> exists and
- *     should be included.
+/* STDIO_PTR_LVALUE:
+ *     This symbol is defined if the FILE_ptr macro can be used as an
+ *     lvalue.
  */
-/*#define I_DBM        /**/
-#define I_RPCSVC_DBM   /**/
+/* FILE_cnt:
+ *     This macro is used to access the _cnt field (or equivalent) of the
+ *     FILE structure pointed to by its argument. This macro will always be
+ *     defined if USE_STDIO_PTR is defined.
+ */
+/* STDIO_CNT_LVALUE:
+ *     This symbol is defined if the FILE_cnt macro can be used as an
+ *     lvalue.
+ */
+#define USE_STDIO_PTR  /**/
+#ifdef USE_STDIO_PTR
+#define FILE_ptr(fp)   ((fp)->_ptr)
+#define STDIO_PTR_LVALUE               /**/
+#define FILE_cnt(fp)   ((fp)->_cnt)
+#define STDIO_CNT_LVALUE               /**/
+#endif
+
+/* USE_STDIO_BASE:
+ *     This symbol is defined if the _base field (or similar) of the
+ *     stdio FILE structure can be used to access the stdio buffer for
+ *     a file handle.  If this is defined, then the FILE_base(fp) macro
+ *     will also be defined and should be used to access this field.
+ *     Also, the FILE_bufsiz(fp) macro will be defined and should be used
+ *     to determine the number of bytes in the buffer.  USE_STDIO_BASE
+ *     will never be defined unless USE_STDIO_PTR is.
+ */
+/* FILE_base:
+ *     This macro is used to access the _base field (or equivalent) of the
+ *     FILE structure pointed to by its argument. This macro will always be
+ *     defined if USE_STDIO_BASE is defined.
+ */
+/* FILE_bufsiz:
+ *     This macro is used to determine the number of bytes in the I/O
+ *     buffer pointed to by _base field (or equivalent) of the FILE
+ *     structure pointed to its argument. This macro will always be defined
+ *     if USE_STDIO_BASE is defined.
+ */
+#define USE_STDIO_BASE         /**/
+#ifdef USE_STDIO_BASE
+#define FILE_base(fp)  ((fp)->_base)
+#define FILE_bufsiz(fp)        ((fp)->_cnt + (fp)->_ptr - (fp)->_base)
+#endif
+
+/* HAS_VPRINTF:
+ *     This symbol, if defined, indicates that the vprintf routine is available
+ *     to printf with a pointer to an argument list.  If unavailable, you
+ *     may need to write your own, probably in terms of _doprnt().
+ */
+/* USE_CHAR_VSPRINTF:
+ *     This symbol is defined if this system has vsprintf() returning type
+ *     (char*).  The trend seems to be to declare it as "int vsprintf()".  It
+ *     is up to the package author to declare vsprintf correctly based on the
+ *     symbol.
+ */
+#define HAS_VPRINTF    /**/
+/*#define USE_CHAR_VSPRINTF    /**/
+
+/* DOUBLESIZE:
+ *     This symbol contains the size of a double, so that the C preprocessor
+ *     can make decisions based on it.
+ */
+#define DOUBLESIZE 8           /**/
+
+/* I_TIME:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <time.h>.
+ */
+/* I_SYS_TIME:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/time.h>.
+ */
+/* I_SYS_TIME_KERNEL:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/time.h> with KERNEL defined.
+ */
+#define I_TIME         /**/
+/*#define I_SYS_TIME           /**/
+/*#define I_SYS_TIME_KERNEL            /**/
+
+/* INTSIZE:
+ *     This symbol contains the value of sizeof(int) so that the C
+ *     preprocessor can make decisions based on it.
+ */
+/* LONGSIZE:
+ *     This symbol contains the value of sizeof(long) so that the C
+ *     preprocessor can make decisions based on it.
+ */
+/* SHORTSIZE:
+ *     This symbol contains the value of sizeof(short) so that the C
+ *     preprocessor can make decisions based on it.
+ */
+#define INTSIZE 4              /**/
+#define LONGSIZE 4             /**/
+#define SHORTSIZE 2            /**/
+
+/* VAL_O_NONBLOCK:
+ *     This symbol is to be used during open() or fcntl(F_SETFL) to turn on
+ *     non-blocking I/O for the file descriptor. Note that there is no way
+ *     back, i.e. you cannot turn it blocking again this way. If you wish to
+ *     alternatively switch between blocking and non-blocking, use the
+ *     ioctl(FIOSNBIO) call instead, but that is not supported by all devices.
+ */
+/* VAL_EAGAIN:
+ *     This symbol holds the errno error code set by read() when no data was
+ *     present on the non-blocking file descriptor.
+ */
+/* RD_NODATA:
+ *     This symbol holds the return code from read() when no data is present
+ *     on the non-blocking file descriptor. Be careful! If EOF_NONBLOCK is
+ *     not defined, then you can't distinguish between no data and EOF by
+ *     issuing a read(). You'll have to find another way to tell for sure!
+ */
+/* EOF_NONBLOCK:
+ *     This symbol, if defined, indicates to the C program that a read() on
+ *     a non-blocking file descriptor will return 0 on EOF, and not the value
+ *     held in RD_NODATA (-1 usually, in that case!).
+ */
+#define VAL_O_NONBLOCK O_NONBLOCK
+#define VAL_EAGAIN EAGAIN
+#define RD_NODATA -1
+#define EOF_NONBLOCK
+
+/* PTRSIZE:
+ *     This symbol contains the size of a pointer, so that the C preprocessor
+ *     can make decisions based on it.  It will be sizeof(void *) if
+ *     the compiler supports (void *); otherwise it will be
+ *     sizeof(char *).
+ */
+#define PTRSIZE 4              /**/
+
+/* RANDBITS:
+ *     This symbol contains the number of bits of random number the rand()
+ *     function produces.  Usual values are 15, 16, and 31.
+ */
+#define RANDBITS 15            /**/
+
+/* SSize_t:
+ *     This symbol holds the type used by functions that return
+ *     a count of bytes or an error condition.  It must be a signed type.
+ *     It is usually ssize_t, but may be long or int, etc.
+ *     It may be necessary to include <sys/types.h> or <unistd.h>
+ *     to get any typedef'ed information.
+ *     We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
+ */
+#define SSize_t int     /* signed count of bytes */
+
+/* OSNAME:
+ *     This symbol contains the name of the operating system, as determined
+ *     by Configure.  You shouldn't rely on it too much; the specific
+ *     feature tests from Configure are generally more reliable.
+ */
+#define OSNAME "MSWin32"               /**/
+
+/* ARCHLIB:
+ *     This variable, if defined, holds the name of the directory in
+ *     which the user wants to put architecture-dependent public
+ *     library files for perl5.  It is most often a local directory
+ *     such as /usr/local/lib.  Programs using this variable must be
+ *     prepared to deal with filename expansion.  If ARCHLIB is the
+ *     same as PRIVLIB, it is not defined, since presumably the
+ *     program already searches PRIVLIB.
+ */
+/* ARCHLIB_EXP:
+ *     This symbol contains the ~name expanded version of ARCHLIB, to be used
+ *     in programs that are not prepared to deal with ~ expansion at run-time.
+ */
+#define ARCHLIB "c:\\perl\\5.00471\\lib\\MSWin32-x86"          /**/
+/*#define ARCHLIB_EXP ""       /**/
+
+/* CAT2:
+ *     This macro catenates 2 tokens together.
+ */
+/* STRINGIFY:
+ *     This macro surrounds its token with double quotes.
+ */
+#if 42 == 1
+#define CAT2(a,b)a/**/b
+#define STRINGIFY(a)"a"
+               /* If you can get stringification with catify, tell me how! */
+#endif
+#if 42 == 42
+#define CAT2(a,b)a ## b
+#define StGiFy(a)# a
+#define STRINGIFY(a)StGiFy(a)
+#endif
+#if 42 != 1 && 42 != 42
+#include "Bletch: How does this C preprocessor catenate tokens?"
+#endif
+
+/* CSH:
+ *     This symbol, if defined, contains the full pathname of csh.
+ */
+/*#define HAS_CSH              /**/
+#ifdef HAS_CSH
+#define CSH "" /**/
+#endif
+
+/* HAS_ENDHOSTENT:
+ *     This symbol, if defined, indicates that the endhostent() routine is
+ *     available to close whatever was being used for host queries.
+ */
+/*#define HAS_ENDHOSTENT               /**/
+
+/* HAS_ENDNETENT:
+ *     This symbol, if defined, indicates that the endnetent() routine is
+ *     available to close whatever was being used for network queries.
+ */
+/*#define HAS_ENDNETENT                /**/
+
+/* HAS_ENDPROTOENT:
+ *     This symbol, if defined, indicates that the endprotoent() routine is
+ *     available to close whatever was being used for protocol queries.
+ */
+/*#define HAS_ENDPROTOENT              /**/
+
+/* HAS_ENDSERVENT:
+ *     This symbol, if defined, indicates that the endservent() routine is
+ *     available to close whatever was being used for service queries.
+ */
+/*#define HAS_ENDSERVENT               /**/
+
+/* HAS_GETHOSTBYADDR:
+ *     This symbol, if defined, indicates that the gethostbyaddr() routine is
+ *     available to look up hosts by their IP addresses.
+ */
+#define HAS_GETHOSTBYADDR              /**/
+
+/* HAS_GETHOSTBYNAME:
+ *     This symbol, if defined, indicates that the gethostbyname() routine is
+ *     available to look up host names in some data base or other.
+ */
+#define HAS_GETHOSTBYNAME              /**/
+
+/* HAS_GETHOSTENT:
+ *     This symbol, if defined, indicates that the gethostent() routine is
+ *     available to look up host names in some data base or another.
+ */
+/*#define HAS_GETHOSTENT               /**/
+
+/* HAS_GETNETBYADDR:
+ *     This symbol, if defined, indicates that the getnetbyaddr() routine is
+ *     available to look up networks by their IP addresses.
+ */
+/*#define HAS_GETNETBYADDR             /**/
+
+/* HAS_GETNETBYNAME:
+ *     This symbol, if defined, indicates that the getnetbyname() routine is
+ *     available to look up networks by their names.
+ */
+/*#define HAS_GETNETBYNAME             /**/
+
+/* HAS_GETNETENT:
+ *     This symbol, if defined, indicates that the getnetent() routine is
+ *     available to look up network names in some data base or another.
+ */
+/*#define HAS_GETNETENT                /**/
+
+/* HAS_GETPROTOENT:
+ *     This symbol, if defined, indicates that the getprotoent() routine is
+ *     available to look up protocols in some data base or another.
+ */
+/*#define HAS_GETPROTOENT              /**/
+
+/* HAS_GETPROTOBYNAME:
+ *     This symbol, if defined, indicates that the getprotobyname()
+ *     routine is available to look up protocols by their name.
+ */
+/* HAS_GETPROTOBYNUMBER:
+ *     This symbol, if defined, indicates that the getprotobynumber()
+ *     routine is available to look up protocols by their number.
+ */
+#define HAS_GETPROTOBYNAME             /**/
+#define HAS_GETPROTOBYNUMBER           /**/
+
+/* HAS_GETSERVENT:
+ *     This symbol, if defined, indicates that the getservent() routine is
+ *     available to look up network services in some data base or another.
+ */
+/*#define HAS_GETSERVENT               /**/
+
+/* HAS_GETSERVBYNAME:
+ *     This symbol, if defined, indicates that the getservbyname()
+ *     routine is available to look up services by their name.
+ */
+/* HAS_GETSERVBYPORT:
+ *     This symbol, if defined, indicates that the getservbyport()
+ *     routine is available to look up services by their port.
+ */
+#define HAS_GETSERVBYNAME              /**/
+#define HAS_GETSERVBYPORT              /**/
+
+/* HAS_LONG_DOUBLE:
+ *     This symbol will be defined if the C compiler supports long
+ *     doubles.
+ */
+/* LONG_DOUBLESIZE:
+ *     This symbol contains the size of a long double, so that the 
+ *     C preprocessor can make decisions based on it.  It is only
+ *     defined if the system supports long doubles.
+ */
+#define HAS_LONG_DOUBLE                /**/
+#ifdef HAS_LONG_DOUBLE
+#define LONG_DOUBLESIZE 10             /**/
+#endif
+
+/* HAS_LONG_LONG:
+ *     This symbol will be defined if the C compiler supports
+ *     long long.
+ */
+/* LONGLONGSIZE:
+ *     This symbol contains the size of a long long, so that the 
+ *     C preprocessor can make decisions based on it.  It is only
+ *     defined if the system supports long long.
+ */
+/*#define HAS_LONG_LONG                /**/
+#ifdef HAS_LONG_LONG
+#define LONGLONGSIZE 8         /**/
+#endif
+
+/* HAS_SETGROUPS:
+ *     This symbol, if defined, indicates that the setgroups() routine is
+ *     available to set the list of process groups.  If unavailable, multiple
+ *     groups are probably not supported.
+ */
+/*#define HAS_SETGROUPS                /**/
+
+/* HAS_SETHOSTENT:
+ *     This symbol, if defined, indicates that the sethostent() routine is
+ *     available.
+ */
+/*#define HAS_SETHOSTENT               /**/
+
+/* HAS_SETNETENT:
+ *     This symbol, if defined, indicates that the setnetent() routine is
+ *     available.
+ */
+/*#define HAS_SETNETENT                /**/
+
+/* HAS_SETPROTOENT:
+ *     This symbol, if defined, indicates that the setprotoent() routine is
+ *     available.
+ */
+/*#define HAS_SETPROTOENT              /**/
+
+/* HAS_SETSERVENT:
+ *     This symbol, if defined, indicates that the setservent() routine is
+ *     available.
+ */
+/*#define HAS_SETSERVENT               /**/
+
+/* HAS_SETVBUF:
+ *     This symbol, if defined, indicates that the setvbuf routine is
+ *     available to change buffering on an open stdio stream.
+ *     to a line-buffered mode.
+ */
+#define HAS_SETVBUF            /**/
+
+/* HAS_SOCKET:
+ *     This symbol, if defined, indicates that the BSD socket interface is
+ *     supported.
+ */
+/* HAS_SOCKETPAIR:
+ *     This symbol, if defined, indicates that the BSD socketpair() call is
+ *     supported.
+ */
+#define HAS_SOCKET             /**/
+/*#define HAS_SOCKETPAIR       /**/
+
+/* HAS_UNION_SEMUN:
+ *     This symbol, if defined, indicates that the union semun is
+ *     defined by including <sys/sem.h>.  If not, the user code
+ *     probably needs to define it as:
+ *     union semun {
+ *         int val;
+ *         struct semid_ds *buf;
+ *         unsigned short *array;
+ *     }
+ */
+/* USE_SEMCTL_SEMUN:
+ *     This symbol, if defined, indicates that union semun is
+ *     used for semctl IPC_STAT.
+ */
+/* USE_SEMCTL_SEMID_DS:
+ *     This symbol, if defined, indicates that struct semid_ds * is
+ *     used for semctl IPC_STAT.
+ */
+#define HAS_UNION_SEMUN        /**/
+/*#define USE_SEMCTL_SEMUN     /**/
+/*#define USE_SEMCTL_SEMID_DS  /**/
 
-/* I_LOCALE:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <locale.h>.
+/* Signal_t:
+ *     This symbol's value is either "void" or "int", corresponding to the
+ *     appropriate return type of a signal handler.  Thus, you can declare
+ *     a signal handler using "Signal_t (*handler)()", and define the
+ *     handler using "Signal_t handler(sig)".
  */
-#define        I_LOCALE                /**/
+#define Signal_t void  /* Signal handler's return type */
 
-/* I_SFIO:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sfio.h>.
+/* Groups_t:
+ *     This symbol holds the type used for the second argument to
+ *     getgroups() and setgropus().  Usually, this is the same as
+ *     gidtype (gid_t) , but sometimes it isn't.
+ *     It can be int, ushort, uid_t, etc... 
+ *     It may be necessary to include <sys/types.h> to get any 
+ *     typedef'ed information.  This is only required if you have
+ *     getgroups() or setgropus()..
  */
-/*#define      I_SFIO          /**/
+#if defined(HAS_GETGROUPS) || defined(HAS_SETGROUPS)
+#define Groups_t gid_t /* Type for 2nd arg to [sg]etgroups() */
+#endif
 
-/* I_SYS_STAT:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/stat.h>.
+/* I_NETDB:
+ *     This symbol, if defined, indicates that <netdb.h> exists and
+ *     should be included.
  */
-#define        I_SYS_STAT              /**/
+/*#define I_NETDB              /**/
 
-/* I_VALUES:
+/* I_PWD:
  *     This symbol, if defined, indicates to the C program that it should
- *     include <values.h> to get definition of symbols like MINFLOAT or
- *     MAXLONG, i.e. machine dependant limitations.  Probably, you
- *     should use <limits.h> instead, if it is available.
+ *     include <pwd.h>.
  */
-/*#define I_VALUES             /**/
-
-/* Free_t:
- *     This variable contains the return type of free().  It is usually
- * void, but occasionally int.
+/* PWQUOTA:
+ *     This symbol, if defined, indicates to the C program that struct passwd
+ *     contains pw_quota.
  */
-/* Malloc_t:
- *     This symbol is the type of pointer returned by malloc and realloc.
+/* PWAGE:
+ *     This symbol, if defined, indicates to the C program that struct passwd
+ *     contains pw_age.
  */
-#define Malloc_t void *                        /**/
-#define Free_t void                    /**/
-
-/* MYMALLOC:
- *     This symbol, if defined, indicates that we're using our own malloc.
+/* PWCHANGE:
+ *     This symbol, if defined, indicates to the C program that struct passwd
+ *     contains pw_change.
  */
-#ifndef PERL_OBJECT
-#define MYMALLOC                       /**/
-#endif
-
-/* OLDARCHLIB:
- *     This variable, if defined, holds the name of the directory in
- *     which the user has perl5.000 or perl5.001 architecture-dependent
- *     public library files for perl5.  For the most part, these
- *     files will work with 5.002 (and later), but that is not
- *     guaranteed.
+/* PWCLASS:
+ *     This symbol, if defined, indicates to the C program that struct passwd
+ *     contains pw_class.
+ */
+/* PWEXPIRE:
+ *     This symbol, if defined, indicates to the C program that struct passwd
+ *     contains pw_expire.
  */
-/* OLDARCHLIB_EXP:
- *     This symbol contains the ~name expanded version of OLDARCHLIB, to be
- *     used in programs that are not prepared to deal with ~ expansion at 
- *     run-time.
+/* PWCOMMENT:
+ *     This symbol, if defined, indicates to the C program that struct passwd
+ *     contains pw_comment.
+ */
+/* PWGECOS:
+ *     This symbol, if defined, indicates to the C program that struct passwd
+ *     contains pw_gecos.
  */
-/*#define OLDARCHLIB ""                /**/
-/*#define OLDARCHLIB_EXP ""            /**/
+/*#define I_PWD                /**/
+/*#define PWQUOTA      /**/
+/*#define PWAGE        /**/
+/*#define PWCHANGE     /**/
+/*#define PWCLASS      /**/
+/*#define PWEXPIRE     /**/
+/*#define PWCOMMENT    /**/
+/*#define PWGECOS      /**/
 
 /* PRIVLIB:
  *     This symbol contains the name of the private library for this package.
  *     This symbol contains the ~name expanded version of PRIVLIB, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define PRIVLIB "c:\\perl5004.5x\\lib"         /**/
-#define PRIVLIB_EXP (win32_perllib_path(NULL)) /**/
-
-/* SH_PATH:
- *     This symbol contains the full pathname to the shell used on this
- *     on this system to execute Bourne shell scripts.  Usually, this will be
- *     /bin/sh, though it's possible that some systems will have /bin/ksh,
- *     /bin/pdksh, /bin/ash, /bin/bash, or even something such as
- *     D:/bin/sh.exe.
- */
-#define SH_PATH "cmd /x /c"  /**/
+#define PRIVLIB "c:\\perl\\5.00471\\lib"               /**/
+#define PRIVLIB_EXP (win32_get_privlib("5.00471"))     /**/
 
 /* SIG_NAME:
  *     This symbol contains a list of signal names in order of
  *     The last element is 0, corresponding to the 0 at the end of
  *     the sig_name list.
  */
-#define SIG_NAME "ZERO","HUP","INT","QUIT","ILL","TRAP","ABRT","EMT","FPE","KILL","BUS","SEGV","SYS","PIPE","ALRM","TERM","USR1","USR2","CHLD","PWR","WINCH","URG","IO","STOP","TSTP","CONT","TTIN","TTOU","VTALRM","PROF","XCPU","XFSZ","WAITING","LWP","FREEZE","THAW","RTMIN","NUM37","NUM38","NUM39","NUM40","NUM41","NUM42","RTMAX","IOT","CLD","POLL",0  /**/
-#define SIG_NUM 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,6,18,22,0    /**/
+#define SIG_NAME "ZERO", "INT", "QUIT", "ILL", "FPE", "KILL", "SEGV", "PIPE", "ALRM", "TERM", "CHLD", "BREAK", "ABRT", "STOP", "CONT", "CLD", 0                /**/
+#define SIG_NUM  0, 2, 3, 4, 8, 9, 11, 13, 14, 15, 20, 21, 22, 23, 25, 20, 0                   /**/
 
 /* SITEARCH:
  *     This symbol contains the name of the private library for this package.
  *     This symbol contains the ~name expanded version of SITEARCH, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define SITEARCH "c:\\perl\\lib\\site\\MSWin32-x86"            /**/
-#define SITEARCH_EXP (win32_perllib_path("site",ARCHNAME,NULL))        /**/
+#define SITEARCH "c:\\perl\\site\\5.00471\\lib\\MSWin32-x86"           /**/
+/*#define SITEARCH_EXP ""      /**/
 
 /* SITELIB:
  *     This symbol contains the name of the private library for this package.
  *     This symbol contains the ~name expanded version of SITELIB, to be used
  *     in programs that are not prepared to deal with ~ expansion at run-time.
  */
-#define SITELIB "c:\\perl5004.5x\\lib\\site"           /**/
-#define SITELIB_EXP (win32_perllib_path("site",NULL))  /**/
+#define SITELIB "c:\\perl\\site\\5.00471\\lib"         /**/
+#define SITELIB_EXP (win32_get_sitelib("5.00471"))     /**/
+
+/* DLSYM_NEEDS_UNDERSCORE:
+ *     This symbol, if defined, indicates that we need to prepend an
+ *     underscore to the symbol name before calling dlsym().  This only
+ *     makes sense if you *have* dlsym, which we will presume is the
+ *     case if you're using dl_dlopen.xs.
+ */
+/*#define      DLSYM_NEEDS_UNDERSCORE  /**/
+
+/* USE_SFIO:
+ *     This symbol, if defined, indicates that sfio should
+ *     be used.
+ */
+/*#define      USE_SFIO                /**/
+
+/* USE_DYNAMIC_LOADING:
+ *     This symbol, if defined, indicates that dynamic loading of
+ *     some sort is available.
+ */
+#define USE_DYNAMIC_LOADING            /**/
+
+/* DB_Prefix_t:
+ *     This symbol contains the type of the prefix structure element
+ *     in the <db.h> header file.  In older versions of DB, it was
+ *     int, while in newer ones it is u_int32_t.
+ */
+/* DB_Hash_t:
+ *     This symbol contains the type of the prefix structure element
+ *     in the <db.h> header file.  In older versions of DB, it was
+ *     int, while in newer ones it is size_t.
+ */
+#define DB_Hash_t      int             /**/
+#define DB_Prefix_t    int     /**/
 
 /* STARTPERL:
  *     This variable contains the string to put in front of a perl
  */
 /*#define      USE_PERLIO              /**/
 
-/* VOIDFLAGS:
- *     This symbol indicates how much support of the void type is given by this
- *     compiler.  What various bits mean:
- *
- *         1 = supports declaration of void
- *         2 = supports arrays of pointers to functions returning void
- *         4 = supports comparisons between pointers to void functions and
- *                 addresses of void functions
- *         8 = suports declaration of generic void pointers
- *
- *     The package designer should define VOIDUSED to indicate the requirements
- *     of the package.  This can be done either by #defining VOIDUSED before
- *     including config.h, or by defining defvoidused in Myinit.U.  If the
- *     latter approach is taken, only those flags will be tested.  If the
- *     level of void support necessary is not present, defines void to int.
+/* HAS_GETHOST_PROTOS:
+ *     This symbol, if defined, indicates that <netdb.h> includes
+ *     prototypes for gethostent(), gethostbyname(), and
+ *     gethostbyaddr().  Otherwise, it is up to the program to guess
+ *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
  */
-#ifndef VOIDUSED
-#define VOIDUSED 15
-#endif
-#define VOIDFLAGS 15
-#if (VOIDFLAGS & VOIDUSED) != VOIDUSED
-#define void int               /* is void to be avoided? */
-#define M_VOID                 /* Xenix strikes again */
-#endif
+#define        HAS_GETHOST_PROTOS      /**/
+
+/* HAS_GETNET_PROTOS:
+ *     This symbol, if defined, indicates that <netdb.h> includes
+ *     prototypes for getnetent(), getnetbyname(), and
+ *     getnetbyaddr().  Otherwise, it is up to the program to guess
+ *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+/*#define      HAS_GETNET_PROTOS       /**/
+
+/* HAS_GETPROTO_PROTOS:
+ *     This symbol, if defined, indicates that <netdb.h> includes
+ *     prototypes for getprotoent(), getprotobyname(), and
+ *     getprotobyaddr().  Otherwise, it is up to the program to guess
+ *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#define        HAS_GETPROTO_PROTOS     /**/
+
+/* HAS_GETSERV_PROTOS:
+ *     This symbol, if defined, indicates that <netdb.h> includes
+ *     prototypes for getservent(), getservbyname(), and
+ *     getservbyaddr().  Otherwise, it is up to the program to guess
+ *     them.  See netdbtype.U for probing for various Netdb_xxx_t types.
+ */
+#define        HAS_GETSERV_PROTOS      /**/
+
+/* Netdb_host_t:
+ *     This symbol holds the type used for the 1st argument
+ *     to gethostbyaddr().
+ */
+/* Netdb_hlen_t:
+ *     This symbol holds the type used for the 2nd argument
+ *     to gethostbyaddr().
+ */
+/* Netdb_name_t:
+ *     This symbol holds the type used for the argument to
+ *     gethostbyname().
+ */
+/* Netdb_net_t:
+ *     This symbol holds the type used for the 1st argument to
+ *     getnetbyaddr().
+ */
+#define Netdb_host_t           char * /**/
+#define Netdb_hlen_t           int /**/
+#define Netdb_name_t           char * /**/
+#define Netdb_net_t            long /**/
+
+/* Select_fd_set_t:
+ *     This symbol holds the type used for the 2nd, 3rd, and 4th
+ *     arguments to select.  Usually, this is 'fd_set *', if HAS_FD_SET
+ *     is defined, and 'int *' otherwise.  This is only useful if you 
+ *     have select(), of course.
+ */
+#define Select_fd_set_t        Perl_fd_set *   /**/
+
+/* ARCHNAME:
+ *     This symbol holds a string representing the architecture name.
+ *     It may be used to construct an architecture-dependant pathname
+ *     where library files may be held under a private library, for
+ *     instance.
+ */
+#define ARCHNAME "MSWin32-x86"         /**/
+
+/* HAS_PTHREAD_YIELD:
+ *     This symbol, if defined, indicates that the pthread_yield 
+ *     routine is available to yield the execution of the current
+ *     thread.
+ */
+/* HAS_SCHED_YIELD:
+ *     This symbol, if defined, indicates that the sched_yield
+ *     routine is available to yield the execution of the current
+ *     thread.
+ */
+/*#define HAS_PTHREAD_YIELD    /**/
+/*#define HAS_SCHED_YIELD      /**/
+
+/* PTHREADS_CREATED_JOINABLE:
+ *     This symbol, if defined, indicates that pthreads are created
+ *     in the joinable (aka undetached) state.
+ */
+/*#define PTHREADS_CREATED_JOINABLE /**/
+
+/* USE_THREADS:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built to use threads.
+ */
+/* OLD_PTHREADS_API:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built to use the old draft POSIX threads API.
+ */
+/*#define      USE_THREADS             /**/
+/*#define      OLD_PTHREADS_API                /**/
+
+/* Time_t:
+ *     This symbol holds the type returned by time(). It can be long,
+ *     or time_t on BSD sites (in which case <sys/types.h> should be
+ *     included).
+ */
+#define Time_t time_t          /* Time type */
+
+/* HAS_TIMES:
+ *     This symbol, if defined, indicates that the times() routine exists.
+ *     Note that this became obsolete on some systems (SUNOS), which now
+ * use getrusage(). It may be necessary to include <sys/times.h>.
+ */
+#define HAS_TIMES              /**/
+
+/* Fpos_t:
+ *     This symbol holds the type used to declare file positions in libc.
+ *     It can be fpos_t, long, uint, etc... It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
+ */
+#define Fpos_t fpos_t          /* File position type */
+
+/* Gid_t:
+ *     This symbol holds the return type of getgid() and the type of
+ *     argument to setrgid() and related functions.  Typically,
+ *     it is the type of group ids in the kernel. It can be int, ushort,
+ *     uid_t, etc... It may be necessary to include <sys/types.h> to get
+ *     any typedef'ed information.
+ */
+#define Gid_t gid_t            /* Type for getgid(), etc... */
+
+/* Dev_t:
+ *     This symbol holds the type used to declare device numbers.
+ *     It can be int, long, dev_t, etc... It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
+ */
+#define Dev_t dev_t                    /* <device> type */
+
+/* Off_t:
+ *     This symbol holds the type used to declare offsets in the kernel.
+ *     It can be int, long, off_t, etc... It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
+ */
+#define Off_t off_t            /* <offset> type */
+
+/* Mode_t:
+ *     This symbol holds the type used to declare file modes 
+ *     for systems calls.  It is usually mode_t, but may be
+ *     int or unsigned short.  It may be necessary to include <sys/types.h>
+ *     to get any typedef'ed information.
+ */
+#define Mode_t mode_t   /* file mode parameter for system calls */
+
+/* Pid_t:
+ *     This symbol holds the type used to declare process ids in the kernel.
+ *     It can be int, uint, pid_t, etc... It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
+ */
+#define Pid_t int              /* PID type */
+
+/* Size_t:
+ *     This symbol holds the type used to declare length parameters
+ *     for string functions.  It is usually size_t, but may be
+ *     unsigned long, int, etc.  It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
+ */
+#define Size_t size_t   /* length paramater for string functions */
+
+/* Uid_t:
+ *     This symbol holds the type used to declare user ids in the kernel.
+ *     It can be int, ushort, uid_t, etc... It may be necessary to include
+ *     <sys/types.h> to get any typedef'ed information.
+ */
+#define Uid_t uid_t            /* UID type */
 
 #endif
 #include <win32.h>