*/
#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
#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.
#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:
*/
#$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.
* 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
* 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 /**/
*/
#$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.
*/
#$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
*/
#$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.
*/
#$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
*/
#$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>
#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>
*/
#$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.
#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
#$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.
/* 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 /**/