diff options
-rwxr-xr-x | Configure | 158 | ||||
-rw-r--r-- | MANIFEST | 29 | ||||
-rw-r--r-- | Makefile.SH | 9 | ||||
-rw-r--r-- | README | 3 | ||||
-rw-r--r-- | client | 2 | ||||
-rw-r--r-- | cmd.c | 21 | ||||
-rw-r--r-- | msdos/Changes.dds | 57 | ||||
-rw-r--r-- | msdos/Makefile | 101 | ||||
-rw-r--r-- | msdos/Wishlist.dds | 17 | ||||
-rw-r--r-- | msdos/config.h | 540 | ||||
-rw-r--r-- | patchlevel.h | 2 |
11 files changed, 862 insertions, 77 deletions
@@ -8,7 +8,16 @@ # and edit it to reflect your system. Some packages may include samples # of config.h for certain machines, so you might look for one of those.) # -# $Header: Configure,v 3.0.1.6 90/03/12 16:10:23 lwall Locked $ +# $Header: Configure,v 3.0.1.7 90/03/28 09:14:53 lwall Locked $ + +: make sure these files are renamed +test -f config_h.SH || mv -f config.h.SH config_h.SH +test -f perl_man.1 || mv -f perl.man.1 perl_man.1 +test -f perl_man.2 || mv -f perl.man.2 perl_man.2 +test -f perl_man.3 || mv -f perl.man.3 perl_man.3 +test -f perl_man.4 || mv -f perl.man.4 perl_man.4 +test -f t/op.s || mv -f t/op.subst t/op.s + # # Yes, you may rip this off to use in other distribution packages. # (Note: this Configure script was generated automatically. Rather than @@ -102,6 +111,7 @@ cppminus='' d_bcmp='' d_bcopy='' d_bzero='' +d_castneg='' d_charsprf='' d_crypt='' cryptlib='' @@ -1110,6 +1120,7 @@ rmlist="$rmlist pdp11" echo " " echo "Checking for optional libraries..." +dflt='' case "$libswanted" in '') libswanted='c_s';; esac @@ -1153,6 +1164,7 @@ set X $dflt shift dflt="$*" case "$libs" in +'') dflt="$dflt";; *) dflt="$libs";; esac case "$dflt" in @@ -1437,6 +1449,8 @@ if $contains '^printf$' libc.list >/dev/null 2>&1; then else $sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p' <libc.tmp >libc.list $contains '^printf$' libc.list >/dev/null 2>&1 || \ + $sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p' <libc.tmp >libc.list + $contains '^printf$' libc.list >/dev/null 2>&1 || \ $sed -n -e 's/^.* D __*//p' -e 's/^.* D //p' <libc.tmp >libc.list $contains '^printf$' libc.list >/dev/null 2>&1 || \ $sed -n -e 's/^_//' \ @@ -1492,6 +1506,35 @@ eval $inlibc set bzero d_bzero eval $inlibc +: check for ability to cast negative floats to unsigned +echo " " +echo 'Checking to see if your C compiler can cast negative float to unsigned' +$cat >try.c <<'EOCP' +main() +{ + double f = -123; + unsigned long along; + unsigned int aint; + unsigned short ashort; + + along = (unsigned long)f; + aint = (unsigned int)f; + ashort = (unsigned short)f; + if (along == 0L || aint == 0 || ashort == 0) + exit(1); + else + exit(0); +} +EOCP +if $cc -o try $ccflags try.c >/dev/null 2>&1 && ./try; then + d_castneg="$define" + echo "Yup, it does." +else + d_castneg="$undef" + echo "Nope, it doesn't." +fi +$rm -f try.* + : see if sprintf is declared as int or pointer to char echo " " cat >.ucbsprf.c <<'EOF' @@ -1756,6 +1799,61 @@ else echo "dbm.h not found." fi +socketlib='' +: see whether socket exists +echo " " +if $contains socket libc.list >/dev/null 2>&1; then + echo "Looks like you have Berkeley networking support." + d_socket="$define" + : now check for advanced features + if $contains setsockopt libc.list >/dev/null 2>&1; then + d_oldsock="$undef" + else + echo "...but it uses the old 4.1c interface, rather than 4.2" + d_oldsock="$define" + fi +else + : hpux, for one, puts all the socket stuff in socklib.o + if $contains socklib libc.list >/dev/null 2>&1; then + echo "Looks like you have Berkeley networking support." + d_socket="$define" + : we will have to assume that it supports the 4.2 BSD interface + d_oldsock="$undef" + else + echo "Hmmm...you don't have Berkeley networking in libc.a..." + : look for an optional networking library + if test -f /usr/lib/libnet.a; then + (ar t /usr/lib/libnet.a || + nm -g /usr/lib/libnet.a) 2>/dev/null >> libc.list + if $contains socket libc.list >/dev/null 2>&1; then + echo "but the Wollongong group seems to have hacked it in." + socketlib="-lnet" + d_socket="$define" + : now check for advanced features + if $contains setsockopt libc.list >/dev/null 2>&1; then + d_oldsock="$undef" + else + echo "...using the old 4.1c interface, rather than 4.2" + d_oldsock="$define" + fi + else + echo "or even in libnet.a, which is peculiar." + d_socket="$undef" + d_oldsock="$undef" + fi + else + echo "or anywhere else I see." + d_socket="$undef" + d_oldsock="$undef" + fi + fi +fi +if $contains socketpair libc.list >/dev/null 2>&1; then + d_sockpair="$define" +else + d_sockpair="$undef" +fi + : see if this is a pwd system echo " " if $test -r /usr/include/pwd.h ; then @@ -1850,61 +1948,6 @@ eval $inlibc set setruid d_setruid eval $inlibc -socketlib='' -: see whether socket exists -echo " " -if $contains socket libc.list >/dev/null 2>&1; then - echo "Looks like you have Berkeley networking support." - d_socket="$define" - : now check for advanced features - if $contains setsockopt libc.list >/dev/null 2>&1; then - d_oldsock="$undef" - else - echo "...but it uses the old 4.1c interface, rather than 4.2" - d_oldsock="$define" - fi -else - : hpux, for one, puts all the socket stuff in socklib.o - if $contains socklib libc.list >/dev/null 2>&1; then - echo "Looks like you have Berkeley networking support." - d_socket="$define" - : we will have to assume that it supports the 4.2 BSD interface - d_oldsock="$undef" - else - echo "Hmmm...you don't have Berkeley networking in libc.a..." - : look for an optional networking library - if test -f /usr/lib/libnet.a; then - (ar t /usr/lib/libnet.a || - nm -g /usr/lib/libnet.a) 2>/dev/null >> libc.list - if $contains socket libc.list >/dev/null 2>&1; then - echo "but the Wollongong group seems to have hacked it in." - socketlib="-lnet" - d_socket="$define" - : now check for advanced features - if $contains setsockopt libc.list >/dev/null 2>&1; then - d_oldsock="$undef" - else - echo "...using the old 4.1c interface, rather than 4.2" - d_oldsock="$define" - fi - else - echo "or even in libnet.a, which is peculiar." - d_socket="$undef" - d_oldsock="$undef" - fi - else - echo "or anywhere else I see." - d_socket="$undef" - d_oldsock="$undef" - fi - fi -fi -if $contains socketpair libc.list >/dev/null 2>&1; then - d_sockpair="$define" -else - d_sockpair="$undef" -fi - : see if stat knows about block sizes echo " " if $contains 'st_blocks;' /usr/include/sys/stat.h >/dev/null 2>&1 ; then @@ -2067,8 +2110,10 @@ echo 'Checking to see if your C compiler knows about "volatile"...' $cat >try.c <<'EOCP' main() { + typedef unsigned short foo_t; char *volatile foo; volatile int bar; + volatile foo_t blech; foo = foo; } EOCP @@ -2560,6 +2605,7 @@ cppminus='$cppminus' d_bcmp='$d_bcmp' d_bcopy='$d_bcopy' d_bzero='$d_bzero' +d_castneg='$d_castneg' d_charsprf='$d_charsprf' d_crypt='$d_crypt' cryptlib='$cryptlib' @@ -16,7 +16,7 @@ client A client to test sockets cmd.c Command interpreter cmd.h Public declarations for the above config.H Sample config.h -config.h.SH Produces config.h +config_h.SH Produces config.h cons.c Routines to construct cmd nodes of a parse tree consarg.c Routines to construct arg nodes of a parse tree doarg.c Scalar expression evaluation @@ -41,6 +41,7 @@ eg/muck.man Manual page for muck eg/myrup A program to find lightly loaded machines eg/nih Script to insert #! workaround eg/rename A program to rename files +eg/relink A program to change symbolic links eg/rmfrom A program to feed doomed filenames to eg/scan/scan_df Scan for filesystem anomalies eg/scan/scan_last Scan for login anomalies @@ -51,6 +52,7 @@ eg/scan/scan_sudo Scan for sudo anomalies eg/scan/scan_suid Scan for setuid anomalies eg/scan/scanner An anomaly reporter eg/shmkill A program to remove unused shared memory +eg/travesty A program to print travesties of its input text eg/van/empty A program to empty the trashcan eg/van/unvanish A program to undo what vanish does eg/van/vanexp A program to expire vanished files @@ -68,24 +70,39 @@ ioctl.pl Sample ioctl.pl lib/abbrev.pl An abbreviation table builder lib/look.pl A "look" equivalent lib/complete.pl A command completion subroutine +lib/ctime.pl A ctime workalike lib/dumpvar.pl A variable dumper lib/getopt.pl Perl library supporting option parsing lib/getopts.pl Perl library supporting option parsing lib/importenv.pl Perl routine to get environment into variables lib/perldb.pl Perl debugging routines lib/stat.pl Perl library supporting stat function +lib/syslog.pl Perl library supporting syslogging lib/termcap.pl Perl library supporting termcap usage lib/validate.pl Perl library supporting wholesale file mode validation makedepend.SH Precursor to makedepend makedir.SH Precursor to makedir makelib.SH A thing to turn C .h file into perl .h files malloc.c A version of malloc you might not want +msdos/Changes.dds Expanation of MS-DOS patches by Diomidis Spinellis +msdos/Makefile MS-DOS makefile +msdos/README.msdos Compiling and usage information +msdos/Wishlist.dds My wishlist +msdos/config.h Definitions for msdos +msdos/dir.h MS-DOS header for directory access functions +msdos/directory.c MS-DOS directory access functions. +msdos/eg/crlf.bat Convert files from unix to MS-DOS line termination +msdos/eg/drives.bat List the system drives and their characteristics +msdos/eg/lf.bat Convert files from MS-DOS to Unix line termination +msdos/glob.c A command equivalent to csh glob +msdos/msdos.c MS-DOS ioctl, sleep, gete?[gu]if, spawn, aspawn +msdos/popen.c My_popen and my_pclose for MS-DOS patchlevel.h The current patch level of perl perl.h Global declarations -perl.man.1 The manual page(s), first fourth -perl.man.2 The manual page(s), second fourth -perl.man.3 The manual page(s), third fourth -perl.man.4 The manual page(s), fourth fourth +perl_man.1 The manual page(s), first fourth +perl_man.2 The manual page(s), second fourth +perl_man.3 The manual page(s), third fourth +perl_man.4 The manual page(s), fourth fourth perl.y Yacc grammar for perl perlsh A poor man's perl shell perly.c main() @@ -164,7 +181,7 @@ t/op.split See if split works t/op.sprintf See if sprintf works t/op.stat See if stat works t/op.study See if study works -t/op.subst See if substitutions work +t/op.s See if substitutions work t/op.substr See if substr works t/op.time See if time functions work t/op.undef See if undef works diff --git a/Makefile.SH b/Makefile.SH index b1c1eeb94b..122b6dcf4c 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -25,9 +25,12 @@ esac echo "Extracting Makefile (with variable substitutions)" cat >Makefile <<!GROK!THIS! -# $Header: Makefile.SH,v 3.0.1.5 90/03/12 16:15:17 lwall Locked $ +# $Header: Makefile.SH,v 3.0.1.6 90/03/27 15:27:15 lwall Locked $ # # $Log: Makefile.SH,v $ +# Revision 3.0.1.6 90/03/27 15:27:15 lwall +# patch16: MSDOS support +# # Revision 3.0.1.5 90/03/12 16:15:17 lwall # patch13: some dependencies missing on perly.h # patch13: some relief for buggy parallel makes @@ -276,10 +279,10 @@ perl.c: perl.y perl.o: perl.c perly.h $(h) $(CC) -c $(CFLAGS) $(LARGE) perl.c -perl.man: perl.man.1 perl.man.2 perl.man.3 perl.man.4 patchlevel.h perl +perl.man: perl_man.1 perl_man.2 perl_man.3 perl_man.4 patchlevel.h perl ./perl -e '($$r,$$p)=$$]=~/(\d+\.\d+).*\n\D*(\d+)/;' \ -e 'print ".ds RP Release $$r Patchlevel $$p\n";' >perl.man - cat perl.man.[1-4] >>perl.man + cat perl_man.[1-4] >>perl.man install: all # won't work with csh @@ -1,7 +1,7 @@ Perl Kit, Version 3.0 - Copyright (c) 1989, Larry Wall + Copyright (c) 1989,1990, Larry Wall This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -76,6 +76,7 @@ Installation The 3b2 needs to turn off -O. AIX/RT may need a -a switch and -DCRIPPLED_CC. + SUNOS 4.0.[12] needs #define fputs(str,fp) fprintf(fp,"%s",str) in perl.h SGI machines may need -Ddouble="long float". Ultrix (2.3) may need to hand assemble teval.s with a -J switch. Ultrix on MIPS machines may need -DLANGUAGE_C. @@ -19,7 +19,7 @@ if (connect(S,$that)) { print "connect ok\n"; } else { die $!; } select(S); $| = 1; select(stdout); if ($child = fork) { - while (<>) { + while (<STDIN>) { print S; } sleep 3; @@ -1,4 +1,4 @@ -/* $Header: cmd.c,v 3.0.1.6 90/03/12 16:21:09 lwall Locked $ +/* $Header: cmd.c,v 3.0.1.7 90/03/27 15:32:37 lwall Locked $ * * Copyright (c) 1989, Larry Wall * @@ -6,6 +6,9 @@ * as specified in the README file that comes with the perl 3.0 kit. * * $Log: cmd.c,v $ + * Revision 3.0.1.7 90/03/27 15:32:37 lwall + * patch16: non-terminal blocks should never have arrays requested of them + * * Revision 3.0.1.6 90/03/12 16:21:09 lwall * patch13: fixed some backwards VOLATILE declarations * patch13: while (s/x//) {} still caused some anomolies @@ -127,7 +130,7 @@ tail_recursion_entry: grow_dlevel(); } #endif - newsp = cmd_exec(cmd->ucmd.ccmd.cc_true,gimme,sp); + newsp = cmd_exec(cmd->ucmd.ccmd.cc_true,gimme && (cmdflags & CF_TERM),sp); st = stack->ary_array; /* possibly reallocated */ retstr = st[newsp]; } @@ -158,7 +161,7 @@ tail_recursion_entry: grow_dlevel(); } #endif - newsp = cmd_exec(cmd->ucmd.ccmd.cc_true,gimme,sp); + newsp = cmd_exec(cmd->ucmd.ccmd.cc_true,gimme && (cmdflags & CF_TERM),sp); st = stack->ary_array; /* possibly reallocated */ retstr = st[newsp]; } @@ -247,7 +250,7 @@ tail_recursion_entry: grow_dlevel(); } #endif - newsp = cmd_exec(cmd->ucmd.ccmd.cc_true,gimme,sp); + newsp = cmd_exec(cmd->ucmd.ccmd.cc_true,gimme && (cmdflags & CF_TERM),sp); st = stack->ary_array; /* possibly reallocated */ retstr = st[newsp]; } @@ -267,7 +270,7 @@ tail_recursion_entry: grow_dlevel(); } #endif - newsp = cmd_exec(cmd->ucmd.ccmd.cc_alt,gimme,sp); + newsp = cmd_exec(cmd->ucmd.ccmd.cc_alt,gimme && (cmdflags & CF_TERM),sp); st = stack->ary_array; /* possibly reallocated */ retstr = st[newsp]; } @@ -711,7 +714,7 @@ until_loop: grow_dlevel(); } #endif - newsp = cmd_exec(cmd->ucmd.ccmd.cc_true,gimme,sp); + newsp = cmd_exec(cmd->ucmd.ccmd.cc_true,gimme && (cmdflags & CF_TERM),sp); st = stack->ary_array; /* possibly reallocated */ retstr = st[newsp]; } @@ -740,7 +743,7 @@ until_loop: grow_dlevel(); } #endif - newsp = cmd_exec(cmd->ucmd.ccmd.cc_true,gimme,sp); + newsp = cmd_exec(cmd->ucmd.ccmd.cc_true,gimme && (cmdflags & CF_TERM),sp); st = stack->ary_array; /* possibly reallocated */ retstr = st[newsp]; } @@ -826,7 +829,7 @@ until_loop: grow_dlevel(); } #endif - newsp = cmd_exec(cmd->ucmd.ccmd.cc_true,gimme,sp); + newsp = cmd_exec(cmd->ucmd.ccmd.cc_true,gimme && (cmdflags & CF_TERM),sp); st = stack->ary_array; /* possibly reallocated */ retstr = st[newsp]; } @@ -846,7 +849,7 @@ until_loop: grow_dlevel(); } #endif - newsp = cmd_exec(cmd->ucmd.ccmd.cc_alt,gimme,sp); + newsp = cmd_exec(cmd->ucmd.ccmd.cc_alt,gimme && (cmdflags & CF_TERM),sp); st = stack->ary_array; /* possibly reallocated */ retstr = st[newsp]; } diff --git a/msdos/Changes.dds b/msdos/Changes.dds new file mode 100644 index 0000000000..1eed759cf9 --- /dev/null +++ b/msdos/Changes.dds @@ -0,0 +1,57 @@ +These are the changes done by the `patches' file: + +[These patches have been applied, more or less, so I don't supply the +patches file--law] + +Compilation of some portions is done conditional on the definition +of the following symbols: + +BINARY Enables the usage of setmode under MSDOS (added binmode command) +BUGGY_MSC Adds #pragma_function(memset) to avoid internal compiler error +CHOWN Enables chown +CHROOT Enables chroot +FORK Enables fork and changes the compilation of system +GETLOGIN Enables getlogin +GETPPID Enables getppid +GROUP Enables all the group access functions +KILL Enables kill +LINK Enables link +PASSWD Enables all the password access functions +PIPE Enables the pipe function +WAIT Enables the wait function +UMASK Enables the umask function + +S_IFBLK * Enables the block special device check +S_ISGID * Enables the setgid check +S_ISUID * Enables the setuid check +S_ISVTX * Enables the vtx check +unix * Compiles globbing for Unix +MSDOS * Compiles globbing for MS-DOS + Closes stdaux and stdprn on startup + Adds a copyright message for -v + Disables the compilation of my_popen, my_pclose as the + are in a separate file. + +Symbols marked with * are defined in the compilation environment. The +rest should be added to config.h (config.h.SH). All functions when not +supported give a fatal error. + +Added documentation for the binmode function in the manual. + +Fixed the following bugs: + +In eval.c function eval if ioctl or fcntl returned something +other than 0 or -1 the result was a random number as the +double `value' variable wasn't set to `anum'. + +In doio.c function do_exec there were two errors associated with +firing up the shell when the execv fails. First argv was not freed, +secondly an attempt was made to start up the shell with the cmd +string that was now cut to pieces for the execv. Also the maxible +possible length of argv was calculated by (s - cmd). Problem was +that s was not pointing to the end of the string, but to the first +non alpha. + +[These are incorporated in patches 15 and 16--law] + +Diomidis Spinellis, March 1990 diff --git a/msdos/Makefile b/msdos/Makefile new file mode 100644 index 0000000000..eeb15e8068 --- /dev/null +++ b/msdos/Makefile @@ -0,0 +1,101 @@ +# +# Makefile for compiling Perl under MS-DOS +# +# Needs a Unix compatible make. +# This makefile works for an initial compilation. It does not +# include all dependencies and thus is unsuitable for serious +# development work. But who would do serious development under +# MS-DOS? +# +# By Diomidis Spinellis, March 1990 +# + +# Source files +SRC = array.c cmd.c cons.c consarg.c doarg.c doio.c dolist.c dump.c \ +eval.c form.c hash.c perl.y perly.c regcomp.c regexec.c \ +stab.c str.c toke.c util.c msdos.c popen.c directory.c + +# Object files +OBJ = perl.obj array.obj cmd.obj cons.obj consarg.obj doarg.obj doio.obj \ +dolist.obj dump.obj eval.obj form.obj hash.obj perly.obj regcomp.obj \ +regexec.obj stab.obj str.obj toke.obj util.obj msdos.obj popen.obj \ +directory.obj + +# Files in the MS-DOS distribution +DOSFILES=config.h dir.h director.c glob.c makefile msdos.c popen.c readme.msd \ +changes.dds wishlist.dds patches manifest + +# Yacc flags +YFLAGS=-d + +# Manual pages +MAN=perlman.1 perlman.2 perlman.3 perlman.4 + +CC=cc +# Cflags for the files that break under the optimiser +CPLAIN=-AL -DCRIPPLED_CC +# Cflags for all the rest +CFLAGS=$(CPLAIN) -Ox +# Destination directory for executables +DESTDIR=\usr\bin + +# Deliverables +all: perl.exe perl.1 glob.exe + +perl.exe: $(OBJ) + echo array+cmd+cons+consarg+doarg+doio+dolist+dump+ >perl.arp + echo eval+form+hash+perl+perly+regcomp+regexec+ >>perl.arp + echo stab+str+toke+util+msdos+popen+directory+\lib\setargv >>perl.arp + echo perl.exe >>perl.arp + echo nul >>perl.arp + echo /stack:32767 /NOE >>perl.arp + link @perl.arp + +glob.exe: glob.c + $(CC) glob.c \lib\setargv.obj -link /NOE + +array.obj: array.c +cmd.obj: cmd.c +cons.obj: cons.c perly.h +consarg.obj: consarg.c + $(CC) $(CPLAIN) -c consarg.c +doarg.obj: doarg.c +doio.obj: doio.c +dolist.obj: dolist.c +dump.obj: dump.c +eval.obj: eval.c evalargs.xc +form.obj: form.c +hash.obj: hash.c +perl.obj: perl.y +perly.obj: perly.c +regcomp.obj: regcomp.c +regexec.obj: regexec.c +stab.obj: stab.c +str.obj: str.c +toke.obj: toke.c +util.obj: util.c + $(CC) $(CPLAIN) -c util.c +perly.h: perl.obj + mv ytab.h perly.h +directory.obj: directory.c +popen.obj: popen.c +msdos.obj: msdos.c + +perl.1: $(MAN) + nroff -man $(MAN) >perl.1 + +install: all + exepack perl.exe $(DESTDIR)\perl.exe + exepack glob.exe $(DESTDIR)\glob.exe + +clean: + rm -f *.obj *.exe perl.1 perly.h perl.arp + +tags: + ctags *.c *.h *.xc + +dosperl: + mv $(DOSFILES) ../perl30.new + +doskit: + mv $(DOSFILES) ../msdos diff --git a/msdos/Wishlist.dds b/msdos/Wishlist.dds new file mode 100644 index 0000000000..d06de117ab --- /dev/null +++ b/msdos/Wishlist.dds @@ -0,0 +1,17 @@ +Perl in general: +Add ftw or find? +Add a parsing mechanism (user specifies parse tree, perl parses). +Arbitrary precision arithmetic. +File calculus (e.g. file1 = file2 + file3, file1 =^ s/foo/bar/g etc.) + +MS-DOS version of Perl: +Add interface to treat dBase files as associative arrays. +Add int86x function. +Handle the C preprocessor. +Provide real pipes by switching the processes. (difficult) +Provide a list of ioctl codes. +Check the ioctl errno handling. +I can't find an easy way in Perl to pass a number as the first argument + to ioctl. This is needed for some functions of ioctl. Either hack + ioctl, or change perl to ioctl interface. Another solution would be + a perl pseudo array containing the filehandles indexed by fd. diff --git a/msdos/config.h b/msdos/config.h new file mode 100644 index 0000000000..f664cdae3b --- /dev/null +++ b/msdos/config.h @@ -0,0 +1,540 @@ +/* config.h + * This file is hand tailored for compiling under MS-DOS and MSC 5.1. + * Diomidis Spinellis, March 1990. + */ + + +/* 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: + * 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: + * This symbol holds the name of the directory in which the user wants + * to put 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" /**/ + +/* 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: + * 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". + */ +/* 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 CPPMINUS "" + +/* 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 BCMP /**/ + +/* BCOPY: + * This symbol, if defined, indicates that the bcopy routine is available + * to copy blocks of memory. Otherwise you should probably use memcpy(). + */ +/*#define BCOPY /**/ + +/* 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 /**/ + +/* CRYPT: + * This symbol, if defined, indicates that the crypt routine is available + * to encrypt passwords and the like. + */ +/* TODO */ +/*#define CRYPT /**/ + +/* DOSUID: + * This symbol, if defined, indicates that the C program should + * check the script that it is executing for setuid/setgid bits, and + * attempt to emulate setuid/setgid on systems that have disabled + * setuid #! scripts because the kernel can't do it securely. + * It is up to the package designer to make sure that this emulation + * is done securely. Among other things, it should do an fstat on + * the script it just opened to make sure it really is a setuid/setgid + * script, it should make sure the arguments passed correspond exactly + * to the argument on the #! line, and it should not trust any + * subprocesses to which it must pass the filename rather than the + * file descriptor of the script to be executed. + */ +/*#define DOSUID /**/ + +/* DUP2: + * This symbol, if defined, indicates that the dup2 routine is available + * to dup file descriptors. Otherwise you should use dup(). + */ +#define DUP2 /**/ + +/* FCHMOD: + * This symbol, if defined, indicates that the fchmod routine is available + * to change mode of opened files. If unavailable, use chmod(). + */ +/*#define FCHMOD /**/ + +/* FCHOWN: + * This symbol, if defined, indicates that the fchown routine is available + * to change ownership of opened files. If unavailable, use chown(). + */ +/*#define FCHOWN /**/ + +/* FCNTL: + * This symbol, if defined, indicates to the C program that it should + * include fcntl.h. + */ +/*#define FCNTL /**/ + +/* FLOCK: + * This symbol, if defined, indicates that the flock() routine is + * available to do file locking. + */ +/*#define FLOCK /**/ + +/* 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 GETGROUPS /**/ + +/* GETHOSTENT: + * This symbol, if defined, indicates that the gethostent() routine is + * available to lookup host names in some data base or other. + */ +/*#define GETHOSTENT /**/ + +/* GETPGRP: + * This symbol, if defined, indicates that the getpgrp() routine is + * available to get the current process group. + */ +/*#define GETPGRP /**/ + +/* GETPRIORITY: + * This symbol, if defined, indicates that the getpriority() routine is + * available to get a process's priority. + */ +/*#define GETPRIORITY /**/ + +/* HTONS: + * This symbol, if defined, indicates that the htons routine (and friends) + * are available to do network order byte swapping. + */ +/* HTONL: + * This symbol, if defined, indicates that the htonl routine (and friends) + * are available to do network order byte swapping. + */ +/* NTOHS: + * This symbol, if defined, indicates that the ntohs routine (and friends) + * are available to do network order byte swapping. + */ +/* NTOHL: + * This symbol, if defined, indicates that the ntohl routine (and friends) + * are available to do network order byte swapping. + */ +/*#define HTONS /**/ +/*#define HTONL /**/ +/*#define NTOHS /**/ +/*#define NTOHL /**/ + +/* index: + * This preprocessor symbol is defined, along with rindex, if the system + * uses the strchr and strrchr routines instead. + */ +/* 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? */ + +/* IOCTL: + * This symbol, if defined, indicates that sys/ioctl.h exists and should + * be included. + */ +/*#define IOCTL /**/ + +/* 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 KILLPG /**/ + +/* MEMCMP: + * This symbol, if defined, indicates that the memcmp routine is available + * to compare blocks of memory. If undefined, roll your own. + */ +#define MEMCMP /**/ + +/* 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. + */ +#define MEMCPY /**/ + +/* 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 MKDIR /**/ + +/* NDBM: + * This symbol, if defined, indicates that ndbm.h exists and should + * be included. + */ +/*#define NDBM /**/ + +/* ODBM: + * This symbol, if defined, indicates that dbm.h exists and should + * be included. + */ +/*#define ODBM /**/ + +/* READDIR: + * This symbol, if defined, indicates that the readdir routine is available + * from the C library to create directories. + */ +#define READDIR /**/ + +/* 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 RENAME /**/ + +/* 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 RMDIR /**/ + +/* SETEGID: + * This symbol, if defined, indicates that the setegid routine is available + * to change the effective gid of the current program. + */ +/*#define SETEGID /**/ + +/* SETEUID: + * This symbol, if defined, indicates that the seteuid routine is available + * to change the effective uid of the current program. + */ +/*#define SETEUID /**/ + +/* SETPGRP: + * This symbol, if defined, indicates that the setpgrp() routine is + * available to set the current process group. + */ +/*#define SETPGRP /**/ + +/* SETPRIORITY: + * This symbol, if defined, indicates that the setpriority() routine is + * available to set a process's priority. + */ +/*#define SETPRIORITY /**/ + +/* SETREGID: + * This symbol, if defined, indicates that the setregid routine is available + * to change the real and effective gid of the current program. + */ +/*#define SETREGID /**/ + +/* SETREUID: + * This symbol, if defined, indicates that the setreuid routine is available + * to change the real and effective uid of the current program. + */ +/*#define SETREUID /**/ + +/* SETRGID: + * This symbol, if defined, indicates that the setrgid routine is available + * to change the real gid of the current program. + */ +/*#define SETRGID /**/ + +/* SETRUID: + * This symbol, if defined, indicates that the setruid routine is available + * to change the real uid of the current program. + */ +/*#define SETRUID /**/ + +/* SOCKET: + * This symbol, if defined, indicates that the BSD socket interface is + * supported. + */ +/* 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. + */ +/*#undef SOCKET /**/ + +/*#undef SOCKETPAIR /**/ + +/*#undef OLDSOCKET /**/ + +/* STATBLOCKS: + * This symbol is defined if this system has a stat structure declaring + * st_blksize and st_blocks. + */ +/*#define STATBLOCKS /**/ + +/* STDSTDIO: + * This symbol is defined if this system has a FILE structure declaring + * _ptr and _cnt in stdio.h. + */ +#define STDSTDIO /**/ + +/* 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 /**/ + +/* SYMLINK: + * This symbol, if defined, indicates that the symlink routine is available + * to create symbolic links. + */ +/*#define SYMLINK /**/ + +/* SYSCALL: + * This symbol, if defined, indicates that the syscall routine is available + * to call arbitrary system calls. If undefined, that's tough. + */ +/*#define SYSCALL /**/ + +/* TMINSYS: + * 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_SYSTIME: + * 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>. + */ +/*#undef TMINSYS /**/ +/*#define I_SYSTIME /**/ +#define I_TIME + +/* VARARGS: + * This symbol, if defined, indicates to the C program that it should + * include varargs.h. + */ +#define VARARGS /**/ + +/* vfork: + * This symbol, if defined, remaps the vfork routine to fork if the + * vfork() routine isn't supported here. + */ +/*#undef vfork fork /**/ + +/* 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. + */ +#define VOIDSIG /**/ + +/* 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: + * 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 VPRINTF /**/ +/*#undef CHARVSPRINTF /**/ + +/* 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. + */ +/* 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. + */ +/*#undef I_DIRENT /**/ +#define DIRNAMLEN /**/ + +/* I_FCNTL: + * This symbol, if defined, indicates to the C program that it should + * include fcntl.h. + */ +#define I_FCNTL /**/ + +/* I_GRP: + * This symbol, if defined, indicates to the C program that it should + * include grp.h. + */ +/*#define I_GRP /**/ + +/* I_PWD: + * This symbol, if defined, indicates to the C program that it should + * include pwd.h. + */ +/* PWQUOTA: + * This symbol, if defined, indicates to the C program that struct passwd + * contains pw_quota. + */ +/* PWAGE: + * This symbol, if defined, indicates to the C program that struct passwd + * contains pw_age. + */ +/*#define I_PWD /**/ +/*#define PWQUOTA /**/ +/*#undef PWAGE /**/ + +/* I_SYSDIR: + * This symbol, if defined, indicates to the C program that it should + * include sys/dir.h. + */ +#define I_SYSDIR /**/ + +/* I_SYSIOCTL: + * This symbol, if defined, indicates that sys/ioctl.h exists and should + * be included. + */ +/*#define I_SYSIOCTL /**/ + +/* I_VARARGS: + * This symbol, if defined, indicates to the C program that it should + * include varargs.h. + */ +#define I_VARARGS /**/ + +/* INTSIZE: + * This symbol contains the size of an int, so that the C preprocessor + * can make decisions based on it. + */ +#define INTSIZE 2 /**/ + +/* 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 /**/ + +/* SIG_NAME: + * This symbol contains an list of signal names in order. + */ +#define SIG_NAME + "ZERO","HUP","INT","QUIT","ILL","TRAP","IOT","EMT","FPE","KILL","BUS","SEGV","S +YS","PIPE","ALRM","TERM","URG","STOP","TSTP","CONT","CHLD","TTIN","TTOU","IO","X +CPU","XFSZ","VTALRM","PROF","WINCH","USR1","USR2" /**/ + +/* 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: + * 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: + * This symbol indicates how much support of the void type is given by this + * compiler. What various bits mean: + * + * 1 = supports declaration of void + * 2 = supports arrays of pointers to functions returning void + * 4 = supports comparisons between pointers to void functions and + * addresses of void functions + * + * 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 +#endif +#define VOIDFLAGS 7 +#if (VOIDFLAGS & VOIDUSED) != VOIDUSED +#define void int /* is void to be avoided? */ +#define M_VOID /* Xenix strikes again */ +#endif + +/* 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. + */ +#define PRIVLIB "/usr/local/lib/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 + * setmode will be used to set the file into binary mode. + */ +#define BINARY + +#define S_ISUID 0 +#define S_ISGID 0 +#define CASTNEGFLOAT diff --git a/patchlevel.h b/patchlevel.h index 69d9c2fd72..29d912735e 100644 --- a/patchlevel.h +++ b/patchlevel.h @@ -1 +1 @@ -#define PATCHLEVEL 15 +#define PATCHLEVEL 16 |