X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/a845a0d454e0f00755bd9ac955d4d658c0af2872..0f5d0394b2f5b3a7ac4dba1b324a4ccfb7799a4b:/config_h.SH diff --git a/config_h.SH b/config_h.SH index f7b79f1..a6c9e32 100644 --- a/config_h.SH +++ b/config_h.SH @@ -50,1307 +50,1298 @@ sed <$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 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 - * . 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 . 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 . See I_DIRENT. +/* HAS_DBL_DIG: + * This symbol, if defined, indicates that this system's + * or 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 . 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, 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 + * 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 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 exists and should - * be included. - */ -/* I_RPCSVC_DBM: - * This symbol, if defined, indicates that 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 . 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 . - */ -/* 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 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 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 + * . See I_DIRENT. */ -#$i_dlfcn I_DLFCN /**/ +#$d_readdir HAS_READDIR /**/ -/* I_FCNTL: - * This manifest constant tells the C program to include . +/* HAS_SEEKDIR: + * This symbol, if defined, indicates that the seekdir routine is + * available. You may have to include . 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 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 . 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 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 . 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 . +/* 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 . +/* 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 . +/* 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 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, 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 . Otherwise, you may try . +/* 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 . +/* 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 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 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 (USG systems) instead of (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 . +/* 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 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 exists and should - * be included. Otherwise, include or . +/* 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 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 . +/* 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 . +/* 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 . +/* 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 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 . +/* 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 . +/* 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 . +/* 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 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 . +/* 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 - * rather than . 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 - * rather than . 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 . +/* 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 . +/* 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 to get definition of symbols like MINFLOAT or - * MAXLONG, i.e. machine dependant limitations. Probably, you - * should use 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 . +/* 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 . +/* 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 +/* I_ARPA_INET: + * This symbol, if defined, indicates to the C program that it should + * include 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 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 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 . 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 . */ -#$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 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 . */ -#$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 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 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 . */ -#$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 . */ -#$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 . */ -/* 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 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 . Otherwise, you may try . */ -/* 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 . */ -/* 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 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 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 (USG systems) instead of (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 . */ -/* 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 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 exists and should + * be included. Otherwise, include or . */ -/* 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 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 . */ -#$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 . */ -/* 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 . */ -#$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 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 . + * include . */ -/* I_SYS_TIME: +#$i_sysstat I_SYS_STAT /**/ + +/* I_SYS_TIMES: * This symbol, if defined, indicates to the C program that it should - * include . + * include . */ -/* 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 with KERNEL defined. + * include . */ -/* 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 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 . */ -#$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 + * rather than . 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 + * rather than . 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 . */ -#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 . */ -#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 to get definition of symbols like MINFLOAT or + * MAXLONG, i.e. machine dependant limitations. Probably, you + * should use 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 or - * 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 . */ -#$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 . */ -#$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 - * or 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 */ -#$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 - * 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 -/* 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. +/* 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. */ -#$d_getgrps HAS_GETGROUPS /**/ - -/* HAS_GETLOGIN: - * This symbol, if defined, indicates that the getlogin routine is - * available to get the login name. +/* 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_getlogin HAS_GETLOGIN /**/ +#$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_GETPGID: - * This symbol, if defined, indicates to the C program that - * the getpgid(pid) function is available to get the - * process group id. +/* 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_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_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_getpgrp2 HAS_GETPGRP2 /**/ - -/* HAS_GETPPID: - * This symbol, if defined, indicates that the getppid routine is - * available to get the parent process ID. +/* 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_getppid HAS_GETPPID /**/ +#$d_stdiobase USE_STDIO_BASE /**/ +#ifdef USE_STDIO_BASE +#define FILE_base(fp) $stdio_base +#define FILE_bufsiz(fp) $stdio_bufsiz +#endif -/* HAS_GETPRIORITY: - * This symbol, if defined, indicates that the getpriority routine is - * available to get a process's priority. +/* 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_getprior HAS_GETPRIORITY /**/ - -/* 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. +/* 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_inetaton HAS_INET_ATON /**/ +#$d_vprintf HAS_VPRINTF /**/ +#$d_charvspr USE_CHAR_VSPRINTF /**/ -/* 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. +/* DOUBLESIZE: + * This symbol contains the size of a double, so that the C preprocessor + * can make decisions based on it. */ -#$d_killpg HAS_KILLPG /**/ +#define DOUBLESIZE $doublesize /**/ -/* HAS_LINK: - * This symbol, if defined, indicates that the link routine is - * available to create hard links. +/* I_TIME: + * This symbol, if defined, indicates to the C program that it should + * include . */ -#$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: + * This symbol, if defined, indicates to the C program that it should + * include . */ -#$d_locconv HAS_LOCALECONV /**/ - -/* HAS_LOCKF: - * This symbol, if defined, indicates that the lockf routine is - * available to do file locking. +/* I_SYS_TIME_KERNEL: + * This symbol, if defined, indicates to the C program that it should + * include with KERNEL defined. */ -#$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_ZONE: + * This symbol, if defined, indicates to the C program that + * the struct tm has a tm_zone field. */ -#$d_lstat HAS_LSTAT /**/ - -/* HAS_MBLEN: - * This symbol, if defined, indicates that the mblen routine is available - * to find the number of bytes in a multibye character. +/* HAS_TM_TM_GMTOFF: + * This symbol, if defined, indicates to the C program that + * the struct tm has a tm_gmtoff field. */ -#$d_mblen HAS_MBLEN /**/ +#$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_MBSTOWCS: - * This symbol, if defined, indicates that the mbstowcs routine is - * available to covert a multibyte string into a wide character string. +/* 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_mbstowcs HAS_MBSTOWCS /**/ - -/* HAS_MBTOWC: - * This symbol, if defined, indicates that the mbtowc routine is available - * to covert a multibyte to a wide character. +/* VAL_EAGAIN: + * This symbol holds the errno error code set by read() when no data was + * present on the non-blocking file descriptor. */ -#$d_mbtowc HAS_MBTOWC /**/ - -/* HAS_MEMCMP: - * This symbol, if defined, indicates that the memcmp routine is available - * to compare blocks of memory. +/* 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_memcmp HAS_MEMCMP /**/ - -/* HAS_MEMCPY: - * This symbol, if defined, indicates that the memcpy routine is available - * to copy 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_memcpy HAS_MEMCPY /**/ +#define VAL_O_NONBLOCK $o_nonblock +#define VAL_EAGAIN $eagain +#define RD_NODATA $rd_nodata +#$d_eofnblk EOF_NONBLOCK -/* 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. +/* 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_memmove HAS_MEMMOVE /**/ +#define PTRSIZE $ptrsize /**/ -/* HAS_MEMSET: - * This symbol, if defined, indicates that the memset routine is available - * to set blocks of memory. +/* 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_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. +/* Rand_seed_t: + * This symbol defines the type of the argument of the + * random seed function. */ -#$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. +/* seedDrand01: + * This symbol defines the macro to be used in seeding the + * random number generator (see Drand01). */ -#$d_mkfifo HAS_MKFIFO /**/ +/* 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. + */ +#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 or + * 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 @@ -1569,6 +1560,18 @@ sed <$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 <$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 <$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 <$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 <$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 <$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 <$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 needs to be included, but sometimes @@ -2685,6 +2716,12 @@ sed <$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. @@ -3285,6 +3322,15 @@ sed <$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.