perl 4.0 patch 20: (combined patch)
Larry Wall [Mon, 8 Jun 1992 04:49:43 +0000 (04:49 +0000)]
ENHANCEMENTS
Subject: relaxed requirement for semicolon at the end of a block
Subject: scalar keys %array now counts keys for you
Subject: added ... as variant on ..
Subject: get*by* routines now return something useful in a scalar context
Subject: form feed for formats is now specifiable via $^L
Subject: PERLLIB now supports multiple directories
Subject: paragraph mode now skips extra newlines automatically

MANPAGE
Subject: documented that numbers may contain underline
Subject: clarified that DATA may only be read from main script
Subject: documented need for 1; at the end of a required file
Subject: extended bracket-style quotes to two-arg operators: s()() and tr()()
Subject: documented PERLLIB and PERLDB
Subject: documented limit on size of regexp

CONFIGURATION
Subject: bcopy() and memcpy() now tested for overlap safety
Subject: isascii() may now be supplied by a library routine
Subject: Configure now allows optional continuation with files missing
Subject: many more hints files added
Subject: many more hints added
Subject: hints now auto selected on uname -s as well as uname -m
Subject: OSF/1 support added
Subject: Configure growing-library-list bug fixed
Subject: seekdir(), telldir() and rewinddir() now checked for independently
Subject: cray didn't give enough memory to /bin/sh
Subject: perl -P now uses location of sed determined by Configure
Subject: SH files didn't work well with symbolic links
Subject: makefiles now display new shift/reduce expectations
Subject: support added to installperl for cross-compilation
Subject: a2p was installed unexecutable
Subject: installperl didn't warn on failed manpage installation
Subject: disabled cpp test if cppstdin not yet installed

PORTABILITY
Subject: O_PIPE conflicted with Atari
Subject: config.H updated to reflect more recent config.h
Subject: removed implicit int declarations on functions
Subject: added Atari ST portability
Subject: some machines don't define ENOTSOCK in errno.h
Subject: added explicit time_t support
Subject: alternate config.h files upgraded
Subject: new OS/2 support

COMPILER
Subject: various error messages have been clarified
Subject: the switch optimizer didn't do anything in subroutines
Subject: clarified debugging output for literals and double-quoted strings
Subject: new warning for use of x with non-numeric right operand
Subject: illegal lvalue message could be followed by core dump
Subject: new warning for ambiguous use of unary operators
Subject: eval "1 #comment" didn't work
Subject: semantic compilation errors didn't abort execution
Subject: an expression may now start with a bareword
Subject: if {block} {block} didn't work any more
Subject: "$var{$foo'bar}" didn't scan subscript correctly
Subject: an EXPR may now start with a bareword
Subject: print $fh EXPR can now expect term rather than operator in EXPR
Subject: new warning on spurious backslash
Subject: new warning on missing $ for foreach variable
Subject: "foo"x1024 now legal without space after x
Subject: new warning on print accidentally used as function
Subject: 2. now eats the dot
Subject: <@ARGV> now notices @ARGV
Subject: tr/// now lets you say \-

RUNTIME
Subject: an eval block containing a null block or statement could dump core
Subject: modulus with highest bit in left operand set didn't always work
Subject: join() now pre-extends target string to avoid excessive copying
Subject: subroutines didn't localize $`, $&, $', $1 et al correctly
Subject: usersub routines didn't reclaim temp values soon enough
Subject: ($<,$>) = ... didn't work on some architectures
Subject: fixed memory leak on system() for vfork() machines
Subject: @ in unpack failed too often
Subject: slice on null list in scalar context returned random value
Subject: splice with negative offset didn't work with $[ = 1
Subject: fixed some memory leaks in splice
Subject: dbmclose(%array) didn't work
Subject: delete could cause %array to give too low a count of buckets filled
Subject: hash tables now split only if the memory is available to do so
Subject: realloc(0, size) now does malloc in case library routines call it
Subject: running taintperl explicitly now does checks even if $< == $>
Subject: fixed memory leak in doube-quote interpretation
Subject: a splice on non-existent array elements could dump core
Subject: tr/stuff// wasn't working right

I/O
Subject: new warnings for failed use of stat operators on filenames with \n
Subject: wait failed when STDOUT or STDERR reopened to a pipe
Subject: end of file latch not reset on reopen of STDIN
Subject: seek(HANDLE, 0, 1) went to eof because of ancient Ultrix workaround
Subject: h_errno now accessible via $?

REGEXP
Subject: pattern modifiers i and o didn't interact right
Subject: g pattern modifer sometimes returned extra values
Subject: m/$pattern/g didn't work
Subject: /^stuff/ wrongly assumed an implicit $* == 1
Subject: /x{0}/ was wrongly interpreted as /x{0,}/
Subject: added \W, \S and \D inside /[...]/
Subject: pattern modifiers i and g didn't interact right
Subject: in some cases $` and $' didn't get set by match
Subject: made /\$$foo/ look for literal '$foo'

LIBRARIES
Subject: big*.pl library files upgraded
Subject: better support in chat2 for multiple children
Subject: &ctime didn't handle $[ != 0
Subject: find.pl got confused by unreadable directories
Subject: new version of newgetopt.pl
Subject: Tom's famous double-ended pipe opener, open2(), is now included
Subject: support added to pwd.pl to strip automounter crud
Subject: &shellwords looped on bad input, and used inefficient regular exprs
Subject: termcap.pl didn't parse termcap terminal names right
Subject: timelocal could loop on bad input
Subject: timelocal now calculates DST itself
Subject: &getcap eventually dumped core in bsdcurses

DEBUGGER
Subject: support for MSDOS folded into perldb.pl
Subject: perldb couldn't debug file containing '-', such as STDIN designator
Subject: the debugger now warns you on lines that can't set a breakpoint
Subject: the debugger made perl forget the last pattern used by //
Subject: fixed double debug break in foreach with implicit array assignment
Subject: debugger sometimes displayed wrong source line

INTERSTICES
Subject: Perl now distinguishes overlapped copies from non-overlapped
Subject: fixed confusion between a *var's real name and its effective name
Subject: deleted some minor memory leaks
Subject: couldn't require . files
Subject: -e 'cmd' no longer fails silently if /tmp runs out of space
Subject: function key support added to curses.mus

TRANSLATORS
Subject: find2perl assumed . in PATH
Subject: find2perl didn't output portable startup code
Subject: find2perl didn't always stat at the right time
Subject: s2p didn't output portable startup code
Subject: s2p didn't translate s/pat/\&/ or s/pat/\$/ or s/pat/\\1/ right
Subject: in a2p, getline should allow variable to be array element
Subject: in a2p, now warns about spurious backslashes
Subject: in a2p, now allows [ to be backslashed in pattern
Subject: in a2p, now allows numbers of the form 2.
Subject: in a2p, simplified the filehandle model
Subject: in a2p, made RS="" translate to $/ = "\n\n"
Subject: in a2p, do {...} while ... was missing some reconstruction code

13 files changed:
Configure
MANIFEST
Makefile.SH
Wishlist
atarist/FILES [new file with mode: 0644]
atarist/usub/README.ATARI [new file with mode: 0644]
hints/3b1.sh
hints/3b1cc [new file with mode: 0644]
hints/aix_rs.sh
os2/Makefile
os2/a2p.cs
os2/a2p.def
patchlevel.h

index a777a14..c183c1a 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -8,7 +8,7 @@
 # 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.)
 #
-# $RCSfile: Configure,v $$Revision: 4.0.1.6 $$Date: 91/11/11 16:26:51 $
+# $RCSfile: Configure,v $$Revision: 4.0.1.7 $$Date: 92/06/08 11:38:16 $
 #
 # Yes, you may rip this off to use in other distribution packages.
 # (Note: this Configure script was generated automatically.  Rather than
@@ -49,6 +49,7 @@ fi
     echo "(I see you are using the Korn shell.  Some ksh's blow up on Configure," && \
     echo "especially on exotic machines.  If yours does, try the Bourne shell instead.)"
 
+unset CDPATH
 if test ! -d ../UU; then
     if test ! -d UU; then
        mkdir UU
@@ -132,6 +133,7 @@ cppstdin=''
 cppminus=''
 d_bcmp=''
 d_bcopy=''
+d_safebcpy=''
 d_bzero=''
 d_castneg=''
 castflags=''
@@ -154,10 +156,14 @@ d_getpgrp2=''
 d_getprior=''
 d_htonl=''
 d_index=''
+d_isascii=''
 d_killpg=''
 d_lstat=''
 d_memcmp=''
 d_memcpy=''
+d_safemcpy=''
+d_memmove=''
+d_memset=''
 d_mkdir=''
 d_msg=''
 d_msgctl=''
@@ -169,7 +175,9 @@ d_odbm=''
 d_open3=''
 d_readdir=''
 d_rename=''
+d_rewindir=''
 d_rmdir=''
+d_seekdir=''
 d_select=''
 d_sem=''
 d_semctl=''
@@ -202,6 +210,7 @@ d_strctcpy=''
 d_strerror=''
 d_symlink=''
 d_syscall=''
+d_telldir=''
 d_truncate=''
 d_vfork=''
 d_voidsig=''
@@ -340,7 +349,7 @@ attrlist="$attrlist sparc sun tower tower32 tower32_600 tower32_800 tss"
 attrlist="$attrlist u3b2 u3b20 u3b200 u3b5 ultrix unix vax venix xenix"
 attrlist="$attrlist z8000"
 boPATH=""
-eoPATH="/usr/ucb /bin /usr/bin /usr/local /usr/local/bin /usr/lbin /usr/plx /usr/5bin /vol/local/bin /etc /usr/lib /lib /usr/local/lib /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/bin /bsd4.3/usr/ucb /bsd43/usr/bin"
+eoPATH="/usr/ucb /bin /usr/bin /usr/local /usr/local/bin /usr/lbin /usr/plx /usr/5bin /vol/local/bin /etc /usr/lib /lib /usr/local/lib /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/bin /bsd4.3/usr/ucb /bsd43/usr/bin /usr/ccs/lib /opt/SUNWste/bin /usr/opt/SUNWste/bin"
 d_newshome="/usr/NeWS"
 errnolist=errnolist
 h_fcntl=false
@@ -354,22 +363,25 @@ serve_unix_tcp=""
 d_ndir=ndir
 voidwant=1
 voidwant=7
-libswanted="c_s net_s net socket nsl_s nsl nm ndir ndbm dbm PW malloc sun m bsd BSD x posix ucb"
+libswanted="c_s net_s net socket nsl_s nsl nm ndir dir ndbm dbm PW malloc sun m bsd BSD x posix ucb"
 inclwanted='/usr/include /usr/netinclude /usr/include/sun /usr/include/bsd /usr/include/lan /usr/ucbinclude'
 
 : Now test for existence of everything in MANIFEST
 
 echo "First let's make sure your kit is complete.  Checking..."
-awk '$1 !~ /PACKINGLIST/ {print $1}' ../MANIFEST | split -200
+awk '$1 !~ /PACKINGLIST/ {print $1}' ../MANIFEST | split -100
 rm -f missing
 for filelist in x??; do
     (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
 done
 if test -s missing; then
+    echo "WARNING: the following files are missing:"
     cat missing
-    kill $$
+    echo "INTERRUPT NOW, OR HIT RETURN TO PROCEED AT YOUR OWN RISK"
+    read junk
+else
+    echo "Looks good..."
 fi
-echo "Looks good..."
 
 : some greps do not return status, grrr.
 echo "grimblepritz" >contains.txt
@@ -778,8 +790,11 @@ if test -d ../hints && test ! -f ../config.sh; then
        mips*) dflt="$dflt mips";;
        [23]100) dflt="$dflt mips";;
        next*) dflt="$dflt next" ;;
+       6000) dflt="$dflt mc6000";;
        esac
 
+       test -f "../hints/$1.sh" && dflt="$dflt $1"
+
        case "$1" in
        aix) dflt="$dflt aix_rs" ;;
        sunos) case "$3" in
@@ -789,19 +804,21 @@ if test -d ../hints && test ! -f ../config.sh; then
            4.0.2) dflt="$dflt sunos_4_0_2" ;;
            esac
            ;;
-       dnix) dflt="$dflt dnix" ;;
-       genix) dflt="$dflt genix" ;;
-       hp*ux) dflt="$dflt hpux" ;;
-       next) dflt="$dflt next" ;;
+       hp*ux) dflt="$dflt hpux"
+           extra_hints="hp"`echo $5 | sed -e s#/#_#g -e s/..$/00/`
+           if test -f ../hints/$extra_hints.sh; then
+               dflt="$dflt $extra_hints"
+           fi;;
        irix) dflt="$dflt sgi" ;;
        ultrix) case "$3" in
+           1*) dflt="$dflt ultrix_1" ;;
            3*) dflt="$dflt ultrix_3" ;;
            4*) dflt="$dflt ultrix_4" ;;
            esac
            ;;
        uts) dflt="$dflt uts" ;;
        $2) if test -f /etc/systemid; then
-               set `echo $3 | sed 's/\./ /` $4
+               set `echo $3 | sed 's/\./ /'` $4
                if test -f ../hints/sco_$1_$2_$3.sh; then
                    dflt="$dflt sco_$1_$2_$3"
                elif test -f ../hints/sco_$1_$2.sh; then
@@ -871,7 +888,7 @@ esac
 echo "If you don't want the manual sources installed, answer 'none'."
 case "$mansrc" in
 '')
-    dflt=`./loc . none /usr/man/local/man1 /usr/man/man.L /usr/man/manl /usr/man/mann /usr/man/u_man/man1 /usr/man/man1`
+    dflt=`./loc . none /usr/man/local/man1 /usr/man/man.L /usr/man/manl /usr/man/mann /usr/man/u_man/man1 /usr/man/man1 /usr/local/man/man1`
     ;;
 *)  dflt="$mansrc"
     ;;
@@ -991,26 +1008,28 @@ done
 
 : make some quick guesses about what we are up against
 echo " "
+echo exit 1 >bsd
+echo exit 1 >usg
+echo exit 1 >v7
+echo exit 1 >osf1
+echo exit 1 >eunice
+echo exit 1 >xenix
+echo exit 1 >venix
 cat $usrinclude/signal.h $usrinclude/sys/signal.h >guess.txt 2>/dev/null
 if test "$usrinclude" = "/bsd43/usr/include" ; then
     echo "Looks kind of like a SysV MIPS running BSD, but we'll see..."
     echo exit 0 >bsd
-    echo exit 1 >usg
-    echo exit 1 >v7
+elif test -f /osf_boot || $contains "OSF/1" /usr/include/ctype.h; then
+    echo "Looks like an OSF/1 system, but we'll see..."
+    echo exit 0 >osf1
 elif test `echo abc | tr a-z A-Z` = Abc ; then
     echo "Looks kind of like a USG system, but we'll see..."
-    echo exit 1 >bsd
     echo exit 0 >usg
-    echo exit 1 >v7
 elif $contains SIGTSTP guess.txt >/dev/null 2>&1 ; then
     echo "Looks kind of like a BSD system, but we'll see..."
     echo exit 0 >bsd
-    echo exit 1 >usg
-    echo exit 1 >v7
 else
     echo "Looks kind of like a version 7 system, but we'll see..."
-    echo exit 1 >bsd
-    echo exit 1 >usg
     echo exit 0 >v7
 fi
 case "$eunicefix" in
@@ -1026,7 +1045,6 @@ EOI
     echo " "
     echo "Congratulations.  You aren't running Eunice."
     d_eunice="$undef"
-    echo "exit 1" >eunice
     ;;
 esac
 if test -f /xenix; then
@@ -1035,7 +1053,6 @@ if test -f /xenix; then
 else
     echo " "
     echo "It's not Xenix..."
-    echo "exit 1" >xenix
 fi
 chmod +x xenix
 $eunicefix xenix
@@ -1049,9 +1066,8 @@ else
     else
        echo "Nor is it Venix..."
     fi
-    echo "exit 1" >venix
 fi
-chmod +x bsd usg v7 eunice venix
+chmod +x bsd usg v7 osf1 eunice venix
 $eunicefix bsd usg v7 eunice venix
 
 : see what memory models we can support
@@ -1261,7 +1277,7 @@ else
     cc="$ans"
 fi
 case "$cc" in
-gcc*) cpp=`./loc gcc-cpp $cpp $pth`
+*gcc*) cpp=`./loc gcc-cpp $cpp $pth`
     case "$nativegcc" in
     '') case "$ccflags" in
        *-fpcc-struct-return*) dflt=n;;
@@ -1349,12 +1365,18 @@ if $contains 'LANGUAGE_C' $usrinclude/signal.h >/dev/null 2>&1; then
     case "$dflt" in
     *LANGUAGE_C*);;
     *) dflt="$dflt -DLANGUAGE_C";;
+    *) if osf1; then
+          dflt="$dflt -D__LANGUAGE_C__"
+       else
+          dflt="$dflt -DLANGUAGE_C"
+       fi
+       ;;
     esac
 fi
 if $contains '_NO_PROTO' $usrinclude/signal.h >/dev/null 2>&1; then
     case "$dflt" in
     *_NO_PROTO*);;
-    *) dflt="$dflt -D_NO_PROTO";;
+    *) osf1 || dflt="$dflt -D_NO_PROTO";;
     esac
 fi
 case "$dflt" in
@@ -1365,7 +1387,8 @@ cat <<EOH
 Your C compiler may want other flags.  For this question you should
 include -I/whatever and -DWHATEVER flags and any other flags used by
 the C compiler, but you should NOT include libraries or ld flags like
--lwhatever.  To use no flags, specify the word "none".
+-lwhatever.  For instance, this would be a good place to specify
+-DDEBUGGING.  To use no flags, specify the word "none".
   
 EOH
 rp="Any additional cc flags? [$dflt]"
@@ -1434,7 +1457,7 @@ for thislib in $libswanted; do
     if test -f $xxx; then
        echo "Found -l$thislib."
        case "$dflt" in
-       *"-l$thislib "*|*"-l$thatlib "*);;
+       *-l$thislib\ *|*-l$thatlib\ *);;
        *) dflt="$dflt -l$thislib ";;
        esac
     else
@@ -1450,7 +1473,7 @@ for thislib in $libswanted; do
            if test -f $xxx; then
                echo "Found -l$thislib."
                case "$dflt" in
-               *"-l$thislib "*|*"-l$thatlib "*);;
+               *-l$thislib\ *|*-l$thatlib\ *);;
                *) dflt="$dflt -l$thislib ";;
                esac
            else
@@ -1458,7 +1481,7 @@ for thislib in $libswanted; do
                if test -f $xxx; then
                    echo "Found -l$thislib as a shared object only."
                    case "$dflt" in
-                   *"-l$thislib "*|*"-l$thatlib "*);;
+                   *-l$thislib\ *|*-l$thatlib\ *);;
                    *) dflt="$dflt -l$thislib ";;
                    esac
                else
@@ -1572,6 +1595,19 @@ while $test "$cont" ; do
     fi
 done
 
+case "$bin" in
+  ?????????????????????????)
+    cat <<EOF
+
+NOTE: you have a fairly long path name there.  Some systems have trouble
+executing a script if the #! line ends up longer than 32 characters.  If
+you have this trouble you may have to reinstall somewhere else, or make
+a symbolic link from someplace with a shorter name.
+
+EOF
+    ;;
+esac
+
 case "$installbin" in
 '')
     dflt=`echo $bin | sed 's#^/afs/#/afs/.#'`
@@ -1628,9 +1664,9 @@ main()
     } u;
 
     if (sizeof(long) > 4)
-       u.l = (0x08070605 << 32) | 0x04030201;
+       u.l = (0x08070605L << 32) | 0x04030201L;
     else
-       u.l = 0x04030201;
+       u.l = 0x04030201L;
     for (i=0; i < sizeof(long); i++)
        printf("%c",u.c[i]+'0');
     printf("\n");
@@ -1864,6 +1900,7 @@ case "$libs" in
 esac
 set /usr/ccs/lib/libc.so
 test -f $1 || set /usr/lib/libc.so
+test -f $1 || set /usr/shlib/libc.so
 test -f $1 || set /usr/lib/libc.so.[0-9]*
 test -f $1 || set /lib/libsys_s.a
 eval set \$$#
@@ -1955,6 +1992,10 @@ elif $sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p' \
           <libc.tmp >libc.list; \
   $contains '^printf$' libc.list >/dev/null 2>&1; then
     echo done
+elif $sed -n -e 's/^[         ]*[0-9][0-9a-f]*[       ]*Def. Text[    ]*//p' \
+          < libc.tmp | $sed -e 's/\[.*\]//' > libc.list; \
+  $contains '^printf$' libc.list >/dev/null 2>&1; then
+      echo done
 else
     nm -p $* 2>/dev/null >libc.tmp
     $sed -n -e 's/^.* [AT]  *_[_.]*//p' -e 's/^.* [AT] //p' <libc.tmp >libc.list
@@ -1997,7 +2038,7 @@ inlibc='echo " "; td=$define; tu=$undef;
 if $contains "^$1\$" libc.list >/dev/null 2>&1;
 then echo "$1() found";
   eval "case \"\$$2\" in undef) . whoa; esac"; eval "$2=\$td";
-else echo "$1() not found";
+else echo "$1() NOT found";
   eval "case \"\$$2\" in define) . whoa; esac"; eval "$2=\$tu"; fi'
 
 : see if bcmp exists
@@ -2008,6 +2049,52 @@ eval $inlibc
 set bcopy d_bcopy
 eval $inlibc
 
+case "$d_safebcpy" in
+'')
+    : assume the worst
+    d_safebcpy=undef
+    case "$d_bcopy" in
+    define)
+       echo "Checking to see if your bcopy() can do overlapping copies..."
+       $cat >safebcpy.c <<'EOCP'
+main()
+{
+    char buf[128];
+    register char *b;
+    register int len;
+    register int off;
+    register int align;
+
+    for (align = 7; align >= 0; align--) {
+       for (len = 36; len; len--) {
+           b = buf+align;
+           bcopy("abcdefghijklmnopqrstuvwxyz0123456789", b, len);
+           for (off = 1; off <= len; off++) {
+               bcopy(b, b+off, len);
+               bcopy(b+off, b, len);
+               if (bcmp(b, "abcdefghijklmnopqrstuvwxyz0123456789", len))
+                   exit(1);
+           }
+       }
+    }
+    exit(0);
+}
+EOCP
+       if $cc safebcpy.c -o safebcpy $ccflags >/dev/null 2>&1 ; then
+           if ./safebcpy; then
+               echo "It can."
+               d_safebcpy=define
+           else
+               echo "It can't."
+           fi
+       else
+           echo "(I can't compile the test program, so we'll assume not...)"
+       fi
+       ;;
+    esac
+    ;;
+esac
+
 : see if bzero exists
 set bzero d_bzero
 eval $inlibc
@@ -2061,7 +2148,7 @@ EOF
        val2="$define"
     fi
 else
-    echo 'vprintf() not found.'
+    echo 'vprintf() NOT found.'
     val="$undef"
     val2="$undef"
 fi
@@ -2099,7 +2186,7 @@ else
        cryptlib=-lcrypt
     fi
     if $test -z "$cryptlib"; then
-       echo 'crypt() not found.'
+       echo 'crypt() NOT found.'
        val="$undef"
     else
        val="$define"
@@ -2294,7 +2381,8 @@ eval $inlibc
 : index or strcpy
 echo " "
 case "$d_index" in
-undef) dflt=n;;
+undef) dflt=y;;
+define) dflt=n;;
 *)  if $test -f /unix; then
        dflt=n
     else
@@ -2326,6 +2414,10 @@ else
     fi
 fi
 
+: see if isascii exists
+set isascii d_isascii
+eval $inlibc
+
 : see if killpg exists
 set killpg d_killpg
 eval $inlibc
@@ -2342,6 +2434,60 @@ eval $inlibc
 set memcpy d_memcpy
 eval $inlibc
 
+case "$d_safemcpy" in
+'')
+    : assume the worst
+    d_safemcpy=undef
+    case "$d_memcpy" in
+    define)
+       echo "Checking to see if your memcpy() can do overlapping copies..."
+       $cat >safemcpy.c <<'EOCP'
+main()
+{
+    char buf[128];
+    register char *b;
+    register int len;
+    register int off;
+    register int align;
+
+    for (align = 7; align >= 0; align--) {
+       for (len = 36; len; len--) {
+           b = buf+align;
+           memcpy(b,"abcdefghijklmnopqrstuvwxyz0123456789", len);
+           for (off = 1; off <= len; off++) {
+               memcpy(b+off, b, len);
+               memcpy(b, b+off, len);
+               if (memcmp(b, "abcdefghijklmnopqrstuvwxyz0123456789", len))
+                   exit(1);
+           }
+       }
+    }
+    exit(0);
+}
+EOCP
+       if $cc safemcpy.c -o safemcpy $ccflags >/dev/null 2>&1 ; then
+           if ./safemcpy; then
+               echo "It can."
+               d_safemcpy=define
+           else
+               echo "It can't."
+           fi
+       else
+           echo "(I can't compile the test program, so we'll assume not...)"
+       fi
+       ;;
+    esac
+    ;;
+esac
+
+: see if memmove exists
+set memmove d_memmove
+eval $inlibc
+
+: see if memset exists
+set memset d_memset
+eval $inlibc
+
 : see if mkdir exists
 set mkdir d_mkdir
 eval $inlibc
@@ -2433,7 +2579,7 @@ END
 *)  mallocsrc='';
     mallocobj='';
     mallocptrtype=void
-    val="$define"
+    val="$undef"
     ;;
 esac
 set d_mymalloc
@@ -2447,7 +2593,7 @@ if test -f $xxx; then
     echo "ndbm.h found."
 else
     val="$undef"
-    echo "ndbm.h not found."
+    echo "ndbm.h NOT found."
 fi
 set d_ndbm
 eval $setvar
@@ -2460,7 +2606,7 @@ if test -f $xxx; then
     echo "dbm.h found."
 else
     val="$undef"
-    echo "dbm.h not found."
+    echo "dbm.h NOT found."
 fi
 set d_odbm
 eval $setvar
@@ -2631,10 +2777,18 @@ fi
 set rename d_rename
 eval $inlibc
 
+: see if rewindir exists
+set rewinddir d_rewindir
+eval $inlibc
+
 : see if rmdir exists
 set rmdir d_rmdir
 eval $inlibc
 
+: see if seekdir exists
+set seekdir d_seekdir
+eval $inlibc
+
 : see if select exists
 set select d_select
 eval $inlibc
@@ -2969,6 +3123,10 @@ undefundef) i_sys_time="$define"; i_time="$define";
     echo "ICK, NOTHING WORKED!!!  You may have to diddle the includes.";;
 esac
 
+: see if telldir exists
+set telldir d_telldir
+eval $inlibc
+
 : see if signal is declared as pointer to function returning int or void
 echo " "
 $cppstdin $cppflags $cppminus < $usrinclude/signal.h >d_voidsig.txt
@@ -3470,7 +3628,7 @@ if test -f $xxx; then
     echo "gdbm.h found."
 else
     val="$undef"
-    echo "gdbm.h not found."
+    echo "gdbm.h NOT found."
 fi
 set i_gdbm
 eval $setvar
@@ -3531,7 +3689,7 @@ if $test -r $usrinclude/sys/ioctl.h ; then
     echo "sys/ioctl.h found."
 else
     val="$undef"
-    echo "sys/ioctl.h not found, assuming ioctl args are defined in sgtty.h."
+    echo "sys/ioctl.h NOT found, assuming ioctl args are defined in sgtty.h."
 fi
 set i_sysioctl
 eval $setvar
@@ -3660,6 +3818,7 @@ cppstdin='$cppstdin'
 cppminus='$cppminus'
 d_bcmp='$d_bcmp'
 d_bcopy='$d_bcopy'
+d_safebcpy='$d_safebcpy'
 d_bzero='$d_bzero'
 d_castneg='$d_castneg'
 castflags='$castflags'
@@ -3682,10 +3841,14 @@ d_getpgrp2='$d_getpgrp2'
 d_getprior='$d_getprior'
 d_htonl='$d_htonl'
 d_index='$d_index'
+d_isascii='$d_isascii'
 d_killpg='$d_killpg'
 d_lstat='$d_lstat'
 d_memcmp='$d_memcmp'
 d_memcpy='$d_memcpy'
+d_safemcpy='$d_safemcpy'
+d_memmove='$d_memmove'
+d_memset='$d_memset'
 d_mkdir='$d_mkdir'
 d_msg='$d_msg'
 d_msgctl='$d_msgctl'
@@ -3697,7 +3860,9 @@ d_odbm='$d_odbm'
 d_open3='$d_open3'
 d_readdir='$d_readdir'
 d_rename='$d_rename'
+d_rewindir='$d_rewindir'
 d_rmdir='$d_rmdir'
+d_seekdir='$d_seekdir'
 d_select='$d_select'
 d_sem='$d_sem'
 d_semctl='$d_semctl'
@@ -3730,6 +3895,7 @@ d_strctcpy='$d_strctcpy'
 d_strerror='$d_strerror'
 d_symlink='$d_symlink'
 d_syscall='$d_syscall'
+d_telldir='$d_telldir'
 d_truncate='$d_truncate'
 d_vfork='$d_vfork'
 d_voidsig='$d_voidsig'
index 0adfbf5..3890ea3 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -7,12 +7,44 @@ MANIFEST              This list of files
 Makefile.SH            Precursor to Makefile
 PACKINGLIST            Which files came from which kits
 README                 The Instructions
+README.ncr             Special instructions for NCR
 README.uport           Special instructions for Microports
 README.xenix           Special instructions for Xenix
 Wishlist               Some things that may or may not happen
 arg.h                  Public declarations for the above
 array.c                        Numerically subscripted arrays
 array.h                        Public declarations for the above
+atarist/FILES
+atarist/README.ST
+atarist/RESULTS
+atarist/atarist.c
+atarist/config.h
+atarist/echo.c
+atarist/explain
+atarist/makefile.sm
+atarist/makefile.st
+atarist/osbind.pl
+atarist/perldb.diff
+atarist/perlglob.c
+atarist/test/binhandl
+atarist/test/ccon
+atarist/test/dbm
+atarist/test/err
+atarist/test/gdbm
+atarist/test/gdbm.t
+atarist/test/glob
+atarist/test/osexample.pl
+atarist/test/pi.pl
+atarist/test/printenv
+atarist/test/readme
+atarist/test/sig
+atarist/test/tbinmode
+atarist/usersub.c
+atarist/usub/README.ATARI
+atarist/usub/acurses.mus
+atarist/usub/makefile.st
+atarist/usub/usersub.c
+atarist/wildmat.c
 c2ph.SH                        program to translate dbx stabs to perl
 c2ph.doc               documentation for c2ph
 cflags.SH              A script that emits C compilation flags per file
@@ -92,6 +124,7 @@ handy.h                      Handy definitions
 hash.c                 Associative arrays
 hash.h                 Public declarations for the above
 hints/3b1.sh
+hints/3b1cc
 hints/3b2.sh
 hints/aix_rs.sh
 hints/aix_rt.sh
@@ -99,6 +132,8 @@ hints/altos486.sh
 hints/apollo_C6_7.sh
 hints/apollo_C6_8.sh   
 hints/aux.sh
+hints/cray.sh
+hints/dgux.sh
 hints/dnix.sh
 hints/dynix.sh
 hints/fps.sh
@@ -106,22 +141,26 @@ hints/genix.sh
 hints/greenhills.sh    
 hints/hp9000_300.sh
 hints/hp9000_400.sh
+hints/hp9000_700.sh
 hints/hp9000_800.sh    
 hints/hpux.sh
 hints/i386.sh
 hints/isc_3_2_2.sh
+hints/mc6000.sh
 hints/mips.sh
 hints/mpc.sh   
 hints/ncr_tower.sh
 hints/next.sh
 hints/opus.sh  
-hints/osf_1.sh
+hints/osf1.sh
 hints/sco_2_3_0.sh
 hints/sco_2_3_1.sh
 hints/sco_2_3_2.sh
 hints/sco_2_3_3.sh
+hints/sco_2_3_4.sh
 hints/sco_3.sh
 hints/sgi.sh
+hints/solaris_2_0.sh
 hints/stellar.sh       
 hints/sunos_3_4.sh
 hints/sunos_3_5.sh
@@ -129,8 +168,12 @@ hints/sunos_4_0_1.sh
 hints/sunos_4_0_2.sh
 hints/svr4.sh
 hints/ti1500.sh        
+hints/titan.sh
+hints/ultrix_1.sh
 hints/ultrix_3.sh
 hints/ultrix_4.sh
+hints/unisysdynix.sh
+hints/utekv.sh
 hints/uts.sh
 hints/vax.sh
 installperl            Perl script to do "make install" dirty work
@@ -156,6 +199,7 @@ lib/getopts.pl              Perl library supporting option parsing
 lib/importenv.pl       Perl routine to get environment into variables
 lib/look.pl            A "look" equivalent
 lib/newgetopt.pl       A perl library supporting long option parsing
+lib/open2.pl
 lib/perldb.pl          Perl debugging routines
 lib/pwd.pl             Routines to keep track of PWD environment variable
 lib/shellwords.pl      Perl library to split into words with shell quoting
@@ -189,6 +233,7 @@ os2/a2p.def         Linker defs for a2p
 os2/alarm.c            An implementation of alarm()
 os2/alarm.h            Header file for same
 os2/config.h           Configuration file for OS/2
+os2/crypt.c
 os2/dir.h              Directory header
 os2/director.c         Directory routines
 os2/eg/alarm.pl                Example of alarm code
@@ -211,6 +256,7 @@ os2/s2p.cmd         s2p as command file
 os2/selfrun.bat                A self running perl script for DOS
 os2/selfrun.cmd                Example of extproc feature
 os2/suffix.c           Code for creating backup filenames
+os2/tests.dif
 patchlevel.h           The current patch level of perl
 perl.c                 main()
 perl.h                 Global declarations
@@ -218,6 +264,7 @@ perl.man            The manual page(s)
 perlsh                 A poor man's perl shell
 perly.fixer            A program to remove yacc stack limitations
 perly.y                        Yacc grammar for perl
+pstruct
 regcomp.c              Regular expression compiler
 regcomp.h              Private declarations for above
 regexec.c              Regular expression evaluator
index cc60bf3..a3130ef 100644 (file)
@@ -24,10 +24,15 @@ case "$d_dosuid" in
 esac
 
 echo "Extracting Makefile (with variable substitutions)"
+rm -f Makefile
 cat >Makefile <<!GROK!THIS!
-# $RCSfile: Makefile.SH,v $$Revision: 4.0.1.3 $$Date: 91/11/05 15:48:11 $
+# $RCSfile: Makefile.SH,v $$Revision: 4.0.1.4 $$Date: 92/06/08 11:40:43 $
 #
 # $Log:        Makefile.SH,v $
+# Revision 4.0.1.4  92/06/08  11:40:43  lwall
+# patch20: cray didn't give enough memory to /bin/sh
+# patch20: various and sundry fixes
+# 
 # Revision 4.0.1.3  91/11/05  15:48:11  lwall
 # patch11: saberized perl
 # patch11: added support for dbz
@@ -66,6 +71,8 @@ libs = $libs $cryptlib
 
 public = perl taintperl $suidperl
 
+shellflags = $shellflags
+
 # To use an alternate make, set $altmake in config.sh.
 MAKE = ${altmake-make}
 
@@ -73,7 +80,7 @@ MAKE = ${altmake-make}
 
 cat >>Makefile <<'!NO!SUBS!'
 
-CCCMD = `sh cflags $@`
+CCCMD = `sh $(shellflags) cflags $@`
 
 private = 
 
@@ -299,10 +306,13 @@ perly.h: perly.c
        touch perly.h
 
 perly.c: perly.y perly.fixer
-       @ echo 'Expect either' 29 shift/reduce and 59 reduce/reduce conflicts...
-       @ echo '           or' 27 shift/reduce and 61 reduce/reduce conflicts...
+       @ \
+case "$(YACC)" in \
+    *bison*) echo 'Expect' 25 shift/reduce and 59 reduce/reduce conflicts;; \
+    *) echo 'Expect' 27 shift/reduce and 57 reduce/reduce conflicts;; \
+esac
        $(YACC) -d perly.y
-       sh ./perly.fixer y.tab.c perly.c
+       sh $(shellflags) ./perly.fixer y.tab.c perly.c
        mv y.tab.h perly.h
        echo 'extern YYSTYPE yylval;' >>perly.h
 
@@ -313,7 +323,7 @@ install: all
        ./perl installperl
 
 clean:
-       rm -f *.o all perl taintperl suidperl
+       rm -f *.o all perl taintperl suidperl perly.c
        cd x2p; $(MAKE) clean
 
 realclean: clean
@@ -339,7 +349,7 @@ depend: makedepend
 
 test: perl
        - cd t && chmod +x TEST */*.t
-       - cd t && (rm -f perl; $(SLN) ../perl .) && ./perl TEST </dev/tty
+       - cd t && (rm -f perl; $(SLN) ../perl perl) && ./perl TEST </dev/tty
 
 clist:
        echo $(c) | tr ' ' '\012' >.clist
@@ -354,7 +364,7 @@ shlist:
 $(obj) hash.o:
        @ echo "You haven't done a "'"make depend" yet!'; exit 1
 makedepend: makedepend.SH
-       /bin/sh makedepend.SH
+       /bin/sh $(shellflags) makedepend.SH
 !NO!SUBS!
 $eunicefix Makefile
 case `pwd` in
index 5febfbe..3290834 100644 (file)
--- a/Wishlist
+++ b/Wishlist
@@ -1,3 +1,9 @@
 built-in cpp
 perl to C translator
 multi-threading
+make more easily embeddable
+built-in globbing
+compile to threaded code
+rewrite regexp parser for better integrated optimization
+add structured types and objects
+allow for lexical scoping
diff --git a/atarist/FILES b/atarist/FILES
new file mode 100644 (file)
index 0000000..752f8e2
--- /dev/null
@@ -0,0 +1,48 @@
+
+Shipping list for the perl 4.019 atariST port:
+
+perl.diffs contains diffs from the following perl 4.019 files:
+
+    perl.h arg.h handy.h doarg.c doio.c eval.c malloc.c perl.c regcomp.c
+    str.c toke.c util.c
+
+    the file `explain' contains a brief explaination of the diffs in 
+    `perl.diffs'
+
+The following files are supplied whole (not as diffs) and replace files with
+the same name from the perl 4.019 distribution:
+
+    config.h usersub.c
+
+The following files  are specific to this atariST port:
+
+    atarist.c echo.c wildmat.c  perlglob.c  
+    makefile.sm makefile.st 
+
+The following files are in usub/
+
+    makefile.st README.ATARI usersub.c acurses.mus
+
+The following files should be added to the perl 4.019 library:
+
+    osbind.pl perldb.diff (diffs against perldb.pl in perl 4.019 lib)
+
+AtariST specific tests
+
+    test/*
+
+Misc:
+
+    FILES README.ST (read this)  RESULTS (explains results of tests)
+    explain (explains perl.diffs)
+
+Some binary distributions will also contain:
+    perl.ttp uperl.a cperl.ttp (cursesperl) perld.ttp
+    (these are all buildable using the material above).
+
+If you are missing any of the files on this list, please mail me. Please
+dont ask me to mail binaries. Some of the binaries are available at
+various atari archives, including atari.archive.umich.edu in
+atari/languages/perl4019.zoo.
+
+    ++jrb   bammi@cadence.com
diff --git a/atarist/usub/README.ATARI b/atarist/usub/README.ATARI
new file mode 100644 (file)
index 0000000..89174eb
--- /dev/null
@@ -0,0 +1 @@
+For the atariST bsd derived curses use acurses.mus (its got its own wrinkles!)
index 8c9f5a9..2ed65c5 100644 (file)
@@ -1,4 +1,15 @@
 d_voidsig='undef'
-d_tosignal='int';
-echo "If you're going to use shared libraries, don't include -lmalloc, and"
-echo "change cc to '/bin/ccc' when editing config.sh at the end."
+d_tosignal='int'
+gidtype='int'
+groupstype='int'
+uidtype='int'
+# Note that 'Configure' is run from 'UU', hence the strange 'ln'
+# command.
+for i in .. ../x2p
+do
+      rm -f $i/3b1cc
+      ln ../hints/3b1cc $i
+done
+echo "\nIf you want to use the 3b1 shared libraries, complete this script then"
+echo "read the header in 3b1cc.           [Type carriage return to continue]\c"
+read vch
diff --git a/hints/3b1cc b/hints/3b1cc
new file mode 100644 (file)
index 0000000..5570fbd
--- /dev/null
@@ -0,0 +1,86 @@
+# To incorporate the 7300/3b1 shared library, run this script in place
+# of 'CC'.
+# First: Run 'Configure' through to the end and run 'make depend'.
+# Second: Edit 'makefile' ( not Makefile ) and set CC = 3b1cc.
+# Third: Edit 'x2p/makefile' and set CC = 3b1cc.
+#
+# Do not use '3b1cc' as the default compiler.  The call to the default
+# compiler is used by 'perl' and will not be available when running
+# 'perl'.
+#
+# Note: This script omits libraries which are redundant in the shared
+# library.  It is an excerpt from a grander version available upon
+# request from "zebra!vern" or "vern@zebra.alphacdc.com".
+
+CC="cc"
+LIBS=
+INCL=
+
+LD="ld"
+SHAREDLIB="/lib/crt0s.o /lib/shlib.ifile"
+
+# Local variables
+COBJS=
+LOBJS=
+TARG=
+FLAGS=
+CMD=
+
+# These are libraries which are incorporated in the shared library
+OMIT="-lmalloc"
+
+# These routines are in libc.a but not in the shared library
+if [ ! -f vsprintf.o -o ! -f doprnt.o ]
+then
+       echo "Extracting vsprintf.o from libc.a"
+       ar -x /lib/libc.a vsprintf.o doprnt.o
+fi
+
+CMD="$CC"
+while [ $# -gt 0 ]
+do
+       case $1 in
+       -c)     CFLAG=$1;;
+       -o)     CFLAG=$1
+               shift
+               TARG="$1";;
+       -l*)    match=false
+               for i in $OMIT
+               do
+                       [ "$i" = "$1" ] && match=true
+               done
+               [ "$match" != false ] || LIBS="$LIBS $1";;
+       -*)     FLAGS="$FLAGS $1";;
+       *.c)    COBJS="$COBJS $1";;
+       *.o)    LOBJS="$LOBJS $1";;
+       *)      TARG="$1";;
+       esac
+       shift
+done
+
+if [ -n "$COBJS" ]
+then
+       CMD="$CMD $FLAGS $INCL $LPATHS $LIBS $COBJS $CFLAG $TARG"
+elif [ -n "$LOBJS" ]
+then
+       LOBJS="$LOBJS vsprintf.o doprnt.o"
+       CMD="$LD -r $LOBJS $LPATHS $LIBS -o temp.o"
+       echo "\t$CMD"
+       $CMD
+       CMD="$LD -s temp.o $SHAREDLIB -o $TARG"
+       echo "\t$CMD"
+       $CMD
+       ccrslt=$?
+       if [ $ccrslt -ne 0 ]
+       then
+               exit $ccrslt
+       fi
+       CMD="rm -f temp.o"
+else
+       exit 1
+fi
+echo "\t$CMD"
+$CMD
+ccrslt=$?
+rm -f $$.c     
+exit $ccrslt
index 9b845a7..76e55ca 100644 (file)
@@ -1,7 +1,18 @@
+d_setregid='undef'
+d_setreuid='undef'
+d_setrgid='undef'
+d_setruid='undef'
+d_setegid='undef'
+d_seteuid='undef'
+alignbytes=8
+dolist_cflags='optimize=""'
+tdolist_cflags='optimize=""'
+regexec_cflags='optimize=""'
+tregexec_cflags='optimize=""'
 eval_cflags='optimize=""'
-toke_cflags='optimize=""'
 teval_cflags='optimize=""'
+toke_cflags='optimize=""'
 ttoke_cflags='optimize=""'
 ccflags="$ccflags -D_NO_PROTO"
-cppstdin='/lib/cpp -D_AIX -D_IBMR2'
+cppstdin='/lib/cpp -D_AIX -D_IBMR2 -U__STR__'
 cppminus=''
index 68cbcf2..97d190f 100644 (file)
 #
 # Makefile for compiling Perl under OS/2
 #
-# 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.  Hey, I'm just inheriting what Diomidis gave me.
-#
-# Originally by Diomidis Spinellis, March 1990
-# Adjusted for OS/2 port by Raymond Chen, June 1990
+# Needs Microsoft C 6.00 and NMAKE
 #
 
-# 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 os2.c popen.c director.c
+EXP =   c:\ms\lib\setargv.obj -link /noe
+
+DEF =   os2\perl.def
+BAD =   os2\perl.bad
 
-# 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 os2.obj popen.obj \
-director.obj suffix.obj
+OBJ =  array.obj cmd.obj cons.obj consarg.obj doarg.obj doio.obj \
+       dolist.obj dump.obj eval.obj form.obj hash.obj perl.obj perly.obj \
+       regcomp.obj regexec.obj stab.obj str.obj toke.obj util.obj
+OBJO = os2.obj popen.obj suffix.obj director.obj alarm.obj crypt.obj
 
-# Files in the OS/2 distribution
-DOSFILES=config.h director.c makefile os2.c popen.c suffix.c readme.os2
+LIBS =  lgdbm.lib
 
-# Yacc flags
+YACC=bison
 YFLAGS=-d
 
-# Manual pages
-MAN=perlman.1 perlman.2 perlman.3 perlman.4
+CC=cl -nologo
+CCL=cl -nologo -B2C2L -B3C3L
 
-CC=cl
-# CBASE = flags everybody gets
-# CPLAIN = flags for modules that give the compiler indigestion
-# CFLAGS = flags for milder modules
-# PERL = which version of perl to build
-#
-# For preliminary building:  No optimization, DEBUGGING set, symbols included.
-#CBASE=-AL -Zi -G2 -Gs -DDEBUGGING
-#CPLAIN=$(CBASE) -Od
-#CFLAGS=$(CBASE) -Od
-#PERL=perlsym.exe
-
-# For the final build:  Optimization on, no DEBUGGING, symbols stripped.
-CBASE=-AL -Zi -G2 -Gs
-CPLAIN=$(CBASE) -Oilt
-CFLAGS=$(CBASE) -Ox
-PERL=perl.exe
-
-# Destination directory for executables
-DESTDIR=\usr\bin
-
-# Deliverables
-# 
-all: $(PERL) glob.exe
-
-perl.exe: $(OBJ) perl.arp
-       link @perl.arp,perl,nul,/stack:32767 /NOE;
-       exehdr /nologo /newfiles /pmtype:windowcompat perl.exe >nul
-
-perlsym.exe: $(OBJ) perl.arp
-       link @perl.arp,perlsym,nul,/stack:32767 /NOE /CODE;
-       exehdr /nologo /newfiles /pmtype:windowcompat perlsym.exe >nul
-
-perl.arp:
-       echo array+cmd+cons+consarg+doarg+doio+dolist+dump+ >perl.arp
-       echo eval+form+hash+perl+perly+regcomp+regexec+stab+suffix+ >>perl.arp
-       echo str+toke+util+os2+popen+director+\c600\lib\setargv >>perl.arp
-
-glob.exe: glob.c
-       $(CC) glob.c \c600\lib\setargv.obj -link /NOE
-       exehdr /nologo /newfiles /pmtype:windowcompat glob.exe >nul
-
-array.obj: array.c
-       $(CC) $(CPLAIN) -c 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
-       $(CC) /B3 \c600\binp\c3l $(CFLAGS) -c eval.c
-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
-       $(CC) $(CPLAIN) -c stab.c
-str.obj: str.c
-suffix.obj: suffix.c
-toke.obj: toke.c
-       $(CC) /B3 \c600\binp\c3l $(CFLAGS) -c toke.c
-util.obj: util.c
-#      $(CC) $(CPLAIN) -c util.c
-perly.h: ytab.h
-       cp ytab.h perly.h
-director.obj: director.c
-popen.obj: popen.c
-os2.obj: os2.c
-
-perl.1: $(MAN)
-       nroff -man $(MAN) >perl.1
-
-install: all
-       exepack perl.exe $(DESTDIR)\perl.exe
-       exepack glob.exe $(DESTDIR)\glob.exe
+CFLAGS=-W1 -AL -Zep -J -G2s -Olt -Gt 2048 -DDEBUGGING
+#CFLAGS=-W1 -AL -Ziep -J -G2 -Od -Gt 2048 -DDEBUGGING
 
-clean:
-       rm -f *.obj *.exe perl.1 perly.h perl.arp
+LDFLAGS=-AL -Lp -F 8000
+#LDFLAGS=-AL -Lp -Zi -Li -F 8000
+
+STRIP=bind -nologo
+#STRIP=rem
+
+.c.obj:
+        $(CC) -c $(CFLAGS) $<
+
+{os2}.c{}.obj:
+        $(CC) -c $(CFLAGS) -I. -Ios2 $<
 
-tags:
-       ctags *.c *.h *.xc
+all: perl.exe perlglob.exe
 
-dosperl:
-       mv $(DOSFILES) ../perl30.new
+perl.exe: $(OBJ) $(OBJO)
+        $(CC) $(LDFLAGS) $(OBJ) $(OBJO) $(LIBS) os2\perl.def -o $@ $(EXP)
+        $(STRIP) $@ -n @$(BAD)
 
-doskit:
-       mv $(DOSFILES) ../os2
+$(OBJ) $(OBJO): config.h
+perl.obj str.obj cons.obj toke.obj: perly.h
+
+config.h: os2\config.h
+        cp os2\config.h config.h
+
+perly.c perly.h: perly.y
+        $(YACC) $(YFLAGS) -o $*.c $*.y
+
+eval.obj:      eval.c
+       $(CCL) -c $(CFLAGS) $*.c
+toke.obj:      toke.c
+       $(CCL) -c $(CFLAGS) $*.c
+
+perlglob.exe: os2\glob.c os2\director.c
+       $(CC) -Zep -G2s -Olt -Lp os2\glob.c $(DEF) -o $@ $(EXP)
+        $(STRIP) $@ -n @$(BAD)
+
+clean:
+        -rm perly.c perly.h config.h *.obj >nul
index 189ce97..063ec25 100644 (file)
@@ -2,7 +2,7 @@
 (-W1 -Od -Ocgelt hash.c str.c util.c walk.c)
 
 setargv.obj
-..\os2\a2p.def
+..\os2\perl.def
 a2p.exe
 
 -AL -LB -S0x9000
index d88c283..a14bc63 100644 (file)
@@ -1,2 +1 @@
-NAME AWK2PERL WINDOWCOMPAT NEWFILES
-DESCRIPTION 'AWK to PERL translator - for MS-DOS and OS/2'
+(deprecated)
index 111b8fe..37c7e31 100644 (file)
@@ -1 +1 @@
-#define PATCHLEVEL 19
+#define PATCHLEVEL 20