This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Regen perlapi.
[perl5.git] / config_h.SH
index f7b79f1..a40ec44 100644 (file)
@@ -50,1307 +50,1298 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #define LOC_SED        "$full_sed"     /**/
 
-/* HAS_MSYNC:
- *     This symbol, if defined, indicates that the msync system call is
- *     available to synchronize a mapped file.
+/* HAS_ALARM:
+ *     This symbol, if defined, indicates that the alarm routine is
+ *     available.
  */
-#$d_msync HAS_MSYNC            /**/
+#$d_alarm HAS_ALARM            /**/
 
-/* HAS_MUNMAP:
- *     This symbol, if defined, indicates that the munmap system call is
- *     available to unmap a region, usually mapped by mmap().
+/* HAS_BCMP:
+ *     This symbol is defined if the bcmp() routine is available to
+ *     compare blocks of memory.
  */
-#$d_munmap HAS_MUNMAP          /**/
+#$d_bcmp HAS_BCMP      /**/
 
-/* HAS_NICE:
- *     This symbol, if defined, indicates that the nice routine is
- *     available.
+/* HAS_BCOPY:
+ *     This symbol is defined if the bcopy() routine is available to
+ *     copy blocks of memory.
  */
-#$d_nice HAS_NICE              /**/
+#$d_bcopy HAS_BCOPY    /**/
 
-/* HAS_PATHCONF:
- *     This symbol, if defined, indicates that pathconf() is available
- *     to determine file-system related limits and options associated
- *     with a given filename.
- */
-/* HAS_FPATHCONF:
- *     This symbol, if defined, indicates that pathconf() is available
- *     to determine file-system related limits and options associated
- *     with a given open file descriptor.
+/* HAS_BZERO:
+ *     This symbol is defined if the bzero() routine is available to
+ *     set a memory block to 0.
  */
-#$d_pathconf HAS_PATHCONF              /**/
-#$d_fpathconf HAS_FPATHCONF            /**/
+#$d_bzero HAS_BZERO    /**/
 
-/* HAS_PAUSE:
- *     This symbol, if defined, indicates that the pause routine is
- *     available to suspend a process until a signal is received.
+/* HAS_CHOWN:
+ *     This symbol, if defined, indicates that the chown routine is
+ *     available.
  */
-#$d_pause HAS_PAUSE            /**/
+#$d_chown HAS_CHOWN            /**/
 
-/* HAS_PIPE:
- *     This symbol, if defined, indicates that the pipe routine is
- *     available to create an inter-process channel.
+/* HAS_CHROOT:
+ *     This symbol, if defined, indicates that the chroot routine is
+ *     available.
  */
-#$d_pipe HAS_PIPE              /**/
+#$d_chroot HAS_CHROOT          /**/
 
-/* HAS_POLL:
- *     This symbol, if defined, indicates that the poll routine is
- *     available to poll active file descriptors. You may safely
- *     include <poll.h> when this symbol is defined.
+/* HAS_CHSIZE:
+ *     This symbol, if defined, indicates that the chsize routine is available
+ *     to truncate files.  You might need a -lx to get this routine.
  */
-#$d_poll HAS_POLL              /**/
+#$d_chsize     HAS_CHSIZE              /**/
 
-/* HAS_READDIR:
- *     This symbol, if defined, indicates that the readdir routine is
- *     available to read directory entries. You may have to include
- *     <dirent.h>. See I_DIRENT.
+/* 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
+ *     within your programs. The mere use of the "const" keyword will
+ *     trigger the necessary tests.
  */
-#$d_readdir HAS_READDIR                /**/
+#$d_const HASCONST     /**/
+#ifndef HASCONST
+#define const
+#endif
 
-/* HAS_SEEKDIR:
- *     This symbol, if defined, indicates that the seekdir routine is
- *     available. You may have to include <dirent.h>. See I_DIRENT.
+/* HAS_CUSERID:
+ *     This symbol, if defined, indicates that the cuserid routine is
+ *     available to get character login names.
  */
-#$d_seekdir HAS_SEEKDIR                /**/
+#$d_cuserid HAS_CUSERID                /**/
 
-/* HAS_TELLDIR:
- *     This symbol, if defined, indicates that the telldir routine is
- *     available. You may have to include <dirent.h>. See I_DIRENT.
+/* HAS_DBL_DIG:
+ *     This symbol, if defined, indicates that this system's <float.h>
+ *     or <limits.h> defines the symbol DBL_DIG, which is the number
+ *     of significant digits in a double precision number.  If this
+ *     symbol is not defined, a guess of 15 is usually pretty good.
  */
-#$d_telldir HAS_TELLDIR                /**/
+#$d_dbl_dig HAS_DBL_DIG        /* */
 
-/* HAS_REWINDDIR:
- *     This symbol, if defined, indicates that the rewinddir routine is
- *     available. You may have to include <dirent.h>. See I_DIRENT.
+/* HAS_DIFFTIME:
+ *     This symbol, if defined, indicates that the difftime routine is
+ *     available.
  */
-#$d_rewinddir HAS_REWINDDIR            /**/
+#$d_difftime HAS_DIFFTIME              /**/
 
-/* HAS_READLINK:
- *     This symbol, if defined, indicates that the readlink routine is
- *     available to read the value of a symbolic link.
+/* HAS_DLERROR:
+ *     This symbol, if defined, indicates that the dlerror routine is
+ *     available to return a string describing the last error that
+ *     occurred from a call to dlopen(), dlclose() or dlsym().
  */
-#$d_readlink HAS_READLINK              /**/
+#$d_dlerror HAS_DLERROR        /**/
 
-/* HAS_RENAME:
- *     This symbol, if defined, indicates that the rename routine is available
- *     to rename files.  Otherwise you should do the unlink(), link(), unlink()
- *     trick.
+/* HAS_DUP2:
+ *     This symbol, if defined, indicates that the dup2 routine is
+ *     available to duplicate file descriptors.
  */
-#$d_rename HAS_RENAME  /**/
+#$d_dup2 HAS_DUP2      /**/
 
-/* HAS_RMDIR:
- *     This symbol, if defined, indicates that the rmdir routine is
- *     available to remove directories. Otherwise you should fork off a
- *     new process to exec /bin/rmdir.
+/* HAS_FCHMOD:
+ *     This symbol, if defined, indicates that the fchmod routine is available
+ *     to change mode of opened files.  If unavailable, use chmod().
  */
-#$d_rmdir HAS_RMDIR            /**/
+#$d_fchmod HAS_FCHMOD          /**/
 
-/* HAS_SELECT:
- *     This symbol, if defined, indicates that the select routine is
- *     available to select active file descriptors. If the timeout field
- *     is used, <sys/time.h> may need to be included.
+/* HAS_FCHOWN:
+ *     This symbol, if defined, indicates that the fchown routine is available
+ *     to change ownership of opened files.  If unavailable, use chown().
  */
-#$d_select HAS_SELECT  /**/
+#$d_fchown HAS_FCHOWN          /**/
 
-/* HAS_SETEGID:
- *     This symbol, if defined, indicates that the setegid routine is available
- *     to change the effective gid of the current program.
+/* HAS_FCNTL:
+ *     This symbol, if defined, indicates to the C program that
+ *     the fcntl() function exists.
  */
-#$d_setegid HAS_SETEGID                /**/
+#$d_fcntl HAS_FCNTL            /**/
 
-/* HAS_SETEUID:
- *     This symbol, if defined, indicates that the seteuid routine is available
- *     to change the effective uid of the current program.
+/* HAS_FGETPOS:
+ *     This symbol, if defined, indicates that the fgetpos routine is
+ *     available to get the file position indicator, similar to ftell().
  */
-#$d_seteuid HAS_SETEUID                /**/
+#$d_fgetpos HAS_FGETPOS        /**/
 
-/* HAS_SETLINEBUF:
- *     This symbol, if defined, indicates that the setlinebuf routine is
- *     available to change stderr or stdout from block-buffered or unbuffered
- *     to a line-buffered mode.
+/* HAS_FLOCK:
+ *     This symbol, if defined, indicates that the flock routine is
+ *     available to do file locking.
  */
-#$d_setlinebuf HAS_SETLINEBUF          /**/
+#$d_flock HAS_FLOCK            /**/
 
-/* HAS_SETLOCALE:
- *     This symbol, if defined, indicates that the setlocale routine is
- *     available to handle locale-specific ctype implementations.
+/* HAS_FORK:
+ *     This symbol, if defined, indicates that the fork routine is
+ *     available.
  */
-#$d_setlocale HAS_SETLOCALE    /**/
+#$d_fork HAS_FORK              /**/
 
-/* HAS_SETPGID:
- *     This symbol, if defined, indicates that the setpgid(pid, gpid)
- *     routine is available to set process group ID.
+/* HAS_FSETPOS:
+ *     This symbol, if defined, indicates that the fsetpos routine is
+ *     available to set the file position indicator, similar to fseek().
  */
-#$d_setpgid HAS_SETPGID        /**/
+#$d_fsetpos HAS_FSETPOS        /**/
 
-/* HAS_SETPGRP2:
- *     This symbol, if defined, indicates that the setpgrp2() (as in DG/UX)
- *     routine is available to set the current process group.
+/* HAS_GETTIMEOFDAY:
+ *     This symbol, if defined, indicates that the gettimeofday() system
+ *     call is available for a sub-second accuracy clock. Usually, the file
+ *     <sys/resource.h> needs to be included (see I_SYS_RESOURCE).
+ *     The type "Timeval" should be used to refer to "struct timeval".
  */
-#$d_setpgrp2 HAS_SETPGRP2              /**/
+#$d_gettimeod HAS_GETTIMEOFDAY /**/
+#ifdef HAS_GETTIMEOFDAY
+#define Timeval struct timeval /* Structure used by gettimeofday() */
+#endif
 
-/* HAS_SETPRIORITY:
- *     This symbol, if defined, indicates that the setpriority routine is
- *     available to set a process's priority.
+/* HAS_GETGROUPS:
+ *     This symbol, if defined, indicates that the getgroups() routine is
+ *     available to get the list of process groups.  If unavailable, multiple
+ *     groups are probably not supported.
  */
-#$d_setprior HAS_SETPRIORITY           /**/
+#$d_getgrps HAS_GETGROUPS              /**/
 
-/* HAS_SETREGID:
- *     This symbol, if defined, indicates that the setregid routine is
- *     available to change the real and effective gid of the current
- *     process.
- */
-/* HAS_SETRESGID:
- *     This symbol, if defined, indicates that the setresgid routine is
- *     available to change the real, effective and saved gid of the current
- *     process.
+/* HAS_GETLOGIN:
+ *     This symbol, if defined, indicates that the getlogin routine is
+ *     available to get the login name.
  */
-#$d_setregid HAS_SETREGID              /**/
-#$d_setresgid HAS_SETRESGID            /**/
+#$d_getlogin HAS_GETLOGIN              /**/
 
-/* HAS_SETREUID:
- *     This symbol, if defined, indicates that the setreuid routine is
- *     available to change the real and effective uid of the current
- *     process.
- */
-/* HAS_SETRESUID:
- *     This symbol, if defined, indicates that the setresuid routine is
- *     available to change the real, effective and saved uid of the current
- *     process.
+/* HAS_GETPGID:
+ *     This symbol, if defined, indicates to the C program that 
+ *     the getpgid(pid) function is available to get the
+ *     process group id.
  */
-#$d_setreuid HAS_SETREUID              /**/
-#$d_setresuid HAS_SETRESUID            /**/
+#$d_getpgid HAS_GETPGID                /**/
 
-/* HAS_SETRGID:
- *     This symbol, if defined, indicates that the setrgid routine is available
- *     to change the real gid of the current program.
+/* HAS_GETPGRP2:
+ *     This symbol, if defined, indicates that the getpgrp2() (as in DG/UX)
+ *     routine is available to get the current process group.
  */
-#$d_setrgid HAS_SETRGID                /**/
+#$d_getpgrp2 HAS_GETPGRP2              /**/
 
-/* HAS_SETRUID:
- *     This symbol, if defined, indicates that the setruid routine is available
- *     to change the real uid of the current program.
+/* HAS_GETPPID:
+ *     This symbol, if defined, indicates that the getppid routine is
+ *     available to get the parent process ID.
  */
-#$d_setruid HAS_SETRUID                /**/
+#$d_getppid HAS_GETPPID                /**/
 
-/* HAS_SETSID:
- *     This symbol, if defined, indicates that the setsid routine is
- *     available to set the process group ID.
+/* HAS_GETPRIORITY:
+ *     This symbol, if defined, indicates that the getpriority routine is
+ *     available to get a process's priority.
  */
-#$d_setsid HAS_SETSID  /**/
+#$d_getprior HAS_GETPRIORITY           /**/
 
-/* 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()
- *     functions are available for string searching.
+/* 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.
  */
-#$d_strchr HAS_STRCHR  /**/
-#$d_index HAS_INDEX    /**/
+#$d_inetaton HAS_INET_ATON             /**/
 
-/* HAS_STRCOLL:
- *     This symbol, if defined, indicates that the strcoll routine is
- *     available to compare strings using collating information.
+/* HAS_KILLPG:
+ *     This symbol, if defined, indicates that the killpg routine is available
+ *     to kill process groups.  If unavailable, you probably should use kill
+ *     with a negative process number.
  */
-#$d_strcoll HAS_STRCOLL        /**/
+#$d_killpg HAS_KILLPG  /**/
 
-/* USE_STRUCT_COPY:
- *     This symbol, if defined, indicates that this C compiler knows how
- *     to copy structures.  If undefined, you'll need to use a block copy
- *     routine of some sort instead.
+/* HAS_LINK:
+ *     This symbol, if defined, indicates that the link routine is
+ *     available to create hard links.
  */
-#$d_strctcpy   USE_STRUCT_COPY /**/
+#$d_link HAS_LINK      /**/
 
-/* HAS_STRTOD:
- *     This symbol, if defined, indicates that the strtod routine is
- *     available to provide better numeric string conversion than atof().
+/* HAS_LOCALECONV:
+ *     This symbol, if defined, indicates that the localeconv routine is
+ *     available for numeric and monetary formatting conventions.
  */
-#$d_strtod HAS_STRTOD  /**/
+#$d_locconv HAS_LOCALECONV     /**/
 
-/* HAS_STRTOL:
- *     This symbol, if defined, indicates that the strtol routine is available
- *     to provide better numeric string conversion than atoi() and friends.
+/* HAS_LOCKF:
+ *     This symbol, if defined, indicates that the lockf routine is
+ *     available to do file locking.
  */
-#$d_strtol HAS_STRTOL  /**/
+#$d_lockf HAS_LOCKF            /**/
 
-/* HAS_STRXFRM:
- *     This symbol, if defined, indicates that the strxfrm() routine is
- *     available to transform strings.
+/* HAS_LSTAT:
+ *     This symbol, if defined, indicates that the lstat routine is
+ *     available to do file stats on symbolic links.
  */
-#$d_strxfrm HAS_STRXFRM        /**/
+#$d_lstat HAS_LSTAT            /**/
 
-/* HAS_SYMLINK:
- *     This symbol, if defined, indicates that the symlink routine is available
- *     to create symbolic links.
+/* HAS_MBLEN:
+ *     This symbol, if defined, indicates that the mblen routine is available
+ *     to find the number of bytes in a multibye character.
  */
-#$d_symlink HAS_SYMLINK        /**/
+#$d_mblen HAS_MBLEN            /**/
 
-/* HAS_SYSCALL:
- *     This symbol, if defined, indicates that the syscall routine is
- *     available to call arbitrary system calls. If undefined, that's tough.
+/* HAS_MBSTOWCS:
+ *     This symbol, if defined, indicates that the mbstowcs routine is
+ *     available to covert a multibyte string into a wide character string.
  */
-#$d_syscall HAS_SYSCALL        /**/
+#$d_mbstowcs   HAS_MBSTOWCS            /**/
 
-/* HAS_SYSCONF:
- *     This symbol, if defined, indicates that sysconf() is available
- *     to determine system related limits and options.
+/* HAS_MBTOWC:
+ *     This symbol, if defined, indicates that the mbtowc routine is available
+ *     to covert a multibyte to a wide character.
  */
-#$d_sysconf HAS_SYSCONF        /**/
+#$d_mbtowc HAS_MBTOWC          /**/
 
-/* HAS_SYSTEM:
- *     This symbol, if defined, indicates that the system routine is
- *     available to issue a shell command.
+/* HAS_MEMCMP:
+ *     This symbol, if defined, indicates that the memcmp routine is available
+ *     to compare blocks of memory.
  */
-#$d_system HAS_SYSTEM  /**/
+#$d_memcmp HAS_MEMCMP  /**/
 
-/* HAS_TCGETPGRP:
- *     This symbol, if defined, indicates that the tcgetpgrp routine is
- *     available to get foreground process group ID.
+/* HAS_MEMCPY:
+ *     This symbol, if defined, indicates that the memcpy routine is available
+ *     to copy blocks of memory.
  */
-#$d_tcgetpgrp HAS_TCGETPGRP            /**/
+#$d_memcpy HAS_MEMCPY  /**/
 
-/* HAS_TCSETPGRP:
- *     This symbol, if defined, indicates that the tcsetpgrp routine is
- *     available to set foreground process group ID.
+/* HAS_MEMMOVE:
+ *     This symbol, if defined, indicates that the memmove routine is available
+ *     to copy potentially overlapping blocks of memory. This should be used
+ *     only when HAS_SAFE_BCOPY is not defined. If neither is there, roll your
+ *     own version.
  */
-#$d_tcsetpgrp HAS_TCSETPGRP            /**/
+#$d_memmove HAS_MEMMOVE        /**/
 
-/* HAS_TRUNCATE:
- *     This symbol, if defined, indicates that the truncate routine is
- *     available to truncate files.
+/* HAS_MEMSET:
+ *     This symbol, if defined, indicates that the memset routine is available
+ *     to set blocks of memory.
  */
-#$d_truncate HAS_TRUNCATE      /**/
+#$d_memset HAS_MEMSET  /**/
 
-/* HAS_TZNAME:
- *     This symbol, if defined, indicates that the tzname[] array is
- *     available to access timezone names.
+/* HAS_MKDIR:
+ *     This symbol, if defined, indicates that the mkdir routine is available
+ *     to create directories.  Otherwise you should fork off a new process to
+ *     exec /bin/mkdir.
  */
-#$d_tzname HAS_TZNAME          /**/
+#$d_mkdir HAS_MKDIR            /**/
 
-/* HAS_UMASK:
- *     This symbol, if defined, indicates that the umask routine is
- *     available to set and get the value of the file creation mask.
+/* HAS_MKFIFO:
+ *     This symbol, if defined, indicates that the mkfifo routine is
+ *     available to create FIFOs. Otherwise, mknod should be able to
+ *     do it for you. However, if mkfifo is there, mknod might require
+ *     super-user privileges which mkfifo will not.
  */
-#$d_umask HAS_UMASK            /**/
+#$d_mkfifo HAS_MKFIFO          /**/
 
-/* HAS_USLEEP:
- *     This symbol, if defined, indicates that the usleep routine is
- *     available to let the process sleep on a sub-second accuracy.
+/* HAS_MKTIME:
+ *     This symbol, if defined, indicates that the mktime routine is
+ *     available.
  */
-#$d_usleep HAS_USLEEP          /**/
+#$d_mktime HAS_MKTIME          /**/
 
-/* HASVOLATILE:
- *     This symbol, if defined, indicates that this C compiler knows about
- *     the volatile declaration.
+/* HAS_MSYNC:
+ *     This symbol, if defined, indicates that the msync system call is
+ *     available to synchronize a mapped file.
  */
-#$d_volatile   HASVOLATILE     /**/
-#ifndef HASVOLATILE
-#define volatile
-#endif
+#$d_msync HAS_MSYNC            /**/
 
-/* HAS_WAIT4:
- *     This symbol, if defined, indicates that wait4() exists.
+/* HAS_MUNMAP:
+ *     This symbol, if defined, indicates that the munmap system call is
+ *     available to unmap a region, usually mapped by mmap().
  */
-#$d_wait4 HAS_WAIT4    /**/
+#$d_munmap HAS_MUNMAP          /**/
 
-/* HAS_WAITPID:
- *     This symbol, if defined, indicates that the waitpid routine is
- *     available to wait for child process.
+/* HAS_NICE:
+ *     This symbol, if defined, indicates that the nice routine is
+ *     available.
  */
-#$d_waitpid HAS_WAITPID        /**/
+#$d_nice HAS_NICE              /**/
 
-/* HAS_WCSTOMBS:
- *     This symbol, if defined, indicates that the wcstombs routine is
- *     available to convert wide character strings to multibyte strings.
+/* HAS_PATHCONF:
+ *     This symbol, if defined, indicates that pathconf() is available
+ *     to determine file-system related limits and options associated
+ *     with a given filename.
  */
-#$d_wcstombs HAS_WCSTOMBS      /**/
-
-/* HAS_WCTOMB:
- *     This symbol, if defined, indicates that the wctomb routine is available
- *     to covert a wide character to a multibyte.
+/* HAS_FPATHCONF:
+ *     This symbol, if defined, indicates that pathconf() is available
+ *     to determine file-system related limits and options associated
+ *     with a given open file descriptor.
  */
-#$d_wctomb HAS_WCTOMB          /**/
+#$d_pathconf HAS_PATHCONF              /**/
+#$d_fpathconf HAS_FPATHCONF            /**/
 
-/* I_ARPA_INET:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <arpa/inet.h> to get inet_addr and friends declarations.
+/* HAS_PAUSE:
+ *     This symbol, if defined, indicates that the pause routine is
+ *     available to suspend a process until a signal is received.
  */
-#$i_arpainet   I_ARPA_INET             /**/
+#$d_pause HAS_PAUSE            /**/
 
-/* I_DBM:
- *     This symbol, if defined, indicates that <dbm.h> exists and should
- *     be included.
- */
-/* I_RPCSVC_DBM:
- *     This symbol, if defined, indicates that <rpcsvc/dbm.h> exists and
- *     should be included.
+/* HAS_PIPE:
+ *     This symbol, if defined, indicates that the pipe routine is
+ *     available to create an inter-process channel.
  */
-#$i_dbm I_DBM  /**/
-#$i_rpcsvcdbm I_RPCSVC_DBM     /**/
+#$d_pipe HAS_PIPE              /**/
 
-/* I_DIRENT:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <dirent.h>. Using this symbol also triggers the definition
- *     of the Direntry_t define which ends up being 'struct dirent' or
- *     'struct direct' depending on the availability of <dirent.h>.
- */
-/* DIRNAMLEN:
- *     This symbol, if defined, indicates to the C program that the length
- *     of directory entry names is provided by a d_namlen field.  Otherwise
- *     you need to do strlen() on the d_name field.
- */
-/* Direntry_t:
- *     This symbol is set to 'struct direct' or 'struct dirent' depending on
- *     whether dirent is available or not. You should use this pseudo type to
- *     portably declare your directory entries.
+/* HAS_POLL:
+ *     This symbol, if defined, indicates that the poll routine is
+ *     available to poll active file descriptors. You may safely
+ *     include <poll.h> when this symbol is defined.
  */
-#$i_dirent I_DIRENT            /**/
-#$d_dirnamlen DIRNAMLEN        /**/
-#define Direntry_t $direntrytype
+#$d_poll HAS_POLL              /**/
 
-/* I_DLFCN:
- *     This symbol, if defined, indicates that <dlfcn.h> exists and should
- *     be included.
+/* HAS_READDIR:
+ *     This symbol, if defined, indicates that the readdir routine is
+ *     available to read directory entries. You may have to include
+ *     <dirent.h>. See I_DIRENT.
  */
-#$i_dlfcn I_DLFCN              /**/
+#$d_readdir HAS_READDIR                /**/
 
-/* I_FCNTL:
- *     This manifest constant tells the C program to include <fcntl.h>.
+/* HAS_SEEKDIR:
+ *     This symbol, if defined, indicates that the seekdir routine is
+ *     available. You may have to include <dirent.h>. See I_DIRENT.
  */
-#$i_fcntl I_FCNTL      /**/
+#$d_seekdir HAS_SEEKDIR                /**/
 
-/* I_FLOAT:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <float.h> to get definition of symbols like DBL_MAX or
- *     DBL_MIN, i.e. machine dependent floating point values.
+/* HAS_TELLDIR:
+ *     This symbol, if defined, indicates that the telldir routine is
+ *     available. You may have to include <dirent.h>. See I_DIRENT.
  */
-#$i_float I_FLOAT              /**/
+#$d_telldir HAS_TELLDIR                /**/
 
-/* I_LIMITS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <limits.h> to get definition of symbols like WORD_BIT or
- *     LONG_MAX, i.e. machine dependant limitations.
+/* HAS_REWINDDIR:
+ *     This symbol, if defined, indicates that the rewinddir routine is
+ *     available. You may have to include <dirent.h>. See I_DIRENT.
  */
-#$i_limits I_LIMITS            /**/
+#$d_rewinddir HAS_REWINDDIR            /**/
 
-/* I_LOCALE:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <locale.h>.
+/* HAS_READLINK:
+ *     This symbol, if defined, indicates that the readlink routine is
+ *     available to read the value of a symbolic link.
  */
-#$i_locale     I_LOCALE                /**/
+#$d_readlink HAS_READLINK              /**/
 
-/* I_MATH:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <math.h>.
+/* HAS_RENAME:
+ *     This symbol, if defined, indicates that the rename routine is available
+ *     to rename files.  Otherwise you should do the unlink(), link(), unlink()
+ *     trick.
  */
-#$i_math I_MATH                /**/
+#$d_rename HAS_RENAME  /**/
 
-/* I_MEMORY:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <memory.h>.
+/* HAS_RMDIR:
+ *     This symbol, if defined, indicates that the rmdir routine is
+ *     available to remove directories. Otherwise you should fork off a
+ *     new process to exec /bin/rmdir.
  */
-#$i_memory I_MEMORY            /**/
+#$d_rmdir HAS_RMDIR            /**/
 
-/* I_NET_ERRNO:
- *     This symbol, if defined, indicates that <net/errno.h> exists and 
- *     should be included.
+/* HAS_SELECT:
+ *     This symbol, if defined, indicates that the select routine is
+ *     available to select active file descriptors. If the timeout field
+ *     is used, <sys/time.h> may need to be included.
  */
-#$i_neterrno I_NET_ERRNO               /**/
+#$d_select HAS_SELECT  /**/
 
-/* I_NETINET_IN:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <netinet/in.h>. Otherwise, you may try <sys/in.h>.
+/* HAS_SETEGID:
+ *     This symbol, if defined, indicates that the setegid routine is available
+ *     to change the effective gid of the current program.
  */
-#$i_niin I_NETINET_IN  /**/
+#$d_setegid HAS_SETEGID                /**/
 
-/* I_SFIO:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sfio.h>.
+/* HAS_SETEUID:
+ *     This symbol, if defined, indicates that the seteuid routine is available
+ *     to change the effective uid of the current program.
  */
-#$i_sfio       I_SFIO          /**/
+#$d_seteuid HAS_SETEUID                /**/
 
-/* I_STDDEF:
- *     This symbol, if defined, indicates that <stddef.h> exists and should
- *     be included.
+/* HAS_SETLINEBUF:
+ *     This symbol, if defined, indicates that the setlinebuf routine is
+ *     available to change stderr or stdout from block-buffered or unbuffered
+ *     to a line-buffered mode.
  */
-#$i_stddef I_STDDEF    /**/
+#$d_setlinebuf HAS_SETLINEBUF          /**/
 
-/* I_STDLIB:
- *     This symbol, if defined, indicates that <stdlib.h> exists and should
- *     be included.
+/* HAS_SETLOCALE:
+ *     This symbol, if defined, indicates that the setlocale routine is
+ *     available to handle locale-specific ctype implementations.
  */
-#$i_stdlib I_STDLIB            /**/
+#$d_setlocale HAS_SETLOCALE    /**/
 
-/* I_STRING:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <string.h> (USG systems) instead of <strings.h> (BSD systems).
+/* HAS_SETPGID:
+ *     This symbol, if defined, indicates that the setpgid(pid, gpid)
+ *     routine is available to set process group ID.
  */
-#$i_string I_STRING            /**/
+#$d_setpgid HAS_SETPGID        /**/
 
-/* I_SYS_DIR:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/dir.h>.
+/* HAS_SETPGRP2:
+ *     This symbol, if defined, indicates that the setpgrp2() (as in DG/UX)
+ *     routine is available to set the current process group.
  */
-#$i_sysdir I_SYS_DIR           /**/
+#$d_setpgrp2 HAS_SETPGRP2              /**/
 
-/* I_SYS_FILE:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/file.h> to get definition of R_OK and friends.
+/* HAS_SETPRIORITY:
+ *     This symbol, if defined, indicates that the setpriority routine is
+ *     available to set a process's priority.
  */
-#$i_sysfile I_SYS_FILE         /**/
+#$d_setprior HAS_SETPRIORITY           /**/
 
-/* I_SYS_IOCTL:
- *     This symbol, if defined, indicates that <sys/ioctl.h> exists and should
- *     be included. Otherwise, include <sgtty.h> or <termio.h>.
+/* HAS_SETREGID:
+ *     This symbol, if defined, indicates that the setregid routine is
+ *     available to change the real and effective gid of the current
+ *     process.
  */
-/* I_SYS_SOCKIO:
- *     This symbol, if defined, indicates the <sys/sockio.h> should be included
- *     to get socket ioctl options, like SIOCATMARK.
+/* HAS_SETRESGID:
+ *     This symbol, if defined, indicates that the setresgid routine is
+ *     available to change the real, effective and saved gid of the current
+ *     process.
  */
-#$i_sysioctl   I_SYS_IOCTL             /**/
-#$i_syssockio I_SYS_SOCKIO     /**/
+#$d_setregid HAS_SETREGID              /**/
+#$d_setresgid HAS_SETRESGID            /**/
 
-/* I_SYS_NDIR:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/ndir.h>.
+/* HAS_SETREUID:
+ *     This symbol, if defined, indicates that the setreuid routine is
+ *     available to change the real and effective uid of the current
+ *     process.
  */
-#$i_sysndir I_SYS_NDIR /**/
-
-/* I_SYS_PARAM:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/param.h>.
+/* HAS_SETRESUID:
+ *     This symbol, if defined, indicates that the setresuid routine is
+ *     available to change the real, effective and saved uid of the current
+ *     process.
  */
-#$i_sysparam I_SYS_PARAM               /**/
+#$d_setreuid HAS_SETREUID              /**/
+#$d_setresuid HAS_SETRESUID            /**/
 
-/* I_SYS_RESOURCE:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/resource.h>.
+/* HAS_SETRGID:
+ *     This symbol, if defined, indicates that the setrgid routine is available
+ *     to change the real gid of the current program.
  */
-#$i_sysresrc I_SYS_RESOURCE            /**/
+#$d_setrgid HAS_SETRGID                /**/
 
-/* I_SYS_SELECT:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/select.h> in order to get definition of struct timeval.
+/* HAS_SETRUID:
+ *     This symbol, if defined, indicates that the setruid routine is available
+ *     to change the real uid of the current program.
  */
-#$i_sysselct I_SYS_SELECT      /**/
+#$d_setruid HAS_SETRUID                /**/
 
-/* I_SYS_STAT:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/stat.h>.
+/* HAS_SETSID:
+ *     This symbol, if defined, indicates that the setsid routine is
+ *     available to set the process group ID.
  */
-#$i_sysstat    I_SYS_STAT              /**/
+#$d_setsid HAS_SETSID  /**/
 
-/* I_SYS_TIMES:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/times.h>.
+/* 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.
  */
-#$i_systimes   I_SYS_TIMES             /**/
-
-/* I_SYS_TYPES:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/types.h>.
+/* HAS_INDEX:
+ *     This symbol is defined to indicate that the index()/rindex()
+ *     functions are available for string searching.
  */
-#$i_systypes   I_SYS_TYPES             /**/
+#$d_strchr HAS_STRCHR  /**/
+#$d_index HAS_INDEX    /**/
 
-/* I_SYS_UN:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/un.h> to get UNIX domain socket definitions.
+/* HAS_STRCOLL:
+ *     This symbol, if defined, indicates that the strcoll routine is
+ *     available to compare strings using collating information.
  */
-#$i_sysun I_SYS_UN             /**/
+#$d_strcoll HAS_STRCOLL        /**/
 
-/* I_SYS_WAIT:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/wait.h>.
+/* USE_STRUCT_COPY:
+ *     This symbol, if defined, indicates that this C compiler knows how
+ *     to copy structures.  If undefined, you'll need to use a block copy
+ *     routine of some sort instead.
  */
-#$i_syswait I_SYS_WAIT /**/
+#$d_strctcpy   USE_STRUCT_COPY /**/
 
-/* I_TERMIO:
- *     This symbol, if defined, indicates that the program should include
- *     <termio.h> rather than <sgtty.h>.  There are also differences in
- *     the ioctl() calls that depend on the value of this symbol.
- */
-/* I_TERMIOS:
- *     This symbol, if defined, indicates that the program should include
- *     the POSIX termios.h rather than sgtty.h or termio.h.
- *     There are also differences in the ioctl() calls that depend on the
- *     value of this symbol.
- */
-/* I_SGTTY:
- *     This symbol, if defined, indicates that the program should include
- *     <sgtty.h> rather than <termio.h>.  There are also differences in
- *     the ioctl() calls that depend on the value of this symbol.
+/* HAS_STRTOD:
+ *     This symbol, if defined, indicates that the strtod routine is
+ *     available to provide better numeric string conversion than atof().
  */
-#$i_termio I_TERMIO            /**/
-#$i_termios I_TERMIOS          /**/
-#$i_sgtty I_SGTTY              /**/
+#$d_strtod HAS_STRTOD  /**/
 
-/* I_UNISTD:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <unistd.h>.
+/* HAS_STRTOL:
+ *     This symbol, if defined, indicates that the strtol routine is available
+ *     to provide better numeric string conversion than atoi() and friends.
  */
-#$i_unistd I_UNISTD            /**/
+#$d_strtol HAS_STRTOL  /**/
 
-/* I_UTIME:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <utime.h>.
+/* HAS_STRXFRM:
+ *     This symbol, if defined, indicates that the strxfrm() routine is
+ *     available to transform strings.
  */
-#$i_utime I_UTIME              /**/
+#$d_strxfrm HAS_STRXFRM        /**/
 
-/* 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.
+/* HAS_SYMLINK:
+ *     This symbol, if defined, indicates that the symlink routine is available
+ *     to create symbolic links.
  */
-#$i_values I_VALUES            /**/
+#$d_symlink HAS_SYMLINK        /**/
 
-/* I_VFORK:
- *     This symbol, if defined, indicates to the C program that it should
- *     include vfork.h.
+/* HAS_SYSCALL:
+ *     This symbol, if defined, indicates that the syscall routine is
+ *     available to call arbitrary system calls. If undefined, that's tough.
  */
-#$i_vfork I_VFORK      /**/
+#$d_syscall HAS_SYSCALL        /**/
 
-/* 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.
+/* HAS_SYSCONF:
+ *     This symbol, if defined, indicates that sysconf() is available
+ *     to determine system related limits and options.
  */
-/* SHORTSIZE:
- *     This symbol contains the value of sizeof(short) so that the C
- *     preprocessor can make decisions based on it.
+#$d_sysconf HAS_SYSCONF        /**/
+
+/* HAS_SYSTEM:
+ *     This symbol, if defined, indicates that the system routine is
+ *     available to issue a shell command.
  */
-#define INTSIZE $intsize               /**/
-#define LONGSIZE $longsize             /**/
-#define SHORTSIZE $shortsize           /**/
+#$d_system HAS_SYSTEM  /**/
 
-/* MULTIARCH:
- *     This symbol, if defined, signifies that the build
- *     process will produce some binary files that are going to be
- *     used in a cross-platform environment.  This is the case for
- *     example with the NeXT "fat" binaries that contain executables
- *     for several CPUs.
+/* HAS_TCGETPGRP:
+ *     This symbol, if defined, indicates that the tcgetpgrp routine is
+ *     available to get foreground process group ID.
  */
-#$multiarch MULTIARCH          /**/
+#$d_tcgetpgrp HAS_TCGETPGRP            /**/
 
-/* HAS_QUAD:
- *     This symbol, if defined, tells that there's a 64-bit integer type,
- *     Quad_t, and its unsigned counterpar, Uquad_t. QUADKIND will be one
- *     of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT64_T.
+/* HAS_TCSETPGRP:
+ *     This symbol, if defined, indicates that the tcsetpgrp routine is
+ *     available to set foreground process group ID.
  */
-#$d_quad HAS_QUAD      /**/
-#ifdef HAS_QUAD
-#   define Quad_t $quadtype    /**/
-#   define Uquad_t $uquadtype  /**/
-#   define QUADKIND $quadkind  /**/
-#   define QUAD_IS_INT 1
-#   define QUAD_IS_LONG        2
-#   define QUAD_IS_LONG_LONG   3
-#   define QUAD_IS_INT64_T     4
-#endif
+#$d_tcsetpgrp HAS_TCSETPGRP            /**/
 
-/* HAS_ACCESSX:
- *     This symbol, if defined, indicates that the accessx routine is
- *     available to do extended access checks.
+/* HAS_TRUNCATE:
+ *     This symbol, if defined, indicates that the truncate routine is
+ *     available to truncate files.
  */
-#$d_accessx HAS_ACCESSX                /**/
+#$d_truncate HAS_TRUNCATE      /**/
 
-/* HAS_EACCESS:
- *     This symbol, if defined, indicates that the eaccess routine is
- *     available to do extended access checks.
+/* HAS_TZNAME:
+ *     This symbol, if defined, indicates that the tzname[] array is
+ *     available to access timezone names.
  */
-#$d_eaccess HAS_EACCESS                /**/
+#$d_tzname HAS_TZNAME          /**/
 
-/* I_SYS_ACCESS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/access.h>.
+/* HAS_UMASK:
+ *     This symbol, if defined, indicates that the umask routine is
+ *     available to set and get the value of the file creation mask.
  */
-#$i_sysaccess   I_SYS_ACCESS                /**/
+#$d_umask HAS_UMASK            /**/
 
-/* I_SYS_SECURITY:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/security.h>.
+/* HAS_USLEEP:
+ *     This symbol, if defined, indicates that the usleep routine is
+ *     available to let the process sleep on a sub-second accuracy.
  */
-#$i_syssecrt   I_SYS_SECURITY  /**/
+#$d_usleep HAS_USLEEP          /**/
 
-/* MEM_ALIGNBYTES:
- *     This symbol contains the number of bytes required to align a
- *     double, or a long double when applicable. Usual values are 2,
- *     4 and 8. The default is eight, for safety.
+/* HASVOLATILE:
+ *     This symbol, if defined, indicates that this C compiler knows about
+ *     the volatile declaration.
  */
-#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH)
-#  define MEM_ALIGNBYTES 8
-#else
-#define MEM_ALIGNBYTES $alignbytes
+#$d_volatile   HASVOLATILE     /**/
+#ifndef HASVOLATILE
+#define volatile
 #endif
 
-/* BYTEORDER:
- *     This symbol holds the hexadecimal constant defined in byteorder,
- *     in a UV, i.e. 0x1234 or 0x4321 or 0x12345678, etc...
- *     If the compiler supports cross-compiling or multiple-architecture
- *     binaries (eg. on NeXT systems), use compiler-defined macros to
- *     determine the byte order.
- *     On NeXT 3.2 (and greater), you can build "Fat" Multiple Architecture
- *     Binaries (MAB) on either big endian or little endian machines.
- *     The endian-ness is available at compile-time.  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.  Older versions of NeXT that might not have
- *     defined either *_ENDIAN__ were all on Motorola 680x0 series,
- *     so the default case (for NeXT) is big endian to catch them. 
- *     This might matter for NeXT 3.0.
+/* HAS_WAIT4:
+ *     This symbol, if defined, indicates that wait4() exists.
  */
-#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH)
-#  ifdef __LITTLE_ENDIAN__
-#    if LONGSIZE == 4
-#      define BYTEORDER 0x1234
-#    else
-#      if LONGSIZE == 8
-#        define BYTEORDER 0x12345678
-#      endif
-#    endif
-#  else
-#    ifdef __BIG_ENDIAN__
-#      if LONGSIZE == 4
-#        define BYTEORDER 0x4321
-#      else
-#        if LONGSIZE == 8
-#          define BYTEORDER 0x87654321
-#        endif
-#      endif
-#    endif
-#  endif
-#  if !defined(BYTEORDER) && (defined(NeXT) || defined(__NeXT__))
-#    define BYTEORDER 0x4321
-#  endif
-#else
-#define BYTEORDER 0x$byteorder /* large digits for MSB */
-#endif /* NeXT */
+#$d_wait4 HAS_WAIT4    /**/
 
-/* CASTI32:
- *     This symbol is defined if the C compiler can cast negative
- *     or large floating point numbers to 32-bit ints.
+/* HAS_WAITPID:
+ *     This symbol, if defined, indicates that the waitpid routine is
+ *     available to wait for child process.
  */
-#$d_casti32    CASTI32         /**/
+#$d_waitpid HAS_WAITPID        /**/
 
-/* 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
+/* HAS_WCSTOMBS:
+ *     This symbol, if defined, indicates that the wcstombs routine is
+ *     available to convert wide character strings to multibyte strings.
  */
-#$d_castneg    CASTNEGFLOAT            /**/
-#define CASTFLAGS $castflags           /**/
+#$d_wcstombs HAS_WCSTOMBS      /**/
 
-/* VOID_CLOSEDIR:
- *     This symbol, if defined, indicates that the closedir() routine
- *     does not return a value.
+/* HAS_WCTOMB:
+ *     This symbol, if defined, indicates that the wctomb routine is available
+ *     to covert a wide character to a multibyte.
  */
-#$d_void_closedir VOID_CLOSEDIR                /**/
+#$d_wctomb HAS_WCTOMB          /**/
 
-/* HAS_FD_SET:
- *     This symbol, when defined, indicates presence of the fd_set typedef
- *     in <sys/types.h>
+/* I_ARPA_INET:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <arpa/inet.h> to get inet_addr and friends declarations.
  */
-#$d_fd_set HAS_FD_SET  /**/
+#$i_arpainet   I_ARPA_INET             /**/
 
-/* Gconvert:
- *     This preprocessor macro is defined to convert a floating point
- *     number to a string without a trailing decimal point.  This
- *     emulates the behavior of sprintf("%g"), but is sometimes much more
- *     efficient.  If gconvert() is not available, but gcvt() drops the
- *     trailing decimal point, then gcvt() is used.  If all else fails,
- *     a macro using sprintf("%g") is used. Arguments for the Gconvert
- *     macro are: value, number of digits, whether trailing zeros should
- *     be retained, and the output buffer.
- *     The usual values are:
- *             d_Gconvert='gconvert((x),(n),(t),(b))'
- *             d_Gconvert='gcvt((x),(n),(b))'
- *             d_Gconvert='sprintf((b),"%.*g",(n),(x))'
- *     The last two assume trailing zeros should not be kept.
+/* I_DBM:
+ *     This symbol, if defined, indicates that <dbm.h> exists and should
+ *     be included.
  */
-#define Gconvert(x,n,t,b) $d_Gconvert
-
-/* HAS_GETPAGESIZE:
- *     This symbol, if defined, indicates that the getpagesize system call
- *     is available to get system page size, which is the granularity of
- *     many memory management calls.
+/* I_RPCSVC_DBM:
+ *     This symbol, if defined, indicates that <rpcsvc/dbm.h> exists and
+ *     should be included.
  */
-#$d_getpagsz HAS_GETPAGESIZE           /**/
+#$i_dbm I_DBM  /**/
+#$i_rpcsvcdbm I_RPCSVC_DBM     /**/
 
-/* HAS_GNULIBC:
- *     This symbol, if defined, indicates to the C program that 
- *     the GNU C library is being used.  A better check is to use
- *     the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc.
+/* I_DIRENT:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <dirent.h>. Using this symbol also triggers the definition
+ *     of the Direntry_t define which ends up being 'struct dirent' or
+ *     'struct direct' depending on the availability of <dirent.h>.
  */
-#$d_gnulibc HAS_GNULIBC        /**/
-#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE)
-#   define _GNU_SOURCE
-#endif
-/* HAS_ISASCII:
- *     This manifest constant lets the C program know that isascii 
- *     is available.
+/* DIRNAMLEN:
+ *     This symbol, if defined, indicates to the C program that the length
+ *     of directory entry names is provided by a d_namlen field.  Otherwise
+ *     you need to do strlen() on the d_name field.
  */
-#$d_isascii HAS_ISASCII                /**/
+/* Direntry_t:
+ *     This symbol is set to 'struct direct' or 'struct dirent' depending on
+ *     whether dirent is available or not. You should use this pseudo type to
+ *     portably declare your directory entries.
+ */
+#$i_dirent I_DIRENT            /**/
+#$d_dirnamlen DIRNAMLEN        /**/
+#define Direntry_t $direntrytype
 
-/* HAS_LCHOWN:
- *     This symbol, if defined, indicates that the lchown routine is
- *     available to operate on a symbolic link (instead of following the
- *     link).
+/* I_DLFCN:
+ *     This symbol, if defined, indicates that <dlfcn.h> exists and should
+ *     be included.
  */
-#$d_lchown HAS_LCHOWN          /**/
+#$i_dlfcn I_DLFCN              /**/
 
-/* HAS_OPEN3:
- *     This manifest constant lets the C program know that the three
- *     argument form of open(2) is available.
+/* I_FCNTL:
+ *     This manifest constant tells the C program to include <fcntl.h>.
  */
-#$d_open3 HAS_OPEN3            /**/
+#$i_fcntl I_FCNTL      /**/
 
-/* HAS_SAFE_BCOPY:
- *     This symbol, if defined, indicates that the bcopy routine is available
- *     to copy potentially overlapping memory blocks. Normally, you should
- *     probably use memmove() or memcpy(). If neither is defined, roll your
- *     own version.
+/* I_FLOAT:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <float.h> to get definition of symbols like DBL_MAX or
+ *     DBL_MIN, i.e. machine dependent floating point values.
  */
-#$d_safebcpy HAS_SAFE_BCOPY    /**/
+#$i_float I_FLOAT              /**/
 
-/* HAS_SAFE_MEMCPY:
- *     This symbol, if defined, indicates that the memcpy routine is available
- *     to copy potentially overlapping memory blocks.  If you need to
- *     copy overlapping memory blocks, you should check HAS_MEMMOVE and
- *     use memmove() instead, if available.
+/* I_LIMITS:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <limits.h> to get definition of symbols like WORD_BIT or
+ *     LONG_MAX, i.e. machine dependant limitations.
  */
-#$d_safemcpy HAS_SAFE_MEMCPY   /**/
+#$i_limits I_LIMITS            /**/
 
-/* 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.
+/* I_LOCALE:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <locale.h>.
  */
-#$d_sanemcmp HAS_SANE_MEMCMP   /**/
+#$i_locale     I_LOCALE                /**/
 
-/* HAS_SIGACTION:
- *     This symbol, if defined, indicates that Vr4's sigaction() routine
- *     is available.
+/* I_MATH:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <math.h>.
  */
-#$d_sigaction HAS_SIGACTION    /**/
+#$i_math I_MATH                /**/
 
-/* HAS_SIGSETJMP:
- *     This variable indicates to the C program that the sigsetjmp()
- *     routine is available to save the calling process's registers
- *     and stack environment for later use by siglongjmp(), and
- *     to optionally save the process's signal mask.  See
- *     Sigjmp_buf, Sigsetjmp, and Siglongjmp.
- */
-/* Sigjmp_buf:
- *     This is the buffer type to be used with Sigsetjmp and Siglongjmp.
- */
-/* Sigsetjmp:
- *     This macro is used in the same way as sigsetjmp(), but will invoke
- *     traditional setjmp() if sigsetjmp isn't available.
- *     See HAS_SIGSETJMP.
+/* I_MEMORY:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <memory.h>.
  */
-/* Siglongjmp:
- *     This macro is used in the same way as siglongjmp(), but will invoke
- *     traditional longjmp() if siglongjmp isn't available.
- *     See HAS_SIGSETJMP.
+#$i_memory I_MEMORY            /**/
+
+/* I_NET_ERRNO:
+ *     This symbol, if defined, indicates that <net/errno.h> exists and 
+ *     should be included.
  */
-#$d_sigsetjmp HAS_SIGSETJMP    /**/
-#ifdef HAS_SIGSETJMP
-#define Sigjmp_buf sigjmp_buf
-#define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask))
-#define Siglongjmp(buf,retval) siglongjmp((buf),(retval))
-#else
-#define Sigjmp_buf jmp_buf
-#define Sigsetjmp(buf,save_mask) setjmp((buf))
-#define Siglongjmp(buf,retval) longjmp((buf),(retval))
-#endif
+#$i_neterrno I_NET_ERRNO               /**/
 
-/* 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.
+/* I_NETINET_IN:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <netinet/in.h>. Otherwise, you may try <sys/in.h>.
  */
-/* 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_niin I_NETINET_IN  /**/
+
+/* I_SFIO:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sfio.h>.
  */
-/* STDIO_PTR_LVALUE:
- *     This symbol is defined if the FILE_ptr macro can be used as an
- *     lvalue.
+#$i_sfio       I_SFIO          /**/
+
+/* I_STDDEF:
+ *     This symbol, if defined, indicates that <stddef.h> exists and should
+ *     be included.
  */
-/* 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.
+#$i_stddef I_STDDEF    /**/
+
+/* I_STDLIB:
+ *     This symbol, if defined, indicates that <stdlib.h> exists and should
+ *     be included.
  */
-/* STDIO_CNT_LVALUE:
- *     This symbol is defined if the FILE_cnt macro can be used as an
- *     lvalue.
+#$i_stdlib I_STDLIB            /**/
+
+/* I_STRING:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <string.h> (USG systems) instead of <strings.h> (BSD systems).
  */
-/* STDIO_PTR_LVAL_SETS_CNT:
- *     This symbol is defined if using the FILE_ptr macro as an lvalue
- *     to increase the pointer by n has the side effect of decreasing the
- *     value of File_cnt(fp) by n.
+#$i_string I_STRING            /**/
+
+/* I_SYS_DIR:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/dir.h>.
  */
-/* STDIO_PTR_LVAL_NOCHANGE_CNT:
- *     This symbol is defined if using the FILE_ptr macro as an lvalue
- *     to increase the pointer by n leaves File_cnt(fp) unchanged.
+#$i_sysdir I_SYS_DIR           /**/
+
+/* I_SYS_FILE:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/file.h> to get definition of R_OK and friends.
  */
-#$d_stdstdio USE_STDIO_PTR     /**/
-#ifdef USE_STDIO_PTR
-#define FILE_ptr(fp)   $stdio_ptr
-#$d_stdio_ptr_lval STDIO_PTR_LVALUE            /**/
-#define FILE_cnt(fp)   $stdio_cnt
-#$d_stdio_cnt_lval STDIO_CNT_LVALUE            /**/
-#$d_stdio_ptr_lval_sets_cnt STDIO_PTR_LVAL_SETS_CNT    /**/
-#$d_stdio_ptr_lval_nochange_cnt STDIO_PTR_LVAL_NOCHANGE_CNT    /**/
-#endif
+#$i_sysfile I_SYS_FILE         /**/
 
-/* 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.
+/* I_SYS_IOCTL:
+ *     This symbol, if defined, indicates that <sys/ioctl.h> exists and should
+ *     be included. Otherwise, include <sgtty.h> or <termio.h>.
  */
-/* 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.
+/* I_SYS_SOCKIO:
+ *     This symbol, if defined, indicates the <sys/sockio.h> should be included
+ *     to get socket ioctl options, like SIOCATMARK.
  */
-/* 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.
+#$i_sysioctl   I_SYS_IOCTL             /**/
+#$i_syssockio I_SYS_SOCKIO     /**/
+
+/* I_SYS_NDIR:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/ndir.h>.
  */
-#$d_stdiobase USE_STDIO_BASE   /**/
-#ifdef USE_STDIO_BASE
-#define FILE_base(fp)  $stdio_base
-#define FILE_bufsiz(fp)        $stdio_bufsiz
-#endif
+#$i_sysndir I_SYS_NDIR /**/
 
-/* 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().
+/* I_SYS_PARAM:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/param.h>.
  */
-/* 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.
+#$i_sysparam I_SYS_PARAM               /**/
+
+/* I_SYS_RESOURCE:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/resource.h>.
  */
-#$d_vprintf HAS_VPRINTF        /**/
-#$d_charvspr USE_CHAR_VSPRINTF         /**/
+#$i_sysresrc I_SYS_RESOURCE            /**/
 
-/* DOUBLESIZE:
- *     This symbol contains the size of a double, so that the C preprocessor
- *     can make decisions based on it.
+/* I_SYS_SELECT:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/select.h> in order to get definition of struct timeval.
  */
-#define DOUBLESIZE $doublesize         /**/
+#$i_sysselct I_SYS_SELECT      /**/
 
-/* I_TIME:
+/* I_SYS_STAT:
  *     This symbol, if defined, indicates to the C program that it should
- *     include <time.h>.
+ *     include <sys/stat.h>.
  */
-/* I_SYS_TIME:
+#$i_sysstat    I_SYS_STAT              /**/
+
+/* I_SYS_TIMES:
  *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/time.h>.
+ *     include <sys/times.h>.
  */
-/* I_SYS_TIME_KERNEL:
+#$i_systimes   I_SYS_TIMES             /**/
+
+/* I_SYS_TYPES:
  *     This symbol, if defined, indicates to the C program that it should
- *     include <sys/time.h> with KERNEL defined.
+ *     include <sys/types.h>.
  */
-/* HAS_TM_TM_ZONE:
- *     This symbol, if defined, indicates to the C program that
- *     the struct tm has a tm_zone field.
+#$i_systypes   I_SYS_TYPES             /**/
+
+/* I_SYS_UN:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/un.h> to get UNIX domain socket definitions.
  */
-/* HAS_TM_TM_GMTOFF:
- *     This symbol, if defined, indicates to the C program that
- *     the struct tm has a tm_gmtoff field.
+#$i_sysun I_SYS_UN             /**/
+
+/* I_SYS_WAIT:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/wait.h>.
  */
-#$i_time I_TIME                /**/
-#$i_systime I_SYS_TIME         /**/
-#$i_systimek I_SYS_TIME_KERNEL         /**/
-#$d_tm_tm_zone HAS_TM_TM_ZONE          /**/
-#$d_tm_tm_gmtoff HAS_TM_TM_GMTOFF              /**/
+#$i_syswait I_SYS_WAIT /**/
 
-/* 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.
+/* I_TERMIO:
+ *     This symbol, if defined, indicates that the program should include
+ *     <termio.h> rather than <sgtty.h>.  There are also differences in
+ *     the ioctl() calls that depend on the value of this symbol.
  */
-/* VAL_EAGAIN:
- *     This symbol holds the errno error code set by read() when no data was
- *     present on the non-blocking file descriptor.
+/* I_TERMIOS:
+ *     This symbol, if defined, indicates that the program should include
+ *     the POSIX termios.h rather than sgtty.h or termio.h.
+ *     There are also differences in the ioctl() calls that depend on the
+ *     value of this symbol.
  */
-/* 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!
+/* I_SGTTY:
+ *     This symbol, if defined, indicates that the program should include
+ *     <sgtty.h> rather than <termio.h>.  There are also differences in
+ *     the ioctl() calls that depend on the value of this symbol.
  */
-/* 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!).
+#$i_termio I_TERMIO            /**/
+#$i_termios I_TERMIOS          /**/
+#$i_sgtty I_SGTTY              /**/
+
+/* I_UNISTD:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <unistd.h>.
  */
-#define VAL_O_NONBLOCK $o_nonblock
-#define VAL_EAGAIN $eagain
-#define RD_NODATA $rd_nodata
-#$d_eofnblk EOF_NONBLOCK
+#$i_unistd I_UNISTD            /**/
 
-/* 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 *).
+/* I_UTIME:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <utime.h>.
  */
-#define PTRSIZE $ptrsize               /**/
+#$i_utime I_UTIME              /**/
 
-/* Drand01:
- *     This macro is to be used to generate uniformly distributed
- *     random numbers over the range [0., 1.[.  You may have to supply
- *     an 'extern double drand48();' in your program since SunOS 4.1.3
- *     doesn't provide you with anything relevant in its headers.
- *     See HAS_DRAND48_PROTO.
+/* 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.
  */
-/* Rand_seed_t:
- *     This symbol defines the type of the argument of the
- *     random seed function.
+#$i_values I_VALUES            /**/
+
+/* I_VFORK:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include vfork.h.
  */
-/* seedDrand01:
- *     This symbol defines the macro to be used in seeding the
- *     random number generator (see Drand01).
+#$i_vfork I_VFORK      /**/
+
+/* INTSIZE:
+ *     This symbol contains the value of sizeof(int) so that the C
+ *     preprocessor can make decisions based on it.
  */
-/* RANDBITS:
- *     This symbol indicates how many bits are produced by the
- *     function used to generate normalized random numbers.
- *     Values include 15, 16, 31, and 48.
+/* LONGSIZE:
+ *     This symbol contains the value of sizeof(long) so that the C
+ *     preprocessor can make decisions based on it.
  */
-#define Drand01()              $drand01                /**/
-#define Rand_seed_t            $randseedtype           /**/
-#define seedDrand01(x) $seedfunc((Rand_seed_t)x)       /**/
-#define RANDBITS               $randbits               /**/
-
-/* 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).
+/* SHORTSIZE:
+ *     This symbol contains the value of sizeof(short) so that the C
+ *     preprocessor can make decisions based on it.
  */
-#define SSize_t $ssizetype      /* signed count of bytes */
+#define INTSIZE $intsize               /**/
+#define LONGSIZE $longsize             /**/
+#define SHORTSIZE $shortsize           /**/
 
-/* HAS_ALARM:
- *     This symbol, if defined, indicates that the alarm routine is
- *     available.
+/* MULTIARCH:
+ *     This symbol, if defined, signifies that the build
+ *     process will produce some binary files that are going to be
+ *     used in a cross-platform environment.  This is the case for
+ *     example with the NeXT "fat" binaries that contain executables
+ *     for several CPUs.
  */
-#$d_alarm HAS_ALARM            /**/
+#$multiarch MULTIARCH          /**/
 
-/* HASATTRIBUTE:
- *     This symbol indicates the C compiler can check for function attributes,
- *     such as printf formats. This is normally only supported by GNU cc.
+/* HAS_QUAD:
+ *     This symbol, if defined, tells that there's a 64-bit integer type,
+ *     Quad_t, and its unsigned counterpar, Uquad_t. QUADKIND will be one
+ *     of QUAD_IS_INT, QUAD_IS_LONG, QUAD_IS_LONG_LONG, or QUAD_IS_INT64_T.
  */
-#$d_attribut HASATTRIBUTE      /**/
-#ifndef HASATTRIBUTE
-#define __attribute__(_arg_)
+#$d_quad HAS_QUAD      /**/
+#ifdef HAS_QUAD
+#   define Quad_t $quadtype    /**/
+#   define Uquad_t $uquadtype  /**/
+#   define QUADKIND $quadkind  /**/
+#   define QUAD_IS_INT 1
+#   define QUAD_IS_LONG        2
+#   define QUAD_IS_LONG_LONG   3
+#   define QUAD_IS_INT64_T     4
 #endif
 
-/* HAS_BCMP:
- *     This symbol is defined if the bcmp() routine is available to
- *     compare blocks of memory.
+/* HAS_ACCESSX:
+ *     This symbol, if defined, indicates that the accessx routine is
+ *     available to do extended access checks.
  */
-#$d_bcmp HAS_BCMP      /**/
+#$d_accessx HAS_ACCESSX                /**/
 
-/* HAS_BCOPY:
- *     This symbol is defined if the bcopy() routine is available to
- *     copy blocks of memory.
+/* HAS_EACCESS:
+ *     This symbol, if defined, indicates that the eaccess routine is
+ *     available to do extended access checks.
  */
-#$d_bcopy HAS_BCOPY    /**/
+#$d_eaccess HAS_EACCESS                /**/
 
-/* HAS_BZERO:
- *     This symbol is defined if the bzero() routine is available to
- *     set a memory block to 0.
+/* I_SYS_ACCESS:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/access.h>.
  */
-#$d_bzero HAS_BZERO    /**/
+#$i_sysaccess   I_SYS_ACCESS                /**/
 
-/* HAS_CHOWN:
- *     This symbol, if defined, indicates that the chown routine is
- *     available.
+/* I_SYS_SECURITY:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/security.h>.
  */
-#$d_chown HAS_CHOWN            /**/
+#$i_syssecrt   I_SYS_SECURITY  /**/
 
-/* HAS_CHROOT:
- *     This symbol, if defined, indicates that the chroot routine is
- *     available.
+/* MEM_ALIGNBYTES:
+ *     This symbol contains the number of bytes required to align a
+ *     double, or a long double when applicable. Usual values are 2,
+ *     4 and 8. The default is eight, for safety.
  */
-#$d_chroot HAS_CHROOT          /**/
+#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH)
+#  define MEM_ALIGNBYTES 8
+#else
+#define MEM_ALIGNBYTES $alignbytes
+#endif
 
-/* HAS_CHSIZE:
- *     This symbol, if defined, indicates that the chsize routine is available
- *     to truncate files.  You might need a -lx to get this routine.
+/* BYTEORDER:
+ *     This symbol holds the hexadecimal constant defined in byteorder,
+ *     in a UV, i.e. 0x1234 or 0x4321 or 0x12345678, etc...
+ *     If the compiler supports cross-compiling or multiple-architecture
+ *     binaries (eg. on NeXT systems), use compiler-defined macros to
+ *     determine the byte order.
+ *     On NeXT 3.2 (and greater), you can build "Fat" Multiple Architecture
+ *     Binaries (MAB) on either big endian or little endian machines.
+ *     The endian-ness is available at compile-time.  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.  Older versions of NeXT that might not have
+ *     defined either *_ENDIAN__ were all on Motorola 680x0 series,
+ *     so the default case (for NeXT) is big endian to catch them. 
+ *     This might matter for NeXT 3.0.
  */
-#$d_chsize     HAS_CHSIZE              /**/
+#if defined(USE_CROSS_COMPILE) || defined(MULTIARCH)
+#  ifdef __LITTLE_ENDIAN__
+#    if LONGSIZE == 4
+#      define BYTEORDER 0x1234
+#    else
+#      if LONGSIZE == 8
+#        define BYTEORDER 0x12345678
+#      endif
+#    endif
+#  else
+#    ifdef __BIG_ENDIAN__
+#      if LONGSIZE == 4
+#        define BYTEORDER 0x4321
+#      else
+#        if LONGSIZE == 8
+#          define BYTEORDER 0x87654321
+#        endif
+#      endif
+#    endif
+#  endif
+#  if !defined(BYTEORDER) && (defined(NeXT) || defined(__NeXT__))
+#    define BYTEORDER 0x4321
+#  endif
+#else
+#define BYTEORDER 0x$byteorder /* large digits for MSB */
+#endif /* NeXT */
 
-/* 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
- *     within your programs. The mere use of the "const" keyword will
- *     trigger the necessary tests.
+/* CASTI32:
+ *     This symbol is defined if the C compiler can cast negative
+ *     or large floating point numbers to 32-bit ints.
  */
-#$d_const HASCONST     /**/
-#ifndef HASCONST
-#define const
-#endif
+#$d_casti32    CASTI32         /**/
 
-/* HAS_CUSERID:
- *     This symbol, if defined, indicates that the cuserid routine is
- *     available to get character login names.
+/* CASTNEGFLOAT:
+ *     This symbol is defined if the C compiler can cast negative
+ *     numbers to unsigned longs, ints and shorts.
  */
-#$d_cuserid HAS_CUSERID                /**/
+/* 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
+ */
+#$d_castneg    CASTNEGFLOAT            /**/
+#define CASTFLAGS $castflags           /**/
 
-/* HAS_DBL_DIG:
- *     This symbol, if defined, indicates that this system's <float.h>
- *     or <limits.h> defines the symbol DBL_DIG, which is the number
- *     of significant digits in a double precision number.  If this
- *     symbol is not defined, a guess of 15 is usually pretty good.
+/* VOID_CLOSEDIR:
+ *     This symbol, if defined, indicates that the closedir() routine
+ *     does not return a value.
  */
-#$d_dbl_dig HAS_DBL_DIG        /* */
+#$d_void_closedir VOID_CLOSEDIR                /**/
 
-/* HAS_DIFFTIME:
- *     This symbol, if defined, indicates that the difftime routine is
- *     available.
+/* HAS_FD_SET:
+ *     This symbol, when defined, indicates presence of the fd_set typedef
+ *     in <sys/types.h>
  */
-#$d_difftime HAS_DIFFTIME              /**/
+#$d_fd_set HAS_FD_SET  /**/
 
-/* HAS_DLERROR:
- *     This symbol, if defined, indicates that the dlerror routine is
- *     available to return a string describing the last error that
- *     occurred from a call to dlopen(), dlclose() or dlsym().
+/* Gconvert:
+ *     This preprocessor macro is defined to convert a floating point
+ *     number to a string without a trailing decimal point.  This
+ *     emulates the behavior of sprintf("%g"), but is sometimes much more
+ *     efficient.  If gconvert() is not available, but gcvt() drops the
+ *     trailing decimal point, then gcvt() is used.  If all else fails,
+ *     a macro using sprintf("%g") is used. Arguments for the Gconvert
+ *     macro are: value, number of digits, whether trailing zeros should
+ *     be retained, and the output buffer.
+ *     The usual values are:
+ *             d_Gconvert='gconvert((x),(n),(t),(b))'
+ *             d_Gconvert='gcvt((x),(n),(b))'
+ *             d_Gconvert='sprintf((b),"%.*g",(n),(x))'
+ *     The last two assume trailing zeros should not be kept.
  */
-#$d_dlerror HAS_DLERROR        /**/
+#define Gconvert(x,n,t,b) $d_Gconvert
 
-/* HAS_DUP2:
- *     This symbol, if defined, indicates that the dup2 routine is
- *     available to duplicate file descriptors.
+/* HAS_GETPAGESIZE:
+ *     This symbol, if defined, indicates that the getpagesize system call
+ *     is available to get system page size, which is the granularity of
+ *     many memory management calls.
  */
-#$d_dup2 HAS_DUP2      /**/
+#$d_getpagsz HAS_GETPAGESIZE           /**/
 
-/* HAS_FCHMOD:
- *     This symbol, if defined, indicates that the fchmod routine is available
- *     to change mode of opened files.  If unavailable, use chmod().
+/* HAS_GNULIBC:
+ *     This symbol, if defined, indicates to the C program that 
+ *     the GNU C library is being used.  A better check is to use
+ *     the __GLIBC__ and __GLIBC_MINOR__ symbols supplied with glibc.
  */
-#$d_fchmod HAS_FCHMOD          /**/
+#$d_gnulibc HAS_GNULIBC        /**/
+#if defined(HAS_GNULIBC) && !defined(_GNU_SOURCE)
+#   define _GNU_SOURCE
+#endif
+/* HAS_ISASCII:
+ *     This manifest constant lets the C program know that isascii 
+ *     is available.
+ */
+#$d_isascii HAS_ISASCII                /**/
 
-/* HAS_FCHOWN:
- *     This symbol, if defined, indicates that the fchown routine is available
- *     to change ownership of opened files.  If unavailable, use chown().
+/* HAS_LCHOWN:
+ *     This symbol, if defined, indicates that the lchown routine is
+ *     available to operate on a symbolic link (instead of following the
+ *     link).
  */
-#$d_fchown HAS_FCHOWN          /**/
+#$d_lchown HAS_LCHOWN          /**/
 
-/* HAS_FCNTL:
- *     This symbol, if defined, indicates to the C program that
- *     the fcntl() function exists.
+/* HAS_OPEN3:
+ *     This manifest constant lets the C program know that the three
+ *     argument form of open(2) is available.
  */
-#$d_fcntl HAS_FCNTL            /**/
+#$d_open3 HAS_OPEN3            /**/
 
-/* HAS_FGETPOS:
- *     This symbol, if defined, indicates that the fgetpos routine is
- *     available to get the file position indicator, similar to ftell().
+/* HAS_SAFE_BCOPY:
+ *     This symbol, if defined, indicates that the bcopy routine is available
+ *     to copy potentially overlapping memory blocks. Normally, you should
+ *     probably use memmove() or memcpy(). If neither is defined, roll your
+ *     own version.
  */
-#$d_fgetpos HAS_FGETPOS        /**/
+#$d_safebcpy HAS_SAFE_BCOPY    /**/
 
-/* HAS_FLOCK:
- *     This symbol, if defined, indicates that the flock routine is
- *     available to do file locking.
+/* HAS_SAFE_MEMCPY:
+ *     This symbol, if defined, indicates that the memcpy routine is available
+ *     to copy potentially overlapping memory blocks.  If you need to
+ *     copy overlapping memory blocks, you should check HAS_MEMMOVE and
+ *     use memmove() instead, if available.
  */
-#$d_flock HAS_FLOCK            /**/
+#$d_safemcpy HAS_SAFE_MEMCPY   /**/
 
-/* HAS_FORK:
- *     This symbol, if defined, indicates that the fork routine is
- *     available.
+/* 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.
  */
-#$d_fork HAS_FORK              /**/
+#$d_sanemcmp HAS_SANE_MEMCMP   /**/
 
-/* HAS_FSETPOS:
- *     This symbol, if defined, indicates that the fsetpos routine is
- *     available to set the file position indicator, similar to fseek().
+/* HAS_SIGACTION:
+ *     This symbol, if defined, indicates that Vr4's sigaction() routine
+ *     is available.
  */
-#$d_fsetpos HAS_FSETPOS        /**/
+#$d_sigaction HAS_SIGACTION    /**/
 
-/* HAS_GETTIMEOFDAY:
- *     This symbol, if defined, indicates that the gettimeofday() system
- *     call is available for a sub-second accuracy clock. Usually, the file
- *     <sys/resource.h> needs to be included (see I_SYS_RESOURCE).
- *     The type "Timeval" should be used to refer to "struct timeval".
+/* HAS_SIGSETJMP:
+ *     This variable indicates to the C program that the sigsetjmp()
+ *     routine is available to save the calling process's registers
+ *     and stack environment for later use by siglongjmp(), and
+ *     to optionally save the process's signal mask.  See
+ *     Sigjmp_buf, Sigsetjmp, and Siglongjmp.
  */
-#$d_gettimeod HAS_GETTIMEOFDAY /**/
-#ifdef HAS_GETTIMEOFDAY
-#define Timeval struct timeval /* Structure used by gettimeofday() */
+/* Sigjmp_buf:
+ *     This is the buffer type to be used with Sigsetjmp and Siglongjmp.
+ */
+/* Sigsetjmp:
+ *     This macro is used in the same way as sigsetjmp(), but will invoke
+ *     traditional setjmp() if sigsetjmp isn't available.
+ *     See HAS_SIGSETJMP.
+ */
+/* Siglongjmp:
+ *     This macro is used in the same way as siglongjmp(), but will invoke
+ *     traditional longjmp() if siglongjmp isn't available.
+ *     See HAS_SIGSETJMP.
+ */
+#$d_sigsetjmp HAS_SIGSETJMP    /**/
+#ifdef HAS_SIGSETJMP
+#define Sigjmp_buf sigjmp_buf
+#define Sigsetjmp(buf,save_mask) sigsetjmp((buf),(save_mask))
+#define Siglongjmp(buf,retval) siglongjmp((buf),(retval))
+#else
+#define Sigjmp_buf jmp_buf
+#define Sigsetjmp(buf,save_mask) setjmp((buf))
+#define Siglongjmp(buf,retval) longjmp((buf),(retval))
+#endif
+
+/* 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.
+ */
+/* STDIO_PTR_LVAL_SETS_CNT:
+ *     This symbol is defined if using the FILE_ptr macro as an lvalue
+ *     to increase the pointer by n has the side effect of decreasing the
+ *     value of File_cnt(fp) by n.
+ */
+/* STDIO_PTR_LVAL_NOCHANGE_CNT:
+ *     This symbol is defined if using the FILE_ptr macro as an lvalue
+ *     to increase the pointer by n leaves File_cnt(fp) unchanged.
+ */
+#$d_stdstdio USE_STDIO_PTR     /**/
+#ifdef USE_STDIO_PTR
+#define FILE_ptr(fp)   $stdio_ptr
+#$d_stdio_ptr_lval STDIO_PTR_LVALUE            /**/
+#define FILE_cnt(fp)   $stdio_cnt
+#$d_stdio_cnt_lval STDIO_CNT_LVALUE            /**/
+#$d_stdio_ptr_lval_sets_cnt STDIO_PTR_LVAL_SETS_CNT    /**/
+#$d_stdio_ptr_lval_nochange_cnt STDIO_PTR_LVAL_NOCHANGE_CNT    /**/
 #endif
 
-/* HAS_GETGROUPS:
- *     This symbol, if defined, indicates that the getgroups() routine is
- *     available to get the list of process groups.  If unavailable, multiple
- *     groups are probably not supported.
- */
-#$d_getgrps HAS_GETGROUPS              /**/
-
-/* HAS_GETLOGIN:
- *     This symbol, if defined, indicates that the getlogin routine is
- *     available to get the login name.
+/* 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.
  */
-#$d_getlogin 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.
+/* 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.
  */
-#$d_getpgid HAS_GETPGID                /**/
-
-/* HAS_GETPGRP2:
- *     This symbol, if defined, indicates that the getpgrp2() (as in DG/UX)
- *     routine is available to get the current process group.
+/* 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.
  */
-#$d_getpgrp2 HAS_GETPGRP2              /**/
+#$d_stdiobase USE_STDIO_BASE   /**/
+#ifdef USE_STDIO_BASE
+#define FILE_base(fp)  $stdio_base
+#define FILE_bufsiz(fp)        $stdio_bufsiz
+#endif
 
-/* HAS_GETPPID:
- *     This symbol, if defined, indicates that the getppid routine is
- *     available to get the parent process ID.
+/* 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().
  */
-#$d_getppid HAS_GETPPID                /**/
-
-/* HAS_GETPRIORITY:
- *     This symbol, if defined, indicates that the getpriority routine is
- *     available to get a process's priority.
+/* 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.
  */
-#$d_getprior HAS_GETPRIORITY           /**/
+#$d_vprintf HAS_VPRINTF        /**/
+#$d_charvspr USE_CHAR_VSPRINTF         /**/
 
-/* 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.
+/* DOUBLESIZE:
+ *     This symbol contains the size of a double, so that the C preprocessor
+ *     can make decisions based on it.
  */
-#$d_inetaton HAS_INET_ATON             /**/
+#define DOUBLESIZE $doublesize         /**/
 
-/* HAS_KILLPG:
- *     This symbol, if defined, indicates that the killpg routine is available
- *     to kill process groups.  If unavailable, you probably should use kill
- *     with a negative process number.
+/* I_TIME:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <time.h>.
  */
-#$d_killpg HAS_KILLPG  /**/
-
-/* HAS_LINK:
- *     This symbol, if defined, indicates that the link routine is
- *     available to create hard links.
+/* I_SYS_TIME:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/time.h>.
  */
-#$d_link HAS_LINK      /**/
-
-/* HAS_LOCALECONV:
- *     This symbol, if defined, indicates that the localeconv routine is
- *     available for numeric and monetary formatting conventions.
+/* I_SYS_TIME_KERNEL:
+ *     This symbol, if defined, indicates to the C program that it should
+ *     include <sys/time.h> with KERNEL defined.
  */
-#$d_locconv HAS_LOCALECONV     /**/
-
-/* HAS_LOCKF:
- *     This symbol, if defined, indicates that the lockf routine is
- *     available to do file locking.
+/* HAS_TM_TM_ZONE:
+ *     This symbol, if defined, indicates to the C program that
+ *     the struct tm has a tm_zone field.
  */
-#$d_lockf HAS_LOCKF            /**/
-
-/* HAS_LSTAT:
- *     This symbol, if defined, indicates that the lstat routine is
- *     available to do file stats on symbolic links.
+/* HAS_TM_TM_GMTOFF:
+ *     This symbol, if defined, indicates to the C program that
+ *     the struct tm has a tm_gmtoff field.
  */
-#$d_lstat HAS_LSTAT            /**/
+#$i_time I_TIME                /**/
+#$i_systime I_SYS_TIME         /**/
+#$i_systimek I_SYS_TIME_KERNEL         /**/
+#$d_tm_tm_zone HAS_TM_TM_ZONE          /**/
+#$d_tm_tm_gmtoff HAS_TM_TM_GMTOFF              /**/
 
-/* HAS_MBLEN:
- *     This symbol, if defined, indicates that the mblen routine is available
- *     to find the number of bytes in a multibye character.
+/* 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.
  */
-#$d_mblen HAS_MBLEN            /**/
-
-/* HAS_MBSTOWCS:
- *     This symbol, if defined, indicates that the mbstowcs routine is
- *     available to covert a multibyte string into a wide character string.
+/* VAL_EAGAIN:
+ *     This symbol holds the errno error code set by read() when no data was
+ *     present on the non-blocking file descriptor.
  */
-#$d_mbstowcs   HAS_MBSTOWCS            /**/
-
-/* HAS_MBTOWC:
- *     This symbol, if defined, indicates that the mbtowc routine is available
- *     to covert a multibyte to a wide character.
+/* 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!
  */
-#$d_mbtowc HAS_MBTOWC          /**/
-
-/* HAS_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     to compare blocks of memory.
+/* 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!).
  */
-#$d_memcmp HAS_MEMCMP  /**/
+#define VAL_O_NONBLOCK $o_nonblock
+#define VAL_EAGAIN $eagain
+#define RD_NODATA $rd_nodata
+#$d_eofnblk EOF_NONBLOCK
 
-/* HAS_MEMCPY:
- *     This symbol, if defined, indicates that the memcpy routine is available
- *     to copy blocks of memory.
+/* 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 *).
  */
-#$d_memcpy HAS_MEMCPY  /**/
+#define PTRSIZE $ptrsize               /**/
 
-/* HAS_MEMMOVE:
- *     This symbol, if defined, indicates that the memmove routine is available
- *     to copy potentially overlapping blocks of memory. This should be used
- *     only when HAS_SAFE_BCOPY is not defined. If neither is there, roll your
- *     own version.
+/* Drand01:
+ *     This macro is to be used to generate uniformly distributed
+ *     random numbers over the range [0., 1.[.  You may have to supply
+ *     an 'extern double drand48();' in your program since SunOS 4.1.3
+ *     doesn't provide you with anything relevant in its headers.
+ *     See HAS_DRAND48_PROTO.
  */
-#$d_memmove HAS_MEMMOVE        /**/
-
-/* HAS_MEMSET:
- *     This symbol, if defined, indicates that the memset routine is available
- *     to set blocks of memory.
+/* Rand_seed_t:
+ *     This symbol defines the type of the argument of the
+ *     random seed function.
  */
-#$d_memset HAS_MEMSET  /**/
-
-/* HAS_MKDIR:
- *     This symbol, if defined, indicates that the mkdir routine is available
- *     to create directories.  Otherwise you should fork off a new process to
- *     exec /bin/mkdir.
+/* seedDrand01:
+ *     This symbol defines the macro to be used in seeding the
+ *     random number generator (see Drand01).
  */
-#$d_mkdir HAS_MKDIR            /**/
-
-/* HAS_MKFIFO:
- *     This symbol, if defined, indicates that the mkfifo routine is
- *     available to create FIFOs. Otherwise, mknod should be able to
- *     do it for you. However, if mkfifo is there, mknod might require
- *     super-user privileges which mkfifo will not.
+/* RANDBITS:
+ *     This symbol indicates how many bits are produced by the
+ *     function used to generate normalized random numbers.
+ *     Values include 15, 16, 31, and 48.
  */
-#$d_mkfifo HAS_MKFIFO          /**/
+#define Drand01()              $drand01                /**/
+#define Rand_seed_t            $randseedtype           /**/
+#define seedDrand01(x) $seedfunc((Rand_seed_t)x)       /**/
+#define RANDBITS               $randbits               /**/
 
-/* HAS_MKTIME:
- *     This symbol, if defined, indicates that the mktime routine is
- *     available.
+/* 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).
  */
-#$d_mktime HAS_MKTIME          /**/
+#define SSize_t $ssizetype      /* signed count of bytes */
 
 /* EBCDIC:
  *     This symbol, if defined, indicates that this system uses
@@ -1509,7 +1500,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define OSVERS "$osvers"               /**/
 
 /* CAT2:
- *     This macro catenates 2 tokens together.
+ *     This macro concatenates 2 tokens together.
  */
 /* STRINGIFY:
  *     This macro surrounds its token with double quotes.
@@ -1529,7 +1520,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define STRINGIFY(a)   PeRl_StGiFy(a)
 #endif
 #if $cpp_stuff != 1 && $cpp_stuff != 42
-#   include "Bletch: How does this C preprocessor catenate tokens?"
+#   include "Bletch: How does this C preprocessor concatenate tokens?"
 #endif
 
 /* CPPSTDIN:
@@ -1569,6 +1560,18 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_access HAS_ACCESS          /**/
 
+/* HASATTRIBUTE:
+ *     This symbol indicates the C compiler can check for function attributes,
+ *     such as printf formats. This is normally only supported by GNU cc.
+ */
+#$d_attribut HASATTRIBUTE      /**/
+#ifndef HASATTRIBUTE
+#ifdef __attribute__
+#undef __attribute__
+#endif
+#define __attribute__(_arg_)
+#endif
+
 /* HAS_CRYPT:
  *     This symbol, if defined, indicates that the crypt routine is available
  *     to encrypt passwords and the like.
@@ -2210,7 +2213,9 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  *     etc., where nn is the actual signal number (e.g. NUM37).
  *     The signal number for sig_name[i] is stored in sig_num[i].
  *     The last element is 0 to terminate the list with a NULL.  This
- *     corresponds to the 0 at the end of the sig_num list.
+ *     corresponds to the 0 at the end of the sig_name_init list.
+ *     Note that this variable is initialized from the sig_name_init,
+ *     not from sig_name (which is unused).
  */
 /* SIG_NUM:
  *     This symbol contains a list of signal numbers, in the same order as the
@@ -2224,11 +2229,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  *     The signal number corresponding to sig_name[i] is sig_number[i].
  *     if (i < NSIG) then sig_number[i] == i.  
  *     The last element is 0, corresponding to the 0 at the end of
- *     the sig_name list.
+ *     the sig_name_init list.
+ *     Note that this variable is initialized from the sig_num_init,
+ *     not from sig_num (which is unused).
  */
 /* SIG_SIZE:
- *     This variable contains the number of elements of the sig_name
- *     and sig_num arrays, excluding the final NULL entry.
+ *     This variable contains the number of elements of the SIG_NAME
+ *     and SIG_NUM arrays, excluding the final NULL entry.
  */
 #define SIG_NAME $sig_name_init                /**/
 #define SIG_NUM  $sig_num_init         /**/
@@ -2295,6 +2302,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d__fwalk HAS__FWALK          /**/
 
+/* HAS_AINTL:
+ *     This symbol, if defined, indicates that the aintl routine is
+ *     available.  If copysignl is also present we can emulate modfl.
+ */
+#$d_aintl HAS_AINTL            /**/
+
 /* HAS_CLASS:
  *     This symbol, if defined, indicates that the class routine is
  *     available to classify doubles.  Available for example in AIX.
@@ -2319,6 +2332,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_cmsghdr_s HAS_STRUCT_CMSGHDR       /**/
 
+/* HAS_COPYSIGNL:
+ *     This symbol, if defined, indicates that the copysignl routine is
+ *     available.  If aintl is also present we can emulate modfl.
+ */
+#$d_copysignl HAS_COPYSIGNL            /**/
+
 /* HAS_DBMINIT_PROTO:
  *     This symbol, if defined, indicates that the system provides
  *     a prototype for the dbminit() function.  Otherwise, it is up
@@ -2341,6 +2360,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_dlsymun    DLSYM_NEEDS_UNDERSCORE  /**/
 
+/* HAS_FAST_STDIO:
+ *     This symbol, if defined, indicates that the "fast stdio"
+ *     is available to manipulate the stdio buffers directly.
+ */
+#$d_faststdio HAS_FAST_STDIO           /**/
+
 /* HAS_FCHDIR:
  *     This symbol, if defined, indicates that the fchdir routine is
  *     available to change directory using a file descriptor.
@@ -2540,6 +2565,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_hasmntopt HAS_HASMNTOPT            /**/
 
+/* HAS_ILOGBL:
+ *     This symbol, if defined, indicates that the ilogbl routine is
+ *     available.  If scalbnl is also present we can emulate frexpl.
+ */
+#$d_ilogbl HAS_ILOGBL          /**/
+
 /* HAS_INT64_T:
  *     This symbol will defined if the C compiler supports int64_t.
  *     Usually the <inttypes.h> needs to be included, but sometimes
@@ -2631,12 +2662,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_msghdr_s HAS_STRUCT_MSGHDR /**/
 
-/* HAS_NANOSLEEP:
- *     This symbol, if defined, indicates that the nanosleep
- *     system call is available to sleep with 1E-9 sec accuracy.
- */
-#$d_nanosleep HAS_NANOSLEEP            /**/
-
 /* HAS_NL_LANGINFO:
  *     This symbol, if defined, indicates that the nl_langinfo routine is
  *     available to return local data.  You will also need <langinfo.h>
@@ -2663,6 +2688,13 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define PROCSELFEXE_PATH       $procselfexe    /**/
 #endif
 
+/* HAS_PTHREAD_ATTR_SETSCOPE:
+ *     This symbol, if defined, indicates that the pthread_attr_setscope
+ *     system call is available to set the contention scope attribute of
+ *     a thread attribute object.
+ */
+#$d_pthread_attr_setscope HAS_PTHREAD_ATTR_SETSCOPE            /**/
+
 /* HAS_READV:
  *     This symbol, if defined, indicates that the readv routine is
  *     available to do gather reads.  You will also need <sys/uio.h>
@@ -2685,6 +2717,12 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_sbrkproto  HAS_SBRK_PROTO  /**/
 
+/* HAS_SCALBNL:
+ *     This symbol, if defined, indicates that the scalbnl routine is
+ *     available.  If ilogbl is also present we can emulate frexpl.
+ */
+#$d_scalbnl HAS_SCALBNL                /**/
+
 /* HAS_SENDMSG:
  *     This symbol, if defined, indicates that the sendmsg routine is
  *     available to send structured socket messages.
@@ -3190,6 +3228,19 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #define        NVSIZE          $nvsize         /**/
 #$d_nv_preserves_uv    NV_PRESERVES_UV
 #define        NV_PRESERVES_UV_BITS    $nv_preserves_uv_bits
+#if UVSIZE == 8
+#   ifdef BYTEORDER
+#       if BYTEORDER == 0x1234
+#           undef BYTEORDER
+#           define BYTEORDER 0x12345678
+#       else
+#           if BYTEORDER == 0x4321
+#               undef BYTEORDER
+#               define BYTEORDER 0x87654321
+#           endif
+#       endif
+#   endif
+#endif
 
 /* IVdf:
  *     This symbol defines the format string used for printing a Perl IV
@@ -3285,6 +3336,15 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$use64bitall  USE_64_BIT_ALL          /**/
 #endif
 
+/* USE_FAST_STDIO:
+ *     This symbol, if defined, indicates that Perl should
+ *     be built to use 'fast stdio'.
+ *     Defaults to define in Perls 5.8 and earlier, to undef later.
+ */
+#ifndef USE_FAST_STDIO
+#$usefaststdio USE_FAST_STDIO          /**/
+#endif
+
 /* USE_LARGE_FILES:
  *     This symbol, if defined, indicates that large file support
  *     should be used when available.
@@ -3901,7 +3961,7 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 
 /* HAS_PTHREAD_ATFORK:
  *     This symbol, if defined, indicates that the pthread_atfork routine
- *     is available setup fork handlers.
+ *     is available to setup fork handlers.
  */
 #$d_pthread_atfork HAS_PTHREAD_ATFORK          /**/