summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLarry Wall <lwall@netlabs.com>1992-06-08 04:49:46 +0000
committerLarry Wall <lwall@netlabs.com>1992-06-08 04:49:46 +0000
commit1d4d38c37d3c694b3c50c8fd57f5afcdb93c1ffe (patch)
tree12582fe7a2073940775af8444b016283d21dfc14
parent9f971974f4068f821b286dfeb06c5a63adf2bc09 (diff)
downloadperl-1d4d38c37d3c694b3c50c8fd57f5afcdb93c1ffe.tar.gz
perl 4.0 patch 24: patch #20, continued
See patch #20.
-rw-r--r--atarist/echo.c98
-rw-r--r--os2/config.h787
-rw-r--r--patchlevel.h2
3 files changed, 664 insertions, 223 deletions
diff --git a/atarist/echo.c b/atarist/echo.c
new file mode 100644
index 0000000000..0853d62a4b
--- /dev/null
+++ b/atarist/echo.c
@@ -0,0 +1,98 @@
+/*
+ * echo args, globbing is necessary.
+ * usage:
+ * echo [-n] [args ...]
+ * \n \r \b \c \v \\ \f \t \NNN escapes supported
+ * -n and \c mean dont echo the final newline.
+ *
+ * ++jrb bammi@cadence.com
+ */
+
+#include <stdio.h>
+
+#if __STDC__
+# include <compiler.h>
+#else
+# define __PROTO(X) ()
+#endif
+
+char **glob __PROTO((char *patt, int decend_dir));
+int contains_wild __PROTO((char *patt));
+void free_all __PROTO((void));
+
+
+int final_newline = 1; /* turned off by -n or \c */
+
+int main(argc, argv)
+int argc;
+char **argv;
+{
+ --argc; ++argv;
+ if((*argv)[0] == '-')
+ {
+ if ((*argv)[1] == 'n')
+ final_newline = 0;
+ else
+ {
+ fputs("usage: echo [-n] [arguement ... ]\n", stderr);
+ return 1;
+ }
+ --argc; ++argv;
+ }
+
+ while(argc--)
+ {
+ char *word = *argv;
+ char **list;
+
+ if(contains_wild(word) && (list = glob(word, 0)))
+ {
+ while(*list)
+ {
+ fputs(*list, stdout);
+ if(*++list) putchar(' ');
+ }
+ free_all();
+ }
+ else
+ {
+ char c;
+ for(c = *word; c; c = (*word)? *++word : 0)
+ {
+ if(c != '\\')
+ putchar(c);
+ else
+ {
+ switch(*++word)
+ {
+ case 'b': putchar('\b'); break;
+ case 'f': putchar('\f'); break;
+ case 'n': putchar('\n'); break;
+ case 'r': putchar('\r'); break;
+ case 't': putchar('\t'); break;
+ case 'v': putchar('\v'); break;
+ case '\\': putchar('\\'); break;
+ case 'c': final_newline = 0; break;
+ default: putchar(*word); /* ?? */
+ case '0':
+ {
+ int n = 0;
+ for(c = *++word; (c >= '0') && (c <= '7'); c = *++word)
+ n = (n << 3) + (c - '0');
+ putchar(n);
+ }
+ }
+ }
+ }
+ }
+ if(*++argv) putchar(' ');
+ }
+ if(final_newline) putchar('\n');
+ return 0;
+}
+
+
+
+
+
+
diff --git a/os2/config.h b/os2/config.h
index 6a707acb66..b37cf5ef5b 100644
--- a/os2/config.h
+++ b/os2/config.h
@@ -1,102 +1,142 @@
+/* manually edited version for OS/2 with MS C 6.00
+ check the HAS_?DBM symbols and if you have such a library ...
+ June 1991, Kai Uwe Rommel */
+
+#ifndef config_h
+#define config_h
/* config.h
- * This file was hand tailored for compiling under MS-DOS and MSC 5.1.
- * Diomidis Spinellis, March 1990.
+ * This file was produced by running the config.h.SH script, which
+ * gets its values from config.sh, which is generally produced by
+ * running Configure.
*
- * Then it got mangled again for compiling under OS/2 and MSC 6.0.
- * Raymond Chen, June 1990.
+ * Feel free to modify any of this as the need arises. Note, however,
+ * that running config.h.SH again will wipe out any changes you've made.
+ * For a more permanent change edit config.sh and rerun config.h.SH.
*/
-#define OS2 /**/
+
+#define OS2
/* OS/2 supports some additional things MS-DOS doesn't.
*/
-#ifdef OS2
-#define PIPE
-#define GETPPID
-#define HAS_GETPRIORITY
-#define HAS_SETPRIORITY
-#define KILL
-#endif /* OS2 */
+#define S_ISUID 0
+#define S_ISGID 0
-/* SUFFIX:
- * This symbol, if defined, indicates that the function add_suffix has
- * been supplied in a system-dependent .c file. This function is
- * recommended for operating systems whose filenaming conventions
- * do not permit arbitrary strings as filenames.
- */
-#define SUFFIX /**/
+#define HAS_ALARM
+#define HAS_GETPPID
+#define HAS_PIPE
+#define HAS_KILL
+#define HAS_WAIT
+#define HAS_UMASK
+#define HAS_GDBM
-/* EUNICE:
+/* EUNICE
* This symbol, if defined, indicates that the program is being compiled
* under the EUNICE package under VMS. The program will need to handle
* things like files that don't go away the first time you unlink them,
* due to version numbering. It will also need to compensate for lack
* of a respectable link() command.
*/
-/* VMS:
+/* VMS
* This symbol, if defined, indicates that the program is running under
* VMS. It is currently only set in conjunction with the EUNICE symbol.
*/
/*#undef EUNICE /**/
/*#undef VMS /**/
-/* BIN:
+/* ALIGNBYTES
+ * This symbol contains the number of bytes required to align a double.
+ * Usual values are 2, 4, and 8.
+ */
+#define ALIGNBYTES 2 /**/
+
+/* BIN
* This symbol holds the name of the directory in which the user wants
- * to put publicly executable images for the package in question. It
+ * to keep publicly executable images for the package in question. It
* is most often a local directory such as /usr/local/bin.
*/
-#define BIN "/usr/local/bin" /**/
+#define BIN "c:/bin" /**/
-/* BYTEORDER:
+/* BYTEORDER
* This symbol contains an encoding of the order of bytes in a long.
* Usual values (in octal) are 01234, 04321, 02143, 03412...
*/
-/* CHECK */
#define BYTEORDER 0x1234 /**/
-/* CPPSTDIN:
+/* CPPSTDIN
* This symbol contains the first part of the string which will invoke
* the C preprocessor on the standard input and produce to standard
- * output. Typical value of "cc -{" or "/lib/cpp".
+ * output. Typical value of "cc -E" or "/lib/cpp".
*/
-/* CPPMINUS:
+/* CPPMINUS
* This symbol contains the second part of the string which will invoke
* the C preprocessor on the standard input and produce to standard
* output. This symbol will have the value "-" if CPPSTDIN needs a minus
* to specify standard input, otherwise the value is "".
*/
-/* TODO */
-#define CPPSTDIN "cc -{"
+#define CPPSTDIN "cpp -P"
#define CPPMINUS ""
-/* HAS_BCMP:
+/* HAS_BCMP
* This symbol, if defined, indicates that the bcmp routine is available
* to compare blocks of memory. If undefined, use memcmp. If that's
* not available, roll your own.
*/
-/*#define HAS_BCMP /**/
+/* #define HAS_BCMP /**/
-/* HAS_BCOPY:
+/* HAS_BCOPY
* This symbol, if defined, indicates that the bcopy routine is available
* to copy blocks of memory. Otherwise you should probably use memcpy().
*/
-/*#define HAS_BCOPY /**/
+/* #define HAS_BCOPY /**/
-/* CHARSPRINTF:
+/* HAS_BZERO
+ * This symbol, if defined, indicates that the bzero routine is available
+ * to zero blocks of memory. Otherwise you should probably use memset()
+ * or roll your own.
+ */
+/* #define HAS_BZERO /**/
+
+/* CASTNEGFLOAT
+ * This symbol, if defined, indicates that this C compiler knows how to
+ * cast negative or large floating point 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:
+ * 1 = couldn't cast < 0
+ * 2 = couldn't cast >= 0x80000000
+ */
+#define CASTNEGFLOAT /**/
+#define CASTFLAGS 1 /**/
+
+/* CHARSPRINTF
* This symbol is defined if this system declares "char *sprintf()" in
* stdio.h. The trend seems to be to declare it as "int sprintf()". It
* is up to the package author to declare sprintf correctly based on the
* symbol.
*/
-/*#define CHARSPRINTF /**/
+/* #define CHARSPRINTF /**/
-/* HAS_CRYPT:
+/* 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.
+ */
+#undef HAS_CHSIZE /**/
+
+/* HAS_CRYPT
* This symbol, if defined, indicates that the crypt routine is available
* to encrypt passwords and the like.
*/
-/* TODO */
-/*#define HAS_CRYPT /**/
+#define HAS_CRYPT /**/
-/* DOSUID:
+/* CSH
+ * This symbol, if defined, indicates that the C-shell exists.
+ * If defined, contains the full pathname of csh.
+ */
+/* #define CSH "/bin/csh" /**/
+
+/* DOSUID
* This symbol, if defined, indicates that the C program should
* check the script that it is executing for setuid/setgid bits, and
* attempt to emulate setuid/setgid on systems that have disabled
@@ -109,412 +149,704 @@
* subprocesses to which it must pass the filename rather than the
* file descriptor of the script to be executed.
*/
-/*#define DOSUID /**/
+/*#undef DOSUID /**/
-/* HAS_DUP2:
+/* HAS_DUP2
* This symbol, if defined, indicates that the dup2 routine is available
* to dup file descriptors. Otherwise you should use dup().
*/
#define HAS_DUP2 /**/
-/* HAS_FCHMOD:
+/* HAS_FCHMOD
* This symbol, if defined, indicates that the fchmod routine is available
* to change mode of opened files. If unavailable, use chmod().
*/
-/*#define HAS_FCHMOD /**/
+/* #define HAS_FCHMOD /**/
-/* HAS_FCHOWN:
+/* HAS_FCHOWN
* This symbol, if defined, indicates that the fchown routine is available
* to change ownership of opened files. If unavailable, use chown().
*/
-/*#define HAS_FCHOWN /**/
+/* #define HAS_FCHOWN /**/
-/* I_FCNTL:
- * This symbol, if defined, indicates to the C program that it should
- * include fcntl.h.
+/* HAS_FCNTL
+ * This symbol, if defined, indicates to the C program that
+ * the fcntl() function exists.
+ */
+/* #define HAS_FCNTL /**/
+
+/* FLEXFILENAMES
+ * This symbol, if defined, indicates that the system supports filenames
+ * longer than 14 characters.
*/
-/*#define I_FCNTL /**/
+#define FLEXFILENAMES /**/
-/* HAS_FLOCK:
+/* HAS_FLOCK
* This symbol, if defined, indicates that the flock() routine is
* available to do file locking.
*/
-/*#define HAS_FLOCK /**/
+/* #define HAS_FLOCK /**/
-/* HAS_GETGROUPS:
+/* 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.
*/
-/*#define HAS_GETGROUPS /**/
+/* #define HAS_GETGROUPS /**/
-/* HAS_GETHOSTENT:
+/* HAS_GETHOSTENT
* This symbol, if defined, indicates that the gethostent() routine is
* available to lookup host names in some data base or other.
*/
-/*#define HAS_GETHOSTENT /**/
+/*#undef HAS_GETHOSTENT /**/
-/* HAS_GETPGRP:
+/* HAS_GETPGRP
* This symbol, if defined, indicates that the getpgrp() routine is
* available to get the current process group.
*/
-/*#define HAS_GETPGRP /**/
+/* #define HAS_GETPGRP /**/
-/* HAS_GETPRIORITY:
+/* HAS_GETPGRP2
+ * This symbol, if defined, indicates that the getpgrp2() (as in DG/UX)
+ * routine is available to get the current process group.
+ */
+/*#undef HAS_GETPGRP2 /**/
+
+/* HAS_GETPRIORITY
* This symbol, if defined, indicates that the getpriority() routine is
* available to get a process's priority.
*/
-/*#define HAS_GETPRIORITY /**/
+#define HAS_GETPRIORITY /**/
-/* HAS_HTONS:
+/* HAS_HTONS
* This symbol, if defined, indicates that the htons routine (and friends)
* are available to do network order byte swapping.
*/
-/* HAS_HTONL:
+/* HAS_HTONL
* This symbol, if defined, indicates that the htonl routine (and friends)
* are available to do network order byte swapping.
*/
-/* HAS_NTOHS:
+/* HAS_NTOHS
* This symbol, if defined, indicates that the ntohs routine (and friends)
* are available to do network order byte swapping.
*/
-/* HAS_NTOHL:
+/* HAS_NTOHL
* This symbol, if defined, indicates that the ntohl routine (and friends)
* are available to do network order byte swapping.
*/
-/*#define HAS_HTONS /**/
-/*#define HAS_HTONL /**/
-/*#define HAS_NTOHS /**/
-/*#define HAS_NTOHL /**/
+/* #define HAS_HTONS /**/
+/* #define HAS_HTONL /**/
+/* #define HAS_NTOHS /**/
+/* #define HAS_NTOHL /**/
-/* index:
+/* index
* This preprocessor symbol is defined, along with rindex, if the system
* uses the strchr and strrchr routines instead.
*/
-/* rindex:
+/* rindex
* This preprocessor symbol is defined, along with index, if the system
* uses the strchr and strrchr routines instead.
*/
#define index strchr /* cultural */
#define rindex strrchr /* differences? */
-/* I_SYSIOCTL:
- * This symbol, if defined, indicates that sys/ioctl.h exists and should
- * be included.
+/* HAS_ISASCII
+ * This symbol, if defined, indicates that the isascii routine is available
+ * to test characters for asciiness.
*/
-/*#define I_SYSIOCTL /**/
+/*#undef HAS_ISASCII /**/
-/* HAS_KILLPG:
+/* 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.
*/
-/*#define HAS_KILLPG /**/
+/* #define HAS_KILLPG /**/
-/* HAS_MEMCMP:
+/* HAS_LSTAT
+ * This symbol, if defined, indicates that the lstat() routine is
+ * available to stat symbolic links.
+ */
+/* #define HAS_LSTAT /**/
+
+/* HAS_MEMCMP
* This symbol, if defined, indicates that the memcmp routine is available
* to compare blocks of memory. If undefined, roll your own.
*/
#define HAS_MEMCMP /**/
-/* HAS_MEMCPY:
+/* HAS_MEMCPY
* This symbol, if defined, indicates that the memcpy routine is available
* to copy blocks of memory. Otherwise you should probably use bcopy().
* If neither is defined, roll your own.
*/
+/* SAFE_MEMCPY
+ * This symbol, if defined, indicates that the memcpy routine is available
+ * to copy potentially overlapping copy blocks of memory. Otherwise you
+ * should probably use memmove() or bcopy(). If neither is defined,
+ * roll your own.
+ */
#define HAS_MEMCPY /**/
+/*#undef SAFE_MEMCPY /**/
+
+/* HAS_MEMMOVE
+ * This symbol, if defined, indicates that the memmove routine is available
+ * to move potentially overlapping blocks of memory. Otherwise you
+ * should use bcopy() or roll your own.
+ */
+/*#undef HAS_MEMMOVE /**/
+
+/* HAS_MEMSET
+ * This symbol, if defined, indicates that the memset routine is available
+ * to set a block of memory to a character. If undefined, roll your own.
+ */
+#define HAS_MEMSET /**/
-/* HAS_MKDIR:
+/* 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.
*/
#define HAS_MKDIR /**/
-/* HAS_NDBM:
+/* HAS_MSG
+ * This symbol, if defined, indicates that the entire msg*(2) library is
+ * supported.
+ */
+/* #define HAS_MSG /**/
+
+/* HAS_MSGCTL
+ * This symbol, if defined, indicates that the msgctl() routine is
+ * available to control message passing.
+ */
+/* #define HAS_MSGCTL /**/
+
+/* HAS_MSGGET
+ * This symbol, if defined, indicates that the msgget() routine is
+ * available to get messages.
+ */
+/* #define HAS_MSGGET /**/
+
+/* HAS_MSGRCV
+ * This symbol, if defined, indicates that the msgrcv() routine is
+ * available to receive messages.
+ */
+/* #define HAS_MSGRCV /**/
+
+/* HAS_MSGSND
+ * This symbol, if defined, indicates that the msgsnd() routine is
+ * available to send messages.
+ */
+/* #define HAS_MSGSND /**/
+
+/* HAS_NDBM
* This symbol, if defined, indicates that ndbm.h exists and should
* be included.
*/
-#define HAS_NDBM /**/
+/* #define HAS_NDBM /**/
-/* HAS_ODBM:
+/* HAS_ODBM
* This symbol, if defined, indicates that dbm.h exists and should
* be included.
*/
-/*#define HAS_ODBM /**/
+/* #define HAS_ODBM /**/
-/* HAS_READDIR:
+/* HAS_OPEN3
+ * This manifest constant lets the C program know that the three
+ * argument form of open(2) is available.
+ */
+#define HAS_OPEN3 /**/
+
+/* HAS_READDIR
* This symbol, if defined, indicates that the readdir routine is available
- * from the C library to create directories.
+ * from the C library to read directories.
*/
#define HAS_READDIR /**/
-/* HAS_RENAME:
+/* 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.
*/
#define HAS_RENAME /**/
-/* HAS_RMDIR:
+/* HAS_REWINDDIR
+ * This symbol, if defined, indicates that the rewindir routine is
+ * available to rewind directories.
+ */
+#define HAS_REWINDDIR /**/
+
+/* 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.
*/
#define HAS_RMDIR /**/
-/* HAS_SETEGID:
+/* HAS_SEEKDIR
+ * This symbol, if defined, indicates that the seekdir routine is
+ * available to seek into directories.
+ */
+#define HAS_SEEKDIR /**/
+
+/* HAS_SELECT
+ * This symbol, if defined, indicates that the select() subroutine
+ * exists.
+ */
+/* #define HAS_SELECT /**/
+
+/* HAS_SEM
+ * This symbol, if defined, indicates that the entire sem*(2) library is
+ * supported.
+ */
+/* #define HAS_SEM /**/
+
+/* HAS_SEMCTL
+ * This symbol, if defined, indicates that the semctl() routine is
+ * available to control semaphores.
+ */
+/* #define HAS_SEMCTL /**/
+
+/* HAS_SEMGET
+ * This symbol, if defined, indicates that the semget() routine is
+ * available to get semaphores ids.
+ */
+/* #define HAS_SEMGET /**/
+
+/* HAS_SEMOP
+ * This symbol, if defined, indicates that the semop() routine is
+ * available to perform semaphore operations.
+ */
+/* #define HAS_SEMOP /**/
+
+/* HAS_SETEGID
* This symbol, if defined, indicates that the setegid routine is available
* to change the effective gid of the current program.
*/
-/*#define HAS_SETEGID /**/
+/* #define HAS_SETEGID /**/
-/* HAS_SETEUID:
+/* HAS_SETEUID
* This symbol, if defined, indicates that the seteuid routine is available
* to change the effective uid of the current program.
*/
-/*#define HAS_SETEUID /**/
+/* #define HAS_SETEUID /**/
-/* HAS_SETPGRP:
+/* HAS_SETPGRP
* This symbol, if defined, indicates that the setpgrp() routine is
* available to set the current process group.
*/
-/*#define HAS_SETPGRP /**/
+/* #define HAS_SETPGRP /**/
-/* HAS_SETPRIORITY:
+/* HAS_SETPGRP2
+ * This symbol, if defined, indicates that the setpgrp2() (as in DG/UX)
+ * routine is available to set the current process group.
+ */
+/*#undef HAS_SETPGRP2 /**/
+
+/* HAS_SETPRIORITY
* This symbol, if defined, indicates that the setpriority() routine is
* available to set a process's priority.
*/
-/*#define HAS_SETPRIORITY /**/
+#define HAS_SETPRIORITY /**/
-/* HAS_SETREGID:
- * This symbol, if defined, indicates that the setregid routine is available
- * to change the real and effective gid of the current program.
+/* HAS_SETREGID
+ * This symbol, if defined, indicates that the setregid routine is
+ * available to change the real and effective gid of the current program.
+ */
+/* HAS_SETRESGID
+ * This symbol, if defined, indicates that the setresgid routine is
+ * available to change the real, effective and saved gid of the current
+ * program.
*/
-/*#define HAS_SETREGID /**/
+/* #define HAS_SETREGID /**/
+/*#undef HAS_SETRESGID /**/
-/* HAS_SETREUID:
- * This symbol, if defined, indicates that the setreuid routine is available
- * to change the real and effective uid of the current program.
+/* HAS_SETREUID
+ * This symbol, if defined, indicates that the setreuid routine is
+ * available to change the real and effective uid of the current program.
*/
-/*#define HAS_SETREUID /**/
+/* HAS_SETRESUID
+ * This symbol, if defined, indicates that the setresuid routine is
+ * available to change the real, effective and saved uid of the current
+ * program.
+ */
+/* #define HAS_SETREUID /**/
+/*#undef HAS_SETRESUID /**/
-/* HAS_SETRGID:
+/* HAS_SETRGID
* This symbol, if defined, indicates that the setrgid routine is available
* to change the real gid of the current program.
*/
-/*#define HAS_SETRGID /**/
+/* #define HAS_SETRGID /**/
-/* HAS_SETRUID:
+/* HAS_SETRUID
* This symbol, if defined, indicates that the setruid routine is available
* to change the real uid of the current program.
*/
-/*#define HAS_SETRUID /**/
+/* #define HAS_SETRUID /**/
+
+/* HAS_SHM
+ * This symbol, if defined, indicates that the entire shm*(2) library is
+ * supported.
+ */
+/* #define HAS_SHM /**/
+
+/* HAS_SHMAT
+ * This symbol, if defined, indicates that the shmat() routine is
+ * available to attach a shared memory segment.
+ */
+/* VOID_SHMAT
+ * This symbol, if defined, indicates that the shmat() routine
+ * returns a pointer of type void*.
+ */
+/* #define HAS_SHMAT /**/
+
+/*#undef VOIDSHMAT /**/
+
+/* HAS_SHMCTL
+ * This symbol, if defined, indicates that the shmctl() routine is
+ * available to control a shared memory segment.
+ */
+/* #define HAS_SHMCTL /**/
+
+/* HAS_SHMDT
+ * This symbol, if defined, indicates that the shmdt() routine is
+ * available to detach a shared memory segment.
+ */
+/* #define HAS_SHMDT /**/
+
+/* HAS_SHMGET
+ * This symbol, if defined, indicates that the shmget() routine is
+ * available to get a shared memory segment id.
+ */
+/* #define HAS_SHMGET /**/
-/* HAS_SOCKET:
- * This symbol, if defined, indicates that the BSD socket interface is
- * supported.
+/* HAS_SOCKET
+ * This symbol, if defined, indicates that the BSD socket interface is
+ * supported.
*/
-/* HAS_SOCKETPAIR:
- * This symbol, if defined, indicates that the BSD socketpair call is
- * supported.
+/* HAS_SOCKETPAIR
+ * This symbol, if defined, indicates that the BSD socketpair call is
+ * supported.
*/
-/* OLDSOCKET:
- * This symbol, if defined, indicates that the 4.1c BSD socket interface
- * is supported instead of the 4.2/4.3 BSD socket interface.
+/* OLDSOCKET
+ * This symbol, if defined, indicates that the 4.1c BSD socket interface
+ * is supported instead of the 4.2/4.3 BSD socket interface.
*/
-/*#undef HAS_SOCKET /**/
+/* #define HAS_SOCKET /**/
-/*#undef HAS_SOCKETPAIR /**/
+/* #define HAS_SOCKETPAIR /**/
-/*#undef OLDSOCKET /**/
+/*#undef OLDSOCKET /**/
-/* STATBLOCKS:
+/* STATBLOCKS
* This symbol is defined if this system has a stat structure declaring
* st_blksize and st_blocks.
*/
-/*#define STATBLOCKS /**/
+/* #define STATBLOCKS /**/
-/* STDSTDIO:
+/* STDSTDIO
* This symbol is defined if this system has a FILE structure declaring
* _ptr and _cnt in stdio.h.
*/
#define STDSTDIO /**/
-/* STRUCTCOPY:
+/* STRUCTCOPY
* 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.
*/
#define STRUCTCOPY /**/
-/* HAS_SYMLINK:
+/* HAS_STRERROR
+ * This symbol, if defined, indicates that the strerror() routine is
+ * available to translate error numbers to strings.
+ */
+/*#undef HAS_STRERROR /**/
+
+/* HAS_SYMLINK
* This symbol, if defined, indicates that the symlink routine is available
* to create symbolic links.
*/
-/*#define HAS_SYMLINK /**/
+/* #define HAS_SYMLINK /**/
-/* HAS_SYSCALL:
+/* HAS_SYSCALL
* This symbol, if defined, indicates that the syscall routine is available
* to call arbitrary system calls. If undefined, that's tough.
*/
-/*#define HAS_SYSCALL /**/
+/* #define HAS_SYSCALL /**/
-/* s_tm:
- * This symbol is defined if this system declares "struct tm" in
- * in <sys/time.h> rather than <time.h>. We can't just say
- * -I/usr/include/sys because some systems have both time files, and
- * the -I trick gets the wrong one.
- */
-/* I_SYS_TIME:
- * This symbol is defined if this system has the file <sys/time.h>.
- */
-/*
- * I_TIME:
- * This symbol is defined if time this system has the file <time.h>.
+/* HAS_TELLDIR
+ * This symbol, if defined, indicates that the telldir routine is
+ * available to tell your location in directories.
*/
-/*#undef s_tm /**/
-/*#define I_SYS_TIME /**/
-#define I_TIME
+#define HAS_TELLDIR /**/
-/* VARARGS:
- * This symbol, if defined, indicates to the C program that it should
- * include varargs.h.
+/* HAS_TRUNCATE
+ * This symbol, if defined, indicates that the truncate routine is
+ * available to truncate files.
*/
-#define VARARGS /**/
+/* #define HAS_TRUNCATE /**/
-/* vfork:
- * This symbol, if defined, remaps the vfork routine to fork if the
- * vfork() routine isn't supported here.
+/* HAS_VFORK
+ * This symbol, if defined, indicates that vfork() exists.
*/
-/*#undef vfork fork /**/
+/* #define HAS_VFORK /**/
-/* VOIDSIG:
+/* VOIDSIG
* This symbol is defined if this system declares "void (*signal())()" in
* signal.h. The old way was to declare it as "int (*signal())()". It
* is up to the package author to declare things correctly based on the
* symbol.
*/
+/* TO_SIGNAL
+ * This symbol's value is either "void" or "int", corresponding to the
+ * appropriate return "type" of a signal handler. Thus, one can declare
+ * a signal handler using "TO_SIGNAL (*handler())()", and define the
+ * handler using "TO_SIGNAL handler(sig)".
+ */
#define VOIDSIG /**/
+#define TO_SIGNAL void /**/
+
+/* HASVOLATILE
+ * This symbol, if defined, indicates that this C compiler knows about
+ * the volatile declaration.
+ */
+#define HASVOLATILE /**/
-/* HAS_VPRINTF:
+/* 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().
*/
-/* CHARVSPRINTF:
+/* CHARVSPRINTF
* This symbol is defined if this system has vsprintf() returning type
* (char*). The trend seems to be to declare it as "int vsprintf()". It
* is up to the package author to declare vsprintf correctly based on the
* symbol.
*/
-#define HAS_VPRINTF /**/
-/*#undef CHARVSPRINTF /**/
+#define HAS_VPRINTF /**/
+/* #define CHARVSPRINTF /**/
-/* GIDTYPE:
+/* HAS_WAIT4
+ * This symbol, if defined, indicates that wait4() exists.
+ */
+/* #define HAS_WAIT4 /**/
+
+/* HAS_WAITPID
+ * This symbol, if defined, indicates that waitpid() exists.
+ */
+#define HAS_WAITPID /**/
+
+/* GIDTYPE
* This symbol has a value like gid_t, int, ushort, or whatever type is
* used to declare group ids in the kernel.
*/
-/* TODO */
#define GIDTYPE int /**/
-/* I_DIRENT:
- * This symbol, if defined, indicates to the C program that it should
- * include dirent.h.
+/* GROUPSTYPE
+ * This symbol has a value like gid_t, int, ushort, or whatever type is
+ * used in the return value of getgroups().
*/
-/* 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.
+#define GROUPSTYPE int /**/
+
+/* I_FCNTL
+ * This manifest constant tells the C program to include <fcntl.h>.
*/
-/*#undef I_DIRENT /**/
-#define DIRNAMLEN /**/
+/*#undef I_FCNTL /**/
-/* I_FCNTL:
- * This symbol, if defined, indicates to the C program that it should
- * include fcntl.h.
+/* I_GDBM
+ * This symbol, if defined, indicates that gdbm.h exists and should
+ * be included.
*/
-/*#define I_FCNTL /**/
+#define I_GDBM /**/
-/* I_GRP:
+/* I_GRP
* This symbol, if defined, indicates to the C program that it should
* include grp.h.
*/
-/*#define I_GRP /**/
+/* #define I_GRP /**/
-/* I_PWD:
+/* I_NETINET_IN
+ * This symbol, if defined, indicates to the C program that it should
+ * include netinet/in.h.
+ */
+/* I_SYS_IN
+ * This symbol, if defined, indicates to the C program that it should
+ * include sys/in.h.
+ */
+/* #define I_NETINET_IN /**/
+/*#undef I_SYS_IN /**/
+
+/* I_PWD
* This symbol, if defined, indicates to the C program that it should
* include pwd.h.
*/
-/* PWQUOTA:
+/* PWQUOTA
* This symbol, if defined, indicates to the C program that struct passwd
* contains pw_quota.
*/
-/* PWAGE:
+/* PWAGE
* This symbol, if defined, indicates to the C program that struct passwd
* contains pw_age.
*/
-/*#define I_PWD /**/
-/*#define PWQUOTA /**/
-/*#undef PWAGE /**/
+/* PWCHANGE
+ * This symbol, if defined, indicates to the C program that struct passwd
+ * contains pw_change.
+ */
+/* PWCLASS
+ * This symbol, if defined, indicates to the C program that struct passwd
+ * contains pw_class.
+ */
+/* PWEXPIRE
+ * This symbol, if defined, indicates to the C program that struct passwd
+ * contains pw_expire.
+ */
+/* PWCOMMENT
+ * This symbol, if defined, indicates to the C program that struct passwd
+ * contains pw_comment.
+ */
+/* #define I_PWD /**/
+/*#undef PWQUOTA /**/
+/* #define PWAGE /**/
+/*#undef PWCHANGE /**/
+/*#undef PWCLASS /**/
+/*#undef PWEXPIRE /**/
+/* #define PWCOMMENT /**/
-/* I_SYS_DIR:
- * This symbol, if defined, indicates to the C program that it should
- * include sys/dir.h.
+/* I_SYS_FILE
+ * This manifest constant tells the C program to include <sys/file.h>.
*/
-#define I_SYS_DIR /**/
+/* #define I_SYS_FILE /**/
-/* I_SYSIOCTL:
+/* I_SYSIOCTL
* This symbol, if defined, indicates that sys/ioctl.h exists and should
* be included.
*/
-/*#define I_SYSIOCTL /**/
+/* #define I_SYSIOCTL /**/
-/* I_VARARGS:
+/* I_TIME
+ * This symbol is defined if the program should include <time.h>.
+ */
+/* I_SYS_TIME
+ * This symbol is defined if the program should include <sys/time.h>.
+ */
+/* SYSTIMEKERNEL
+ * This symbol is defined if the program should include <sys/time.h>
+ * with KERNEL defined.
+ */
+/* I_SYS_SELECT
+ * This symbol is defined if the program should include <sys/select.h>.
+ */
+#define I_TIME /**/
+/* #define I_SYS_TIME /**/
+/*#undef SYSTIMEKERNEL /**/
+/*#undef I_SYS_SELECT /**/
+
+/* I_UTIME
+ * This symbol, if defined, indicates to the C program that it should
+ * include utime.h.
+ */
+/* #define I_UTIME /**/
+
+/* I_VARARGS
* This symbol, if defined, indicates to the C program that it should
* include varargs.h.
*/
#define I_VARARGS /**/
-/* INTSIZE:
+/* I_VFORK
+ * This symbol, if defined, indicates to the C program that it should
+ * include vfork.h.
+ */
+/* #define I_VFORK /**/
+
+/* INTSIZE
* This symbol contains the size of an int, so that the C preprocessor
* can make decisions based on it.
*/
#define INTSIZE 2 /**/
-/* RANDBITS:
+/* I_DIRENT
+ * This symbol, if defined, indicates that the program should use the
+ * P1003-style directory routines, and include <dirent.h>.
+ */
+/* I_SYS_DIR
+ * This symbol, if defined, indicates that the program should use the
+ * directory functions by including <sys/dir.h>.
+ */
+/* I_NDIR
+ * This symbol, if defined, indicates that the program should include the
+ * system's version of ndir.h, rather than the one with this package.
+ */
+/* I_SYS_NDIR
+ * This symbol, if defined, indicates that the program should include the
+ * system's version of sys/ndir.h, rather than the one with this package.
+ */
+/* I_MY_DIR
+ * This symbol, if defined, indicates that the program should compile
+ * the ndir.c code provided with the package.
+ */
+/* 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.
+ */
+/* #define I_DIRENT /**/
+#define I_SYS_DIR /**/
+/*#undef I_NDIR /**/
+/*#undef I_SYS_NDIR /**/
+/*#undef I_MY_DIR /**/
+#define DIRNAMLEN /**/
+
+/* MYMALLOC
+ * This symbol, if defined, indicates that we're using our own malloc.
+ */
+/* MALLOCPTRTYPE
+ * This symbol defines the kind of ptr returned by malloc and realloc.
+ */
+#define MYMALLOC /**/
+
+#define MALLOCPTRTYPE void /**/
+
+
+/* RANDBITS
* This symbol contains the number of bits of random number the rand()
* function produces. Usual values are 15, 16, and 31.
*/
-#define RANDBITS 31 /**/
+#define RANDBITS 15 /**/
+
+/* SCRIPTDIR
+ * This symbol holds the name of the directory in which the user wants
+ * to keep publicly executable scripts for the package in question. It
+ * is often a directory that is mounted across diverse architectures.
+ */
+#define SCRIPTDIR "c:/bin/perl" /**/
-/* SIG_NAME:
+/* SIG_NAME
* This symbol contains an list of signal names in order.
*/
-#ifdef OS2
-#define SIG_NAME "ZERO","HUP","INT","QUIT","ILL","TRAP","IOT","EMT","FPE",\
- /* 0 1 2 3 4 5 6 7 8 */\
+#define SIG_NAME \
+ "ZERO","HUP","INT","QUIT","ILL","TRAP","IOT","EMT","FPE",\
+ /* 0 1 2 3 4 5 6 7 8 */\
"KILL","BUS","SEGV","SYS","PIPE","UALRM","TERM","ALRM","USR2","CLD",\
/* 9 10 11 12 13 14 15 16 17 18 */\
"PWR","USR3","BREAK","ABRT"
/*19 20 21 22 */
-#else
-#define SIG_NAME "ZERO","HUP","INT","QUIT","ILL","TRAP","IOT","EMT","FPE","KILL","BUS","SEGV","SYS","PIPE","ALRM","TERM","URG","STOP","TSTP","CONT","CHLD","TTIN","TTOU","IO","XCPU","XFSZ","VTALRM","PROF","WINCH","USR1","USR2" /**/
-#endif /* OS2 */
-/* STDCHAR:
+/* STDCHAR
* This symbol is defined to be the type of char used in stdio.h.
* It has the values "unsigned char" or "char".
*/
#define STDCHAR char /**/
-/* UIDTYPE:
+/* UIDTYPE
* This symbol has a value like uid_t, int, ushort, or whatever type is
* used to declare user ids in the kernel.
*/
#define UIDTYPE int /**/
-/* VOIDFLAGS:
+/* VOIDHAVE
* This symbol indicates how much support of the void type is given by this
* compiler. What various bits mean:
*
@@ -523,38 +855,51 @@
* 4 = supports comparisons between pointers to void functions and
* addresses of void functions
*
- * The package designer should define VOIDUSED to indicate the requirements
- * of the package. This can be done either by #defining VOIDUSED before
- * including config.h, or by defining defvoidused in Myinit.U. If the
- * latter approach is taken, only those flags will be tested. If the
- * level of void support necessary is not present, defines void to int.
- */
-#ifndef VOIDUSED
-#define VOIDUSED 7
+ * The package designer should define VOIDWANT to indicate the requirements
+ * of the package. This can be done either by #defining VOIDWANT before
+ * including config.h, or by defining voidwant in Myinit.U. If the level
+ * of void support necessary is not present, config.h defines void to "int",
+ * VOID to the empty string, and VOIDP to "char *".
+ */
+/* void
+ * This symbol is used for void casts. On implementations which support
+ * void appropriately, its value is "void". Otherwise, its value maps
+ * to "int".
+ */
+/* VOID
+ * This symbol's value is "void" if the implementation supports void
+ * appropriately. Otherwise, its value is the empty string. The primary
+ * use of this symbol is in specifying void parameter lists for function
+ * prototypes.
+ */
+/* VOIDP
+ * This symbol is used for casting generic pointers. On implementations
+ * which support void appropriately, its value is "void *". Otherwise,
+ * its value is "char *".
+ */
+#ifndef VOIDWANT
+#define VOIDWANT 7
#endif
-#define VOIDFLAGS 7
-#if (VOIDFLAGS & VOIDUSED) != VOIDUSED
+#define VOIDHAVE 7
+#if (VOIDHAVE & VOIDWANT) != VOIDWANT
#define void int /* is void to be avoided? */
+#define VOID
+#define VOIDP (char *)
#define M_VOID /* Xenix strikes again */
+#else
+#define VOID void
+#define VOIDP (void *)
#endif
-/* PRIVLIB:
+/* PRIVLIB
* This symbol contains the name of the private library for this package.
* The library is private in the sense that it needn't be in anyone's
* execution path, but it should be accessible by the world. The program
- * should be prepared to do ^ expansion.
+ * should be prepared to do ~ expansion.
*/
#define PRIVLIB "c:/bin/perl" /**/
/*
- * BUGGY_MSC:
- * This symbol is defined if you are the unfortunate owner of a buggy
- * Microsoft C compiler and want to use intrinsic functions. Versions
- * up to 5.1 are known conform to this definition.
- */
-/*#define BUGGY_MSC /**/
-
-/*
* BINARY:
* This symbol is defined if you run under an operating system that
* distinguishes between binary and text files. If so the function
@@ -562,6 +907,4 @@
*/
#define BINARY
-#define S_ISUID 0
-#define S_ISGID 0
-#define CASTNEGFLOAT
+#endif
diff --git a/patchlevel.h b/patchlevel.h
index 2627e90d71..f198d8a823 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -1 +1 @@
-#define PATCHLEVEL 23
+#define PATCHLEVEL 24