summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLarry Wall <lwall@netlabs.com>1992-06-22 23:34:36 +0000
committerLarry Wall <lwall@netlabs.com>1992-06-22 23:34:36 +0000
commit514dae0dba791ec01681adb3b3946a7646e146b3 (patch)
tree95280cdcdd307611323bb1b859147eeccfd8c23d
parentfaf8582f0c418b57fd71e105da84edbb3177fa0c (diff)
downloadperl-514dae0dba791ec01681adb3b3946a7646e146b3.tar.gz
perl 4.0 patch 35: (combined patch)
Subject: bad interaction between backslash and hyphen in tr/// Among other things, tr/\040-\126/ / was not doing a character range, due to a earlier botched fix to make \- work right. Subject: Configure test for presence of nroff was wrong If Loc doesn't find nroff, it sets $nroff to 'nroff'. The man page test was tesing against the null string. Subject: installperl error message printed file mode in decimal, not octal A real, honest-to-goodnes nit. Subject: fixed up some filenames in MANIFEST Erroneously contained "pstruct", omitted hints/isc_3_2_3.sh.
-rwxr-xr-xConfigure4
-rw-r--r--MANIFEST2
-rw-r--r--installperl2
-rw-r--r--patchlevel.h2
-rw-r--r--toke.c27
5 files changed, 27 insertions, 10 deletions
diff --git a/Configure b/Configure
index 44753783ca..ddfd7e280c 100755
--- 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.8 $$Date: 92/06/11 21:04:45 $
+# $RCSfile: Configure,v $$Revision: 4.0.1.9 $$Date: 92/06/23 12:28:33 $
#
# Yes, you may rip this off to use in other distribution packages.
# (Note: this Configure script was generated automatically. Rather than
@@ -877,7 +877,7 @@ $cat <<EOM
$package has manual pages available in source form.
EOM
case "$nroff" in
-'')
+'nroff')
echo "However, you don't have nroff, so they're probably useless to you."
case "$mansrc" in
'')
diff --git a/MANIFEST b/MANIFEST
index 3890ea3184..2a518c189b 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -146,6 +146,7 @@ hints/hp9000_800.sh
hints/hpux.sh
hints/i386.sh
hints/isc_3_2_2.sh
+hints/isc_3_2_3.sh
hints/mc6000.sh
hints/mips.sh
hints/mpc.sh
@@ -264,7 +265,6 @@ 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
diff --git a/installperl b/installperl
index b5ef496f91..4f3fc0004d 100644
--- a/installperl
+++ b/installperl
@@ -198,7 +198,7 @@ sub chmod {
local($mode,$name) = @_;
printf STDERR " chmod %o %s\n", $mode, $name;
- chmod($mode,$name) || warn "Couldn't chmod $mode $name: $!\n"
+ chmod($mode,$name) || warn sprintf("Couldn't chmod %o %s: $!\n",$mode,$name)
unless $nonono;
}
diff --git a/patchlevel.h b/patchlevel.h
index 3b47b479b6..68fcfefec9 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -1 +1 @@
-#define PATCHLEVEL 34
+#define PATCHLEVEL 35
diff --git a/toke.c b/toke.c
index 0452765f90..8019756220 100644
--- a/toke.c
+++ b/toke.c
@@ -1,4 +1,4 @@
-/* $RCSfile: toke.c,v $$Revision: 4.0.1.7 $$Date: 92/06/11 21:16:30 $
+/* $RCSfile: toke.c,v $$Revision: 4.0.1.8 $$Date: 92/06/23 12:33:45 $
*
* Copyright (c) 1991, Larry Wall
*
@@ -6,6 +6,9 @@
* License or the Artistic License, as specified in the README file.
*
* $Log: toke.c,v $
+ * Revision 4.0.1.8 92/06/23 12:33:45 lwall
+ * patch35: bad interaction between backslash and hyphen in tr///
+ *
* Revision 4.0.1.7 92/06/11 21:16:30 lwall
* patch34: expectterm incorrectly set to indicate start of program or block
*
@@ -2297,6 +2300,7 @@ int in_what;
STR *tmpstr;
STR *tmpstr2 = Nullstr;
char *tmps;
+ bool dorange = FALSE;
CLINE;
multi_start = curcmd->c_line;
@@ -2394,10 +2398,11 @@ int in_what;
s++;
}
s = d = tmpstr->str_ptr; /* assuming shrinkage only */
- while (s < send) {
+ while (s < send || dorange) {
if (in_what & SCAN_TR) {
- if (*s != '\\' && s[1] == '-' && s+2 < send) {
+ if (dorange) {
int i;
+ int max;
if (!tmpstr2) { /* oops, have to grow */
tmpstr2 = str_smake(tmpstr);
s = tmpstr2->str_ptr + (s - tmpstr->str_ptr);
@@ -2406,11 +2411,17 @@ int in_what;
i = d - tmpstr->str_ptr;
STR_GROW(tmpstr, tmpstr->str_len + 256);
d = tmpstr->str_ptr + i;
- for (i = (s[0] & 0377); i <= (s[2] & 0377); i++)
+ d -= 2;
+ max = d[1] & 0377;
+ for (i = (*d & 0377); i <= max; i++)
*d++ = i;
- s += 3;
+ dorange = FALSE;
continue;
}
+ else if (*s == '-' && s+1 < send && d != tmpstr->str_ptr) {
+ dorange = TRUE;
+ s++;
+ }
}
else {
if ((*s == '$' && s+1 < send &&
@@ -2432,6 +2443,12 @@ int in_what;
if (*s == '\\' && s+1 < send) {
s++;
switch (*s) {
+ case '-':
+ if (in_what & SCAN_TR) {
+ *d++ = *s++;
+ continue;
+ }
+ /* FALL THROUGH */
default:
if (!makesingle && (!leave || (*s && index(leave,*s))))
*d++ = '\\';