summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xConfigure67
-rw-r--r--Makefile.SH49
-rw-r--r--README5
-rw-r--r--arg.h7
-rw-r--r--cmd.c7
-rw-r--r--cmd.h6
-rw-r--r--config.h.SH28
-rw-r--r--cons.c25
-rw-r--r--doio.c17
-rw-r--r--dolist.c17
-rw-r--r--evalargs.xc6
-rw-r--r--lib/perldb.pl7
-rw-r--r--malloc.c10
-rw-r--r--patchlevel.h2
-rw-r--r--perl.h19
-rw-r--r--perl.man.419
-rw-r--r--perl.y18
-rw-r--r--str.c34
-rw-r--r--str.h9
-rw-r--r--t/op.sort24
-rw-r--r--toke.c15
-rw-r--r--util.h10
-rw-r--r--x2p/Makefile.SH9
23 files changed, 311 insertions, 99 deletions
diff --git a/Configure b/Configure
index c3c65ea4ed..a3aeb9bb46 100755
--- a/Configure
+++ b/Configure
@@ -8,14 +8,14 @@
# 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 89/10/18 15:04:55 lwall Locked $
+# $Header: Configure,v 3.0.1.1 89/10/26 22:58:02 lwall Locked $
#
# Yes, you may rip this off to use in other distribution packages.
# (Note: this Configure script was generated automatically. Rather than
# working with this copy of Configure, you may wish to get metaconfig.)
: sanity checks
-PATH='.:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin:/etc:/usr/new:/usr/new/bin:/usr/nbin'
+PATH=".:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin:/etc:/usr/new:/usr/new/bin:/usr/nbin:$PATH"
export PATH || (echo "OOPS, this isn't sh. Desperation time. I will feed myself to sh."; sh $0; kill $$)
if test ! -t 0; then
@@ -157,6 +157,7 @@ i_dirent=''
d_dirnamlen=''
i_fcntl=''
i_grp=''
+i_niin=''
i_pwd=''
d_pwquota=''
d_pwage=''
@@ -424,7 +425,6 @@ Mcc
cpp
egrep
test
-uname
"
for file in $loclist; do
xxx=`loc $file $file $pth`
@@ -513,21 +513,17 @@ esac
rmlist="$rmlist loc"
: get list of predefined functions in a handy place
-if $test -n "$uname"; then
- os=`$uname -s`
-else
- os=unknown
-fi
echo " "
-if test -f /lib/libc.a; then
+set /usr/lib/libc.so.[0-9]*
+eval set \$$#
+if test -f "$1"; then
+ echo "Your shared C library is in $1."
+ libc="$1"
+elif test -f /lib/libc.a; then
echo "Your C library is in /lib/libc.a. You're normal."
libc=/lib/libc.a
else
- if test "$os" = DomainOS ; then
- ans=`loc libc blurfl/dyick $libpth`
- else
- ans=`loc libc.a blurfl/dyick $libpth`
- fi
+ ans=`loc libc.a blurfl/dyick $libpth`
if test ! -f "$ans"; then
ans=`loc clib blurfl/dyick $libpth`
fi
@@ -573,11 +569,9 @@ $sed -n -e 's/^.* [AT] *_[_.]*//p' -e 's/^.* [AT] //p' <libc.tmp >libc.list
if $contains '^printf$' libc.list >/dev/null 2>&1; then
echo "done"
else
- if test "$os" = DomainOS ; then
- $sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p' <libc.tmp >libc.list
- 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 's/^.* D __*//p' -e 's/^.* D //p' <libc.tmp >libc.list
- fi
$contains '^printf$' libc.list >/dev/null 2>&1 || \
$sed -n -e 's/^_//' \
-e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p' <libc.tmp >libc.list
@@ -1102,7 +1096,7 @@ esac
case "$ccflags" in
'') case "$cc" in
- gcc) dflt='-fpcc_struct_return';;
+ gcc) dflt='-fpcc-struct-return';;
*) dflt='none';;
esac
;;
@@ -1553,7 +1547,7 @@ else
echo "dbm.h not found."
fi
-: see if this is an pwd system
+: see if this is a pwd system
echo " "
if $test -r /usr/include/pwd.h ; then
i_pwd="$define"
@@ -1568,10 +1562,28 @@ if $test -r /usr/include/pwd.h ; then
else
d_pwage="$undef"
fi
+ if $contains 'pw_change' /usr/include/pwd.h >/dev/null 2>&1; then
+ d_pwchange="$define"
+ else
+ d_pwchange="$undef"
+ fi
+ if $contains 'pw_class' /usr/include/pwd.h >/dev/null 2>&1; then
+ d_pwclass="$define"
+ else
+ d_pwclass="$undef"
+ fi
+ if $contains 'pw_expire' /usr/include/pwd.h >/dev/null 2>&1; then
+ d_pwexpire="$define"
+ else
+ d_pwexpire="$undef"
+ fi
else
i_pwd="$undef"
d_pwquota="$undef"
d_pwage="$undef"
+ d_pwchange="$undef"
+ d_pwclass="$undef"
+ d_pwexpire="$undef"
echo "No pwd.h found."
fi
@@ -1868,7 +1880,7 @@ case "$gidtype" in
esac
cont=true
echo " "
-rp="What type are group ids on this system declared as? [$dflt]"
+rp="What type are the group ids are returned by getgroups()? [$dflt]"
$echo $n "$rp $c"
. myread
gidtype="$ans"
@@ -1893,6 +1905,16 @@ else
echo "No grp.h found."
fi
+: see if this is a netinet/in.h system
+echo " "
+if $test -r /usr/include/netinet/in.h ; then
+ i_niin="$define"
+ echo "netinet/in.h found."
+else
+ i_niin="$undef"
+ echo "No netinet/in.h found."
+fi
+
: see if this is a sys/dir.h system
echo " "
if $test -r /usr/include/sys/dir.h ; then
@@ -2070,7 +2092,7 @@ case "$uidtype" in
esac
cont=true
echo " "
-rp="What type are user ids on this system declared as? [$dflt]"
+rp="What type are user ids returned by getuid(), etc.? [$dflt]"
$echo $n "$rp $c"
. myread
uidtype="$ans"
@@ -2307,6 +2329,7 @@ i_dirent='$i_dirent'
d_dirnamlen='$d_dirnamlen'
i_fcntl='$i_fcntl'
i_grp='$i_grp'
+i_niin='$i_niin'
i_pwd='$i_pwd'
d_pwquota='$d_pwquota'
d_pwage='$d_pwage'
diff --git a/Makefile.SH b/Makefile.SH
index 6e66a4c7ed..6cb270f133 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 89/10/18 15:06:43 lwall Locked $
+# $Header: Makefile.SH,v 3.0.1.1 89/10/26 23:00:38 lwall Locked $
#
# $Log: Makefile.SH,v $
+# Revision 3.0.1.1 89/10/26 23:00:38 lwall
+# patch1: Makefile.SH needed some more .h dependecies
+#
# Revision 3.0 89/10/18 15:06:43 lwall
# 3.0 baseline
#
@@ -125,122 +128,121 @@ taintperl: tperl.o tperly.o $(tobj)
# Replicating all this junk is yucky, but I don't see a portable way to fix it.
-tperl.o: perl.c perly.h perl.h EXTERN.h regexp.h util.h INTERN.h handy.h \
- config.h stab.h
+tperl.o: perl.c perly.h $(h)
/bin/rm -f tperl.c
$(SLN) perl.c tperl.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tperl.c
/bin/rm -f tperl.c
-tperly.o: perly.c
+tperly.o: perly.c perly.h $(h)
/bin/rm -f tperly.c
$(SLN) perly.c tperly.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tperly.c
/bin/rm -f tperly.c
-sperly.o: perly.c perl.h handy.h perly.h patchlevel.h
+sperly.o: perly.c perly.h patchlevel.h $(h)
/bin/rm -f sperly.c
$(SLN) perly.c sperly.c
$(CC) -c -DTAINT -DIAMSUID $(CFLAGS) $(LARGE) sperly.c
/bin/rm -f sperly.c
-tarray.o: array.c
+tarray.o: array.c $(h)
/bin/rm -f tarray.c
$(SLN) array.c tarray.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tarray.c
/bin/rm -f tarray.c
-tcmd.o: cmd.c
+tcmd.o: cmd.c $(h)
/bin/rm -f tcmd.c
$(SLN) cmd.c tcmd.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tcmd.c
/bin/rm -f tcmd.c
-tcons.o: cons.c
+tcons.o: cons.c $(h)
/bin/rm -f tcons.c
$(SLN) cons.c tcons.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tcons.c
/bin/rm -f tcons.c
-tconsarg.o: consarg.c
+tconsarg.o: consarg.c $(h)
/bin/rm -f tconsarg.c
$(SLN) consarg.c tconsarg.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tconsarg.c
/bin/rm -f tconsarg.c
-tdoarg.o: doarg.c
+tdoarg.o: doarg.c $(h)
/bin/rm -f tdoarg.c
$(SLN) doarg.c tdoarg.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tdoarg.c
/bin/rm -f tdoarg.c
-tdoio.o: doio.c
+tdoio.o: doio.c $(h)
/bin/rm -f tdoio.c
$(SLN) doio.c tdoio.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tdoio.c
/bin/rm -f tdoio.c
-tdolist.o: dolist.c
+tdolist.o: dolist.c $(h)
/bin/rm -f tdolist.c
$(SLN) dolist.c tdolist.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tdolist.c
/bin/rm -f tdolist.c
-tdump.o: dump.c
+tdump.o: dump.c $(h)
/bin/rm -f tdump.c
$(SLN) dump.c tdump.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tdump.c
/bin/rm -f tdump.c
-teval.o: eval.c
+teval.o: eval.c $(h)
/bin/rm -f teval.c
$(SLN) eval.c teval.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) teval.c
/bin/rm -f teval.c
-tform.o: form.c
+tform.o: form.c $(h)
/bin/rm -f tform.c
$(SLN) form.c tform.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tform.c
/bin/rm -f tform.c
-thash.o: hash.c
+thash.o: hash.c $(h)
/bin/rm -f thash.c
$(SLN) hash.c thash.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) thash.c
/bin/rm -f thash.c
-tregcomp.o: regcomp.c
+tregcomp.o: regcomp.c $(h)
/bin/rm -f tregcomp.c
$(SLN) regcomp.c tregcomp.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tregcomp.c
/bin/rm -f tregcomp.c
-tregexec.o: regexec.c
+tregexec.o: regexec.c $(h)
/bin/rm -f tregexec.c
$(SLN) regexec.c tregexec.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tregexec.c
/bin/rm -f tregexec.c
-tstab.o: stab.c
+tstab.o: stab.c $(h)
/bin/rm -f tstab.c
$(SLN) stab.c tstab.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tstab.c
/bin/rm -f tstab.c
-tstr.o: str.c
+tstr.o: str.c $(h)
/bin/rm -f tstr.c
$(SLN) str.c tstr.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tstr.c
/bin/rm -f tstr.c
-ttoke.o: toke.c
+ttoke.o: toke.c $(h)
/bin/rm -f ttoke.c
$(SLN) toke.c ttoke.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) ttoke.c
/bin/rm -f ttoke.c
-tutil.o: util.c
+tutil.o: util.c $(h)
/bin/rm -f tutil.c
$(SLN) util.c tutil.c
$(CC) -c -DTAINT $(CFLAGS) $(LARGE) tutil.c
@@ -252,8 +254,7 @@ perl.c perly.h: perl.y
mv y.tab.c perl.c
mv y.tab.h perly.h
-perl.o: perl.c perly.h perl.h EXTERN.h regexp.h util.h INTERN.h handy.h \
- config.h arg.h stab.h
+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
diff --git a/README b/README
index ba603da3fc..df960443e3 100644
--- a/README
+++ b/README
@@ -65,8 +65,9 @@ Installation
This will run the regression tests on the perl you just made.
If it doesn't say "All tests successful" then something went wrong.
See the README in the t subdirectory. Note that you can't run it
- in background if this disables opening of /dev/tty. If in doubt, just
- cd to the t directory and run TEST by hand.
+ in background if this disables opening of /dev/tty. If "make test"
+ bombs out, just cd to the t directory and run TEST by hand to see if
+ it makes any difference.
6) make install
diff --git a/arg.h b/arg.h
index ae52789eeb..ffeed2fb26 100644
--- a/arg.h
+++ b/arg.h
@@ -1,4 +1,4 @@
-/* $Header: arg.h,v 3.0 89/10/18 15:08:27 lwall Locked $
+/* $Header: arg.h,v 3.0.1.1 89/10/26 23:02:35 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: arg.h,v $
+ * Revision 3.0.1.1 89/10/26 23:02:35 lwall
+ * patch1: reverse didn't work
+ *
* Revision 3.0 89/10/18 15:08:27 lwall
* 3.0 baseline
*
@@ -805,7 +808,7 @@ char opargs[MAXO+1] = {
A(3,3,0), /* AASSIGN */
A(0,0,0), /* SASSIGN */
A(0,0,0), /* DUMP */
- A(0,0,0), /* REVERSE */
+ A(0,3,0), /* REVERSE */
A(1,0,0), /* ADDROF */
A(1,1,1), /* SOCKET */
A(1,1,0), /* BIND */
diff --git a/cmd.c b/cmd.c
index 682bd08e83..2864650d5f 100644
--- a/cmd.c
+++ b/cmd.c
@@ -1,4 +1,4 @@
-/* $Header: cmd.c,v 3.0 89/10/18 15:09:02 lwall Locked $
+/* $Header: cmd.c,v 3.0.1.1 89/10/26 23:04:21 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.1 89/10/26 23:04:21 lwall
+ * patch1: heuristically disabled optimization could cause core dump
+ *
* Revision 3.0 89/10/18 15:09:02 lwall
* 3.0 baseline
*
@@ -416,8 +419,6 @@ until_loop:
}
}
if (--cmd->c_short->str_u.str_useful < 0) {
- str_free(cmd->c_short);
- cmd->c_short = Nullstr;
cmdflags &= ~CF_OPTIMIZE;
cmdflags |= CFT_EVAL; /* never try this optimization again */
cmd->c_flags = cmdflags;
diff --git a/cmd.h b/cmd.h
index 5e880a4986..3a1d832353 100644
--- a/cmd.h
+++ b/cmd.h
@@ -1,4 +1,4 @@
-/* $Header: cmd.h,v 3.0 89/10/18 15:09:15 lwall Locked $
+/* $Header: cmd.h,v 3.0.1.1 89/10/26 23:05:43 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.h,v $
+ * Revision 3.0.1.1 89/10/26 23:05:43 lwall
+ * patch1: unless was broken when run under the debugger
+ *
* Revision 3.0 89/10/18 15:09:15 lwall
* 3.0 baseline
*
@@ -53,6 +56,7 @@ char *cmdname[] = {
#define CF_ONCE 010000 /* we've already pushed the label on the stack */
#define CF_FLIP 020000 /* on a match do flipflop */
#define CF_TERM 040000 /* value of this cmd might be returned */
+#define CF_DBSUB 0100000 /* this is an inserted cmd for debugging */
#define CFT_FALSE 0 /* c_expr is always false */
#define CFT_TRUE 1 /* c_expr is always true */
diff --git a/config.h.SH b/config.h.SH
index 5cf8ad1257..7d069a23ef 100644
--- a/config.h.SH
+++ b/config.h.SH
@@ -385,11 +385,10 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#undef!'
*/
#$d_varargs VARARGS /**/
-/* vfork:
- * This symbol, if defined, remaps the vfork routine to fork if the
- * vfork() routine isn't supported here.
+/* VFORK:
+ * This symbol, if defined, indicates that vfork() exists.
*/
-#$d_vfork vfork fork /**/
+#$d_vfork VFORK /**/
/* VOIDSIG:
* This symbol is defined if this system declares "void (*signal())()" in
@@ -443,6 +442,12 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#undef!'
*/
#$i_grp I_GRP /**/
+/* I_NETINET_IN:
+ * This symbol, if defined, indicates to the C program that it should
+ * include netinet/in.h.
+ */
+#$i_niin I_NETINET_IN /**/
+
/* I_PWD:
* This symbol, if defined, indicates to the C program that it should
* include pwd.h.
@@ -455,9 +460,24 @@ sed <<!GROK!THIS! >config.h -e 's!^#undef!/\*#undef!'
* This symbol, if defined, indicates to the C program that struct passwd
* contains pw_age.
*/
+/* 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.
+ */
#$i_pwd I_PWD /**/
#$d_pwquota PWQUOTA /**/
#$d_pwage PWAGE /**/
+#$d_pwage PWCHANGE /**/
+#$d_pwage PWCLASS /**/
+#$d_pwage PWEXPIRE /**/
/* I_SYSDIR:
* This symbol, if defined, indicates to the C program that it should
diff --git a/cons.c b/cons.c
index 8e0c1468e4..e85bc81a19 100644
--- a/cons.c
+++ b/cons.c
@@ -1,4 +1,4 @@
-/* $Header: cons.c,v 3.0 89/10/18 15:10:23 lwall Locked $
+/* $Header: cons.c,v 3.0.1.1 89/10/26 23:09:01 lwall Locked $
*
* Copyright (c) 1989, Larry Wall
*
@@ -6,6 +6,10 @@
* as specified in the README file that comes with the perl 3.0 kit.
*
* $Log: cons.c,v $
+ * Revision 3.0.1.1 89/10/26 23:09:01 lwall
+ * patch1: numeric switch optimization was broken
+ * patch1: unless was broken when run under the debugger
+ *
* Revision 3.0 89/10/18 15:10:23 lwall
* 3.0 baseline
*
@@ -285,11 +289,11 @@ int count;
Newz(105,loc, max - min + 3, CMD*);
loc++;
+ max -= min;
+ max++;
while (count--) {
i = (int)str_gnum(cur->c_short);
i -= min;
- max -= min;
- max++;
switch(cur->c_slen) {
case O_LE:
i++;
@@ -314,6 +318,7 @@ int count;
}
loc--;
min--;
+ max++;
for (i = 0; i <= max; i++)
if (!loc[i])
loc[i] = cur;
@@ -378,7 +383,7 @@ CMD *cur;
stab2arg(A_WORD,DBstab),
make_list(arg),
Nullarg);
- cmd->c_flags |= CF_COND;
+ cmd->c_flags |= CF_COND|CF_DBSUB;
cmd->c_line = head->c_line;
cmd->c_label = head->c_label;
cmd->c_file = filename;
@@ -797,12 +802,14 @@ register ARG *arg;
CMD *
invert(cmd)
-register CMD *cmd;
+CMD *cmd;
{
- if (cmd->c_head)
- cmd->c_head->c_flags ^= CF_INVERT;
- else
- cmd->c_flags ^= CF_INVERT;
+ register CMD *targ = cmd;
+ if (targ->c_head)
+ targ = targ->c_head;
+ if (targ->c_flags & CF_DBSUB)
+ targ = targ->c_next;
+ targ->c_flags ^= CF_INVERT;
return cmd;
}
diff --git a/doio.c b/doio.c
index c0ba205a57..a50d18ffb6 100644
--- a/doio.c
+++ b/doio.c
@@ -1,4 +1,4 @@
-/* $Header: doio.c,v 3.0 89/10/18 15:10:54 lwall Locked $
+/* $Header: doio.c,v 3.0.1.1 89/10/26 23:10:05 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: doio.c,v $
+ * Revision 3.0.1.1 89/10/26 23:10:05 lwall
+ * patch1: Configure now checks for BSD shadow passwords
+ *
* Revision 3.0 89/10/18 15:10:54 lwall
* 3.0 baseline
*
@@ -1580,6 +1583,9 @@ int *arglast;
(void)astore(ary, ++sp, str = str_static(&str_no));
str_numset(str, (double)pwent->pw_gid);
(void)astore(ary, ++sp, str = str_static(&str_no));
+#ifdef PWCHANGE
+ str_numset(str, (double)pwent->pw_change);
+#else
#ifdef PWQUOTA
str_numset(str, (double)pwent->pw_quota);
#else
@@ -1587,14 +1593,23 @@ int *arglast;
str_set(str, pwent->pw_age);
#endif
#endif
+#endif
(void)astore(ary, ++sp, str = str_static(&str_no));
+#ifdef PWCLASS
+ str_set(str,pwent->pw_class);
+#else
str_set(str, pwent->pw_comment);
+#endif
(void)astore(ary, ++sp, str = str_static(&str_no));
str_set(str, pwent->pw_gecos);
(void)astore(ary, ++sp, str = str_static(&str_no));
str_set(str, pwent->pw_dir);
(void)astore(ary, ++sp, str = str_static(&str_no));
str_set(str, pwent->pw_shell);
+#ifdef PWEXPIRE
+ (void)astore(ary, ++sp, str = str_static(&str_no));
+ str_numset(str, (double)pwent->pw_expire);
+#endif
}
return sp;
diff --git a/dolist.c b/dolist.c
index e47c37d492..0c3b6a6076 100644
--- a/dolist.c
+++ b/dolist.c
@@ -1,4 +1,4 @@
-/* $Header: dolist.c,v 3.0 89/10/18 15:11:02 lwall Locked $
+/* $Header: dolist.c,v 3.0.1.1 89/10/26 23:11:51 lwall Locked $
*
* Copyright (c) 1989, Larry Wall
*
@@ -6,6 +6,10 @@
* as specified in the README file that comes with the perl 3.0 kit.
*
* $Log: dolist.c,v $
+ * Revision 3.0.1.1 89/10/26 23:11:51 lwall
+ * patch1: split in a subroutine wrongly freed referenced arguments
+ * patch1: reverse didn't work
+ *
* Revision 3.0 89/10/18 15:11:02 lwall
* 3.0 baseline
*
@@ -285,8 +289,12 @@ int *arglast;
#endif
ary = stab_xarray(spat->spat_repl[1].arg_ptr.arg_stab);
if (ary && ((ary->ary_flags & ARF_REAL) || gimme != G_ARRAY)) {
- ary->ary_flags |= ARF_REAL;
realarray = 1;
+ if (!(ary->ary_flags & ARF_REAL)) {
+ ary->ary_flags |= ARF_REAL;
+ for (i = ary->ary_fill; i >= 0; i--)
+ ary->ary_array[i] = Nullstr; /* don't free mere refs */
+ }
ary->ary_fill = -1;
sp = -1; /* temporarily switch stacks */
}
@@ -754,8 +762,11 @@ int *arglast;
}
while (i-- > 0) {
*up++ = *down;
- *down-- = *up;
+ if (i-- > 0)
+ *down-- = *up;
}
+ i = arglast[2] - arglast[1];
+ Copy(down+1,up,i/2,STR*);
return arglast[2] - 1;
}
diff --git a/evalargs.xc b/evalargs.xc
index b9d4a26409..d2b7c64a00 100644
--- a/evalargs.xc
+++ b/evalargs.xc
@@ -2,9 +2,12 @@
* kit sizes from getting too big.
*/
-/* $Header: evalargs.xc,v 3.0 89/10/18 15:17:16 lwall Locked $
+/* $Header: evalargs.xc,v 3.0.1.1 89/10/26 23:12:55 lwall Locked $
*
* $Log: evalargs.xc,v $
+ * Revision 3.0.1.1 89/10/26 23:12:55 lwall
+ * patch1: glob didn't free a temporary string
+ *
* Revision 3.0 89/10/18 15:17:16 lwall
* 3.0 baseline
*
@@ -275,6 +278,7 @@
}
(void)do_open(last_in_stab,tmpstr->str_ptr);
fp = stab_io(last_in_stab)->ifp;
+ str_free(tmpstr);
}
}
}
diff --git a/lib/perldb.pl b/lib/perldb.pl
index 51f6c24e11..7b3e0aad7a 100644
--- a/lib/perldb.pl
+++ b/lib/perldb.pl
@@ -1,6 +1,6 @@
package DB;
-$header = '$Header: perldb.pl,v 3.0 89/10/18 15:19:46 lwall Locked $';
+$header = '$Header: perldb.pl,v 3.0.1.1 89/10/26 23:14:02 lwall Locked $';
#
# This file is automatically included if you do perl -d.
# It's probably not useful to include this yourself.
@@ -10,6 +10,9 @@ $header = '$Header: perldb.pl,v 3.0 89/10/18 15:19:46 lwall Locked $';
# have a breakpoint. It also inserts a do 'perldb.pl' before the first line.
#
# $Log: perldb.pl,v $
+# Revision 3.0.1.1 89/10/26 23:14:02 lwall
+# patch1: RCS expanded an unintended $Header in lib/perldb.pl
+#
# Revision 3.0 89/10/18 15:19:46 lwall
# 3.0 baseline
#
@@ -25,7 +28,7 @@ $| = 1; # for DB'OUT
select(STDOUT);
$| = 1; # for real STDOUT
-$header =~ s/\$Header: perldb.pl,v 3.0 89/10/18 15:19:46 lwall Locked $/$1$2/;
+$header =~ s/.Header: ([^,]+),v(\s+\S+\s+\S+).*$/$1$2/;
print OUT "\nLoading DB from $header\n\n";
sub DB {
diff --git a/malloc.c b/malloc.c
index 62ff232a16..4318a2cec7 100644
--- a/malloc.c
+++ b/malloc.c
@@ -1,6 +1,10 @@
-/* $Header: malloc.c,v 3.0 89/10/18 15:20:39 lwall Locked $
+/* $Header: malloc.c,v 3.0.1.1 89/10/26 23:15:05 lwall Locked $
*
* $Log: malloc.c,v $
+ * Revision 3.0.1.1 89/10/26 23:15:05 lwall
+ * patch1: some declarations were missing from malloc.c
+ * patch1: sparc machines had alignment problems in malloc.c
+ *
* Revision 3.0 89/10/18 15:20:39 lwall
* 3.0 baseline
*
@@ -27,6 +31,8 @@ static char sccsid[] = "@(#)malloc.c 4.3 (Berkeley) 9/16/83";
#include "EXTERN.h"
#include "perl.h"
+static findbucket(), morecore();
+
/* I don't much care whether these are defined in sys/types.h--LAW */
#define u_char unsigned char
@@ -44,7 +50,7 @@ static char sccsid[] = "@(#)malloc.c 4.3 (Berkeley) 9/16/83";
*/
union overhead {
union overhead *ov_next; /* when free */
-#ifdef mips
+#if defined (mips) || defined (sparc)
double strut; /* alignment problems */
#endif
struct {
diff --git a/patchlevel.h b/patchlevel.h
index 935ec354b7..110c86f392 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -1 +1 @@
-#define PATCHLEVEL 0
+#define PATCHLEVEL 1
diff --git a/perl.h b/perl.h
index 3ea3d828c7..4808d56329 100644
--- a/perl.h
+++ b/perl.h
@@ -1,4 +1,4 @@
-/* $Header: perl.h,v 3.0 89/10/18 15:21:21 lwall Locked $
+/* $Header: perl.h,v 3.0.1.1 89/10/26 23:17:08 lwall Locked $
*
* Copyright (c) 1989, Larry Wall
*
@@ -6,6 +6,11 @@
* as specified in the README file that comes with the perl 3.0 kit.
*
* $Log: perl.h,v $
+ * Revision 3.0.1.1 89/10/26 23:17:08 lwall
+ * patch1: vfork now conditionally defined based on VFORK
+ * patch1: DEC risc machines have a buggy memcmp
+ * patch1: perl.h now includes <netinet/in.h> if it exists
+ *
* Revision 3.0 89/10/18 15:21:21 lwall
* 3.0 baseline
*
@@ -24,6 +29,14 @@
# endif
#endif
+#ifndef VFORK
+# define vfork fork
+#endif
+
+#if defined(MEMCMP) && defined(mips) && BYTEORDER == 01234
+#undef MEMCMP
+#endif
+
#ifdef MEMCPY
extern char *memcpy(), *memset();
#define bcopy(s1,s2,l) memcpy(s2,s1,l)
@@ -38,6 +51,10 @@ extern char *memcpy(), *memset();
#include <setjmp.h>
#include <sys/param.h> /* if this needs types.h we're still wrong */
+#ifdef I_NETINET_IN
+#include <netinet/in.h>
+#endif
+
#ifndef _TYPES_ /* If types.h defines this it's easy. */
#ifndef major /* Does everyone's types.h define this? */
#include <sys/types.h>
diff --git a/perl.man.4 b/perl.man.4
index 953ca8be47..af423de2cc 100644
--- a/perl.man.4
+++ b/perl.man.4
@@ -1,7 +1,10 @@
''' Beginning of part 4
-''' $Header: perl.man.4,v 3.0 89/10/18 15:21:55 lwall Locked $
+''' $Header: perl.man.4,v 3.0.1.1 89/10/26 23:18:43 lwall Locked $
'''
''' $Log: perl.man.4,v $
+''' Revision 3.0.1.1 89/10/26 23:18:43 lwall
+''' patch1: documented the desirability of unnecessary parentheses
+'''
''' Revision 3.0 89/10/18 15:21:55 lwall
''' 3.0 baseline
'''
@@ -992,6 +995,18 @@ doesn't mean that you have to make use of the defaults.
The defaults are there for lazy systems programmers writing one-shot
programs.
If you want your program to be readable, consider supplying the argument.
+.Sp
+Along the same lines, just because you
+.I can
+omit parentheses in many places doesn't mean that you ought to:
+.nf
+
+ return print reverse sort num values array;
+ return print(reverse(sort num (values(%array))));
+
+.fi
+When in doubt, parenthesize.
+At the very least it will let some poor schmuck bounce on the % key in vi.
.Ip 2. 4 4
Don't go through silly contortions to exit a loop at the top or the
bottom, when
@@ -1017,6 +1032,8 @@ See last example.
.Ip 6. 4 4
For portability, when using features that may not be implemented on every
machine, test the construct in an eval to see if it fails.
+If you know what version or patchlevel a particular feature was implemented,
+you can test $] to see if it will be there.
.Ip 4. 4 4
Choose mnemonic indentifiers.
.Ip 5. 4 4
diff --git a/perl.y b/perl.y
index 827448e2ce..05e5a68990 100644
--- a/perl.y
+++ b/perl.y
@@ -1,4 +1,4 @@
-/* $Header: perl.y,v 3.0 89/10/18 15:22:04 lwall Locked $
+/* $Header: perl.y,v 3.0.1.1 89/10/26 23:20:41 lwall Locked $
*
* Copyright (c) 1989, Larry Wall
*
@@ -6,6 +6,10 @@
* as specified in the README file that comes with the perl 3.0 kit.
*
* $Log: perl.y,v $
+ * Revision 3.0.1.1 89/10/26 23:20:41 lwall
+ * patch1: grandfathered "format stdout"
+ * patch1: operator(); is now normally equivalent to operator;
+ *
* Revision 3.0 89/10/18 15:22:04 lwall
* 3.0 baseline
*
@@ -276,7 +280,13 @@ decl : format
;
format : FORMAT WORD '=' FORMLIST
- { stab_form(stabent($2,TRUE)) = $4; Safefree($2);}
+ { if (strEQ($2,"stdout"))
+ stab_form(stabent("STDOUT",TRUE)) = $4;
+ else if (strEQ($2,"stderr"))
+ stab_form(stabent("STDERR",TRUE)) = $4;
+ else
+ stab_form(stabent($2,TRUE)) = $4;
+ Safefree($2);}
| FORMAT '=' FORMLIST
{ stab_form(stabent("STDOUT",TRUE)) = $3; }
;
@@ -632,6 +642,10 @@ term : '-' term %prec UMINUS
Nullarg, Nullarg)); }
| FUNC0
{ $$ = make_op($1, 0, Nullarg, Nullarg, Nullarg); }
+ | FUNC1 '(' ')'
+ { $$ = make_op($1, 1, Nullarg, Nullarg, Nullarg);
+ if ($1 == O_EVAL || $1 == O_RESET)
+ $$ = fixeval($$); }
| FUNC1 '(' expr ')'
{ $$ = make_op($1, 1, $3, Nullarg, Nullarg);
if ($1 == O_EVAL || $1 == O_RESET)
diff --git a/str.c b/str.c
index 9df2913fbb..0d19b59952 100644
--- a/str.c
+++ b/str.c
@@ -1,4 +1,4 @@
-/* $Header: str.c,v 3.0 89/10/18 15:23:38 lwall Locked $
+/* $Header: str.c,v 3.0.1.1 89/10/26 23:23:41 lwall Locked $
*
* Copyright (c) 1989, Larry Wall
*
@@ -6,6 +6,10 @@
* as specified in the README file that comes with the perl 3.0 kit.
*
* $Log: str.c,v $
+ * Revision 3.0.1.1 89/10/26 23:23:41 lwall
+ * patch1: string ordering tests were wrong
+ * patch1: $/ now works even when STDSTDIO undefined
+ *
* Revision 3.0 89/10/18 15:23:38 lwall
* 3.0 baseline
*
@@ -604,14 +608,14 @@ register STR *str2;
if (retval = memcmp(str1->str_ptr, str2->str_ptr, str1->str_cur))
return retval;
else
- return 1;
+ return -1;
}
else if (retval = memcmp(str1->str_ptr, str2->str_ptr, str2->str_cur))
return retval;
else if (str1->str_cur == str2->str_cur)
return 0;
else
- return -1;
+ return 1;
}
char *
@@ -620,8 +624,6 @@ register STR *str;
register FILE *fp;
int append;
{
-#ifdef STDSTDIO /* Here is some breathtakingly efficient cheating */
-
register char *bp; /* we're going to steal some values */
register int cnt; /* from the stdio struct and put EVERYTHING */
register STDCHAR *ptr; /* in the innermost loop into registers */
@@ -636,6 +638,8 @@ int append;
newline = '\n';
oldbp = Nullch; /* remember last \n position (none) */
}
+#ifdef STDSTDIO /* Here is some breathtakingly efficient cheating */
+
cnt = fp->_cnt; /* get count into register */
str->str_nok = 0; /* invalidate number */
str->str_pok = 1; /* validate pointer */
@@ -686,16 +690,28 @@ thats_really_all_folks:
#else /* !STDSTDIO */ /* The big, slow, and stupid way */
- static char buf[8192];
+ {
+ static char buf[8192];
+ char * bpe = buf + sizeof(buf) - 3;
+
+screamer:
+ bp = buf;
+filler:
+ while ((i = getc(fp)) != EOF && (*bp++ = i) != newline && bp < bpe);
+ if (i == newline && get_paragraph &&
+ (i = getc(fp)) != EOF && (*bp++ = i) != newline && bp < bpe)
+ goto filler;
- if (fgets(buf, sizeof buf, fp) != Nullch) {
+ *bp = '\0';
if (append)
str_cat(str, buf);
else
str_set(str, buf);
+ if (i != newline && i != EOF) {
+ append = -1;
+ goto screamer;
+ }
}
- else
- str_set(str, No);
#endif /* STDSTDIO */
diff --git a/str.h b/str.h
index f4ea90f8dd..2c14029c7e 100644
--- a/str.h
+++ b/str.h
@@ -1,4 +1,4 @@
-/* $Header: str.h,v 3.0 89/10/18 15:23:49 lwall Locked $
+/* $Header: str.h,v 3.0.1.1 89/10/26 23:24:42 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: str.h,v $
+ * Revision 3.0.1.1 89/10/26 23:24:42 lwall
+ * patch1: rearranged some structures to align doubles better on Gould
+ *
* Revision 3.0 89/10/18 15:23:49 lwall
* 3.0 baseline
*
@@ -13,6 +16,7 @@
struct string {
char * str_ptr; /* pointer to malloced string */
+ int str_len; /* allocated size */
union {
double str_nval; /* numeric value, if any */
STAB *str_stab; /* magic stab for magic "key" string */
@@ -21,7 +25,6 @@ struct string {
HASH *str_hash; /* string represents an assoc array (stab?) */
ARRAY *str_array; /* string represents an array */
} str_u;
- int str_len; /* allocated size */
int str_cur; /* length of str_ptr as a C string */
STR *str_magic; /* while free, link to next free str */
/* while in use, ptr to "key" for magic items */
@@ -37,6 +40,7 @@ struct string {
struct stab { /* should be identical, except for str_ptr */
STBP * str_ptr; /* pointer to malloced string */
+ int str_len; /* allocated size */
union {
double str_nval; /* numeric value, if any */
STAB *str_stab; /* magic stab for magic "key" string */
@@ -45,7 +49,6 @@ struct stab { /* should be identical, except for str_ptr */
HASH *str_hash; /* string represents an assoc array (stab?) */
ARRAY *str_array; /* string represents an array */
} str_u;
- int str_len; /* allocated size */
int str_cur; /* length of str_ptr as a C string */
STR *str_magic; /* while free, link to next free str */
/* while in use, ptr to "key" for magic items */
diff --git a/t/op.sort b/t/op.sort
index 89dafaeabb..424321529b 100644
--- a/t/op.sort
+++ b/t/op.sort
@@ -1,8 +1,8 @@
#!./perl
-# $Header: op.sort,v 3.0 89/10/18 15:31:19 lwall Locked $
+# $Header: op.sort,v 3.0.1.1 89/10/26 23:25:37 lwall Locked $
-print "1..3\n";
+print "1..8\n";
sub reverse { $a lt $b ? 1 : $a gt $b ? -1 : 0; }
@@ -17,3 +17,23 @@ print ($x eq 'xdogcatCainAbel' ? "ok 2\n" : "not ok 2\n");
$x = join('', sort @george, 'to', @harry);
print ($x eq 'AbelAxedCainPunishedcatchaseddoggonetoxyz'?"ok 3\n":"not ok 3\n");
+
+@a = ();
+@b = reverse @a;
+print ("@b" eq "" ? "ok 4\n" : "not ok 4 (@b)\n");
+
+@a = (1);
+@b = reverse @a;
+print ("@b" eq "1" ? "ok 5\n" : "not ok 5 (@b)\n");
+
+@a = (1,2);
+@b = reverse @a;
+print ("@b" eq "2 1" ? "ok 6\n" : "not ok 6 (@b)\n");
+
+@a = (1,2,3);
+@b = reverse @a;
+print ("@b" eq "3 2 1" ? "ok 7\n" : "not ok 7 (@b)\n");
+
+@a = (1,2,3,4);
+@b = reverse @a;
+print ("@b" eq "4 3 2 1" ? "ok 8\n" : "not ok 8 (@b)\n");
diff --git a/toke.c b/toke.c
index 6b5807428d..2d83a717b8 100644
--- a/toke.c
+++ b/toke.c
@@ -1,4 +1,4 @@
-/* $Header: toke.c,v 3.0 89/10/18 15:32:33 lwall Locked $
+/* $Header: toke.c,v 3.0.1.1 89/10/26 23:26:21 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: toke.c,v $
+ * Revision 3.0.1.1 89/10/26 23:26:21 lwall
+ * patch1: disambiguated word after "sort" better
+ *
* Revision 3.0 89/10/18 15:32:33 lwall
* 3.0 baseline
*
@@ -865,7 +868,15 @@ yylex()
fatal("sort is now a reserved word");
if (isascii(*s) && (isalpha(*s) || *s == '_')) {
for (d = s; isalpha(*d) || isdigit(*d) || *d == '_'; d++) ;
- if (d >= bufend || isspace(*d))
+ strncpy(tokenbuf,s,d-s);
+ if (strNE(tokenbuf,"keys") &&
+ strNE(tokenbuf,"values") &&
+ strNE(tokenbuf,"split") &&
+ strNE(tokenbuf,"grep") &&
+ strNE(tokenbuf,"readdir") &&
+ strNE(tokenbuf,"unpack") &&
+ strNE(tokenbuf,"do") &&
+ (d >= bufend || isspace(*d)) )
*(--s) = '\\'; /* force next ident to WORD */
}
LOP(O_SORT);
diff --git a/util.h b/util.h
index 391fe4725e..85862eb59b 100644
--- a/util.h
+++ b/util.h
@@ -1,4 +1,4 @@
-/* $Header: util.h,v 3.0 89/10/18 15:33:18 lwall Locked $
+/* $Header: util.h,v 3.0.1.1 89/10/26 23:28:25 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: util.h,v $
+ * Revision 3.0.1.1 89/10/26 23:28:25 lwall
+ * patch1: declared bcopy if necessary
+ *
* Revision 3.0 89/10/18 15:33:18 lwall
* 3.0 baseline
*
@@ -30,3 +33,8 @@ char *rninstr();
char *nsavestr();
FILE *mypopen();
int mypclose();
+#ifndef BCOPY
+#ifndef MEMCPY
+char *bcopy();
+#endif
+#endif
diff --git a/x2p/Makefile.SH b/x2p/Makefile.SH
index c451965028..cbbde9a133 100644
--- a/x2p/Makefile.SH
+++ b/x2p/Makefile.SH
@@ -18,9 +18,12 @@ case "$mallocsrc" in
esac
echo "Extracting x2p/Makefile (with variable substitutions)"
cat >Makefile <<!GROK!THIS!
-# $Header: Makefile.SH,v 3.0 89/10/18 15:33:52 lwall Locked $
+# $Header: Makefile.SH,v 3.0.1.1 89/10/26 23:29:11 lwall Locked $
#
# $Log: Makefile.SH,v $
+# Revision 3.0.1.1 89/10/26 23:29:11 lwall
+# patch1: in x2p/Makefile.SH, added dependency on ../config.sh
+#
# Revision 3.0 89/10/18 15:33:52 lwall
# 3.0 baseline
#
@@ -144,6 +147,10 @@ hlist:
shlist:
echo $(sh) | tr ' ' '\012' >.shlist
+config.sh: ../config.sh
+ rm -f config.sh
+ ln ../config.sh .
+
# AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
$(obj):
@ echo "You haven't done a "'"make depend" yet!'; exit 1