summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLarry Wall <lwall@jpl-devvax.jpl.nasa.gov>1989-11-17 03:02:59 +0000
committerLarry Wall <lwall@jpl-devvax.jpl.nasa.gov>1989-11-17 03:02:59 +0000
commitffed7fefd1d95d05e699dababfbb57ef2497cea1 (patch)
treeac02e16ead3b52915c921545a9ccb80f5c857501
parent0d3e774cdb279a1eadd8282d49334b9b1bfd42ed (diff)
downloadperl-ffed7fefd1d95d05e699dababfbb57ef2497cea1.tar.gz
perl 3.0 patch #6 patch 5 continued
See patch 5.
-rw-r--r--patchlevel.h2
-rw-r--r--perl.h19
-rw-r--r--perl.man.115
-rw-r--r--perl.man.27
-rw-r--r--perl.man.311
-rw-r--r--perl.man.444
-rw-r--r--perly.c10
-rw-r--r--stab.c10
-rw-r--r--str.c27
-rw-r--r--toke.c61
-rw-r--r--util.c34
-rw-r--r--util.h10
-rw-r--r--x2p/s2p.SH21
-rw-r--r--x2p/walk.c15
14 files changed, 202 insertions, 84 deletions
diff --git a/patchlevel.h b/patchlevel.h
index 51d80f3b8e..fb8ed65ede 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -1 +1 @@
-#define PATCHLEVEL 5
+#define PATCHLEVEL 6
diff --git a/perl.h b/perl.h
index 2f7131f516..a9e3f1463c 100644
--- a/perl.h
+++ b/perl.h
@@ -1,4 +1,4 @@
-/* $Header: perl.h,v 3.0.1.2 89/11/11 04:39:38 lwall Locked $
+/* $Header: perl.h,v 3.0.1.3 89/11/17 15:28:57 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.h,v $
+ * Revision 3.0.1.3 89/11/17 15:28:57 lwall
+ * patch5: byteorder now is a hex value
+ * patch5: Configure now looks for <time.h> including <sys/time.h>
+ *
* Revision 3.0.1.2 89/11/11 04:39:38 lwall
* patch2: Configure may now set -DDEBUGGING
* patch2: netinet/in.h needed sys/types.h some places
@@ -35,7 +39,7 @@
# define vfork fork
#endif
-#if defined(MEMCMP) && defined(mips) && BYTEORDER == 01234
+#if defined(MEMCMP) && defined(mips) && BYTEORDER == 0x1234
#undef MEMCMP
#endif
@@ -67,11 +71,14 @@ extern char *memcpy(), *memset();
#if defined(TMINSYS) || defined(I_SYSTIME)
#include <sys/time.h>
-#ifdef TIMETOO
+#ifdef I_TIMETOO
#include <time.h>
#endif
#else
#include <time.h>
+#ifdef I_SYSTIMETOO
+#include <time.h>
+#endif
#endif
#include <sys/times.h>
@@ -238,7 +245,7 @@ EXT STR *Str;
#define STR_GROW(str,len) if ((str)->str_len < (len)) str_grow(str,len)
#ifndef BYTEORDER
-#define BYTEORDER 01234
+#define BYTEORDER 0x1234
#endif
#if defined(htonl) && !defined(HTONL)
@@ -254,7 +261,7 @@ EXT STR *Str;
#define NTOHS
#endif
#ifndef HTONL
-#if (BYTEORDER != 04321) && (BYTEORDER != 087654321)
+#if (BYTEORDER != 0x4321) && (BYTEORDER != 0x87654321)
#define HTONS
#define HTONL
#define NTOHS
@@ -266,7 +273,7 @@ EXT STR *Str;
#define ntohl my_ntohl
#endif
#else
-#if (BYTEORDER == 04321) || (BYTEORDER == 087654321)
+#if (BYTEORDER == 0x4321) || (BYTEORDER == 0x87654321)
#undef HTONS
#undef HTONL
#undef NTOHS
diff --git a/perl.man.1 b/perl.man.1
index f61350bf74..33a48a3cfd 100644
--- a/perl.man.1
+++ b/perl.man.1
@@ -1,7 +1,10 @@
.rn '' }`
-''' $Header: perl.man.1,v 3.0.1.1 89/11/11 04:41:22 lwall Locked $
+''' $Header: perl.man.1,v 3.0.1.2 89/11/17 15:30:03 lwall Locked $
'''
''' $Log: perl.man.1,v $
+''' Revision 3.0.1.2 89/11/17 15:30:03 lwall
+''' patch5: fixed some manual typos and indent problems
+'''
''' Revision 3.0.1.1 89/11/11 04:41:22 lwall
''' patch2: explained about sh and ${1+"$@"}
''' patch2: documented that space must separate word and '' string
@@ -413,7 +416,7 @@ scalar variables and values are interpreted as strings or numbers
as appropriate to the context.
A scalar is interpreted as TRUE in the boolean sense if it is not the null
string or 0.
-Booleans returned by operators are 1 for true and \'0\' or \'\' (the null
+Booleans returned by operators are 1 for true and 0 or \'\' (the null
string) for false.
.PP
There are actually two varieties of null string: defined and undefined.
@@ -831,7 +834,7 @@ The only things that need to be declared in
.I perl
are report formats and subroutines.
See the sections below for more information on those declarations.
-All uninitialized objects user-created objects are assumed to
+All uninitialized user-created objects are assumed to
start with a null or 0 value until they
are defined by some explicit operation such as assignment.
The sequence of commands is executed just once, unlike in
@@ -1031,9 +1034,9 @@ In addition to the above, you could write
.ne 6
foo: {
- $abc = 1, last foo if /^abc/;
- $def = 1, last foo if /^def/;
- $xyz = 1, last foo if /^xyz/;
+ $abc = 1, last foo if /^abc/;
+ $def = 1, last foo if /^def/;
+ $xyz = 1, last foo if /^xyz/;
$nothing = 1;
}
diff --git a/perl.man.2 b/perl.man.2
index c310cfce93..ddd53655ff 100644
--- a/perl.man.2
+++ b/perl.man.2
@@ -1,7 +1,10 @@
''' Beginning of part 2
-''' $Header: perl.man.2,v 3.0.1.1 89/11/11 04:43:10 lwall Locked $
+''' $Header: perl.man.2,v 3.0.1.2 89/11/17 15:30:16 lwall Locked $
'''
''' $Log: perl.man.2,v $
+''' Revision 3.0.1.2 89/11/17 15:30:16 lwall
+''' patch5: fixed some manual typos and indent problems
+'''
''' Revision 3.0.1.1 89/11/11 04:43:10 lwall
''' patch2: made some line breaks depend on troff vs. nroff
''' patch2: example of unshift had args backwards
@@ -140,7 +143,7 @@ Here's an example of looking up non-numeric uids:
$uid{$login} = $uid;
$gid{$login} = $gid;
}
- @ary = <$pattern>; # get filenames
+ @ary = <${pattern}>; # get filenames
if ($uid{$user} eq \'\') {
die "$user not in passwd file";
}
diff --git a/perl.man.3 b/perl.man.3
index 456c228ad9..c5359f9084 100644
--- a/perl.man.3
+++ b/perl.man.3
@@ -1,7 +1,11 @@
''' Beginning of part 3
-''' $Header: perl.man.3,v 3.0.1.1 89/11/11 04:45:06 lwall Locked $
+''' $Header: perl.man.3,v 3.0.1.2 89/11/17 15:31:05 lwall Locked $
'''
''' $Log: perl.man.3,v $
+''' Revision 3.0.1.2 89/11/17 15:31:05 lwall
+''' patch5: fixed some manual typos and indent problems
+''' patch5: added warning about print making an array context
+'''
''' Revision 3.0.1.1 89/11/11 04:45:06 lwall
''' patch2: made some line breaks depend on troff vs. nroff
'''
@@ -288,6 +292,9 @@ If LIST is also omitted, prints $_ to
To set the default output channel to something other than
.I STDOUT
use the select operation.
+Note that, because print takes a LIST, anything in the LIST is evaluated
+in an array context, and any subroutine that you call will have one or more
+of its expressions evaluated in an array context.
.Ip "printf(FILEHANDLE LIST)" 8 10
.Ip "printf(LIST)" 8
.Ip "printf FILEHANDLE LIST" 8
@@ -699,7 +706,7 @@ For example:
.fi
produces the output \*(L'h:i:t:h:e:r:e\*(R'.
-.P
+.Sp
The NUM parameter can be used to partially split a line
.nf
diff --git a/perl.man.4 b/perl.man.4
index 5d3b8c91bd..5f768aa9e8 100644
--- a/perl.man.4
+++ b/perl.man.4
@@ -1,7 +1,11 @@
''' Beginning of part 4
-''' $Header: perl.man.4,v 3.0.1.2 89/11/11 04:46:40 lwall Locked $
+''' $Header: perl.man.4,v 3.0.1.3 89/11/17 15:32:25 lwall Locked $
'''
''' $Log: perl.man.4,v $
+''' Revision 3.0.1.3 89/11/17 15:32:25 lwall
+''' patch5: fixed some manual typos and indent problems
+''' patch5: clarified difference between $! and $@
+'''
''' Revision 3.0.1.2 89/11/11 04:46:40 lwall
''' patch2: made some line breaks depend on troff vs. nroff
''' patch2: clarified operation of ^ and $ when $* is false
@@ -49,22 +53,22 @@ be of highest precedence, just like a normal function call.
Examples:
.nf
- chdir $foo || die; # (chdir $foo) || die
- chdir($foo) || die; # (chdir $foo) || die
- chdir ($foo) || die; # (chdir $foo) || die
- chdir +($foo) || die; # (chdir $foo) || die
+ chdir $foo || die;\h'|3i'# (chdir $foo) || die
+ chdir($foo) || die;\h'|3i'# (chdir $foo) || die
+ chdir ($foo) || die;\h'|3i'# (chdir $foo) || die
+ chdir +($foo) || die;\h'|3i'# (chdir $foo) || die
but, because * is higher precedence than ||:
- chdir $foo * 20; # chdir ($foo * 20)
- chdir($foo) * 20; # (chdir $foo) * 20
- chdir ($foo) * 20; # (chdir $foo) * 20
- chdir +($foo) * 20; # chdir ($foo * 20)
+ chdir $foo * 20;\h'|3i'# chdir ($foo * 20)
+ chdir($foo) * 20;\h'|3i'# (chdir $foo) * 20
+ chdir ($foo) * 20;\h'|3i'# (chdir $foo) * 20
+ chdir +($foo) * 20;\h'|3i'# chdir ($foo * 20)
- rand 10 * 20; # rand (10 * 20)
- rand(10) * 20; # (rand 10) * 20
- rand (10) * 20; # (rand 10) * 20
- rand +(10) * 20; # rand (10 * 20)
+ rand 10 * 20;\h'|3i'# rand (10 * 20)
+ rand(10) * 20;\h'|3i'# (rand 10) * 20
+ rand (10) * 20;\h'|3i'# (rand 10) * 20
+ rand +(10) * 20;\h'|3i'# rand (10 * 20)
.fi
In the absence of parentheses,
@@ -801,14 +805,18 @@ important.)
.Ip $! 8 2
If used in a numeric context, yields the current value of errno, with all the
usual caveats.
+(This means that you shouldn't depend on the value of $! to be anything
+in particular unless you've gotten a specific error return indicating a
+system error.)
If used in a string context, yields the corresponding system error string.
You can assign to $! in order to set errno
if, for instance, you want $! to return the string for error n, or you want
to set the exit value for the die operator.
(Mnemonic: What just went bang?)
.Ip $@ 8 2
-The error message from the last eval command.
-If null, the last eval parsed and executed correctly.
+The perl syntax error message from the last eval command.
+If null, the last eval parsed and executed correctly (although the operations
+you invoked may have failed in the normal fashion).
(Mnemonic: Where was the syntax error \*(L"at\*(R"?)
.Ip $< 8 2
The real uid of this process.
@@ -1041,14 +1049,14 @@ Just outdent it a little to make it more visible:
Don't be afraid to use loop labels\*(--they're there to enhance readability as
well as to allow multi-level loop breaks.
See last example.
-.Ip 6. 4 4
+.Ip 4. 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 identifiers.
.Ip 5. 4 4
+Choose mnemonic identifiers.
+.Ip 6. 4 4
Be consistent.
.Sh "Debugging"
If you invoke
diff --git a/perly.c b/perly.c
index 645ac3dcdb..db62100630 100644
--- a/perly.c
+++ b/perly.c
@@ -1,4 +1,4 @@
-char rcsid[] = "$Header: perly.c,v 3.0.1.1 89/11/11 04:50:04 lwall Locked $\nPatch level: ###\n";
+char rcsid[] = "$Header: perly.c,v 3.0.1.2 89/11/17 15:34:42 lwall Locked $\nPatch level: ###\n";
/*
* Copyright (c) 1989, Larry Wall
*
@@ -6,6 +6,9 @@ char rcsid[] = "$Header: perly.c,v 3.0.1.1 89/11/11 04:50:04 lwall Locked $\nPat
* as specified in the README file that comes with the perl 3.0 kit.
*
* $Log: perly.c,v $
+ * Revision 3.0.1.2 89/11/17 15:34:42 lwall
+ * patch5: fixed possible confusion about current effective gid
+ *
* Revision 3.0.1.1 89/11/11 04:50:04 lwall
* patch2: moved yydebug to where its type didn't matter
*
@@ -426,7 +429,7 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
fatal("Can't do setuid\n");
}
- if (statbuf.st_mode & S_ISGID && statbuf.st_gid != getegid())
+ if (statbuf.st_mode & S_ISGID && statbuf.st_gid != egid)
#ifdef SETEGID
(void)setegid(statbuf.st_gid);
#else
@@ -458,7 +461,10 @@ FIX YOUR KERNEL, PUT A C WRAPPER AROUND THIS SCRIPT, OR USE -u AND UNDUMP!\n");
setuid((UIDTYPE)uid);
#endif
#endif
+ uid = (int)getuid();
euid = (int)geteuid();
+ gid = (int)getgid();
+ egid = (int)getegid();
if (!cando(S_IEXEC,TRUE,&statbuf))
fatal("Permission denied\n"); /* they can't do this */
}
diff --git a/stab.c b/stab.c
index d1f3571bd6..5b06198fbc 100644
--- a/stab.c
+++ b/stab.c
@@ -1,4 +1,4 @@
-/* $Header: stab.c,v 3.0.1.1 89/11/11 04:55:07 lwall Locked $
+/* $Header: stab.c,v 3.0.1.2 89/11/17 15:35: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: stab.c,v $
+ * Revision 3.0.1.2 89/11/17 15:35:37 lwall
+ * patch5: sighandler() needed to be static
+ *
* Revision 3.0.1.1 89/11/11 04:55:07 lwall
* patch2: sys_errlist[sys_nerr] is illegal
*
@@ -19,8 +22,6 @@
#include <signal.h>
-/* This oughta be generated by Configure. */
-
static char *sig_name[] = {
SIG_NAME,0
};
@@ -188,7 +189,7 @@ STR *str;
STAB *stab = mstr->str_u.str_stab;
char *s;
int i;
- int sighandler();
+ static int sighandler();
switch (mstr->str_rare) {
case 'E':
@@ -421,6 +422,7 @@ char *sig;
return 0;
}
+static int
sighandler(sig)
int sig;
{
diff --git a/str.c b/str.c
index ee76096f06..06d185e479 100644
--- a/str.c
+++ b/str.c
@@ -1,4 +1,4 @@
-/* $Header: str.c,v 3.0.1.2 89/11/11 04:56:22 lwall Locked $
+/* $Header: str.c,v 3.0.1.3 89/11/17 15:38:23 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.3 89/11/17 15:38:23 lwall
+ * patch5: some machines typedef unchar too
+ * patch5: substitution on leading components occasionally caused <> corruption
+ *
* Revision 3.0.1.2 89/11/11 04:56:22 lwall
* patch2: uchar gives Crays fits
*
@@ -666,6 +670,7 @@ int append;
bpx = bp - str->str_ptr; /* prepare for possible relocation */
if (get_paragraph && oldbp)
obpx = oldbp - str->str_ptr;
+ str->str_cur = bpx;
STR_GROW(str, bpx + cnt + 2);
bp = str->str_ptr + bpx; /* reconstitute our pointer */
if (get_paragraph && oldbp)
@@ -843,7 +848,7 @@ STR *src;
else if (*d == '[' && s[-1] == ']') { /* char class? */
int weight = 2; /* let's weigh the evidence */
char seen[256];
- unsigned char unchar = 0, lastunchar;
+ unsigned char un_char = 0, last_un_char;
Zero(seen,256,char);
*--s = '\0';
@@ -860,12 +865,12 @@ STR *src;
weight -= 100;
}
for (d++; d < s; d++) {
- lastunchar = unchar;
- unchar = (unsigned char)*d;
+ last_un_char = un_char;
+ un_char = (unsigned char)*d;
switch (*d) {
case '&':
case '$':
- weight -= seen[unchar] * 10;
+ weight -= seen[un_char] * 10;
if (isalpha(d[1]) || isdigit(d[1]) ||
d[1] == '_') {
d = scanreg(d,s,tokenbuf);
@@ -883,7 +888,7 @@ STR *src;
}
break;
case '\\':
- unchar = 254;
+ un_char = 254;
if (d[1]) {
if (index("wds",d[1]))
weight += 100;
@@ -901,8 +906,8 @@ STR *src;
weight += 100;
break;
case '-':
- if (lastunchar < d[1] || d[1] == '\\') {
- if (index("aA01! ",lastunchar))
+ if (last_un_char < d[1] || d[1] == '\\') {
+ if (index("aA01! ",last_un_char))
weight += 30;
if (index("zZ79~",d[1]))
weight += 30;
@@ -916,12 +921,12 @@ STR *src;
weight -= 150;
d = bufptr;
}
- if (unchar == lastunchar + 1)
+ if (un_char == last_un_char + 1)
weight += 5;
- weight -= seen[unchar];
+ weight -= seen[un_char];
break;
}
- seen[unchar]++;
+ seen[un_char]++;
}
#ifdef DEBUGGING
if (debug & 512)
diff --git a/toke.c b/toke.c
index 1d9474e5cb..e295a87b59 100644
--- a/toke.c
+++ b/toke.c
@@ -1,4 +1,4 @@
-/* $Header: toke.c,v 3.0.1.2 89/11/11 05:04:42 lwall Locked $
+/* $Header: toke.c,v 3.0.1.3 89/11/17 15:43:15 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: toke.c,v $
+ * Revision 3.0.1.3 89/11/17 15:43:15 lwall
+ * patch5: IBM PC/RT compiler can't deal with UNI() and LOP() macros
+ * patch5: } misadjusted expection of subsequent term or operator
+ * patch5: y/abcde// didn't work
+ *
* Revision 3.0.1.2 89/11/11 05:04:42 lwall
* patch2: fixed a CLINE macro conflict
*
@@ -78,6 +83,52 @@ register char *s;
return s;
}
+#ifdef CRIPPLED_CC
+
+#undef UNI
+#undef LOP
+#define UNI(f) return uni(f,s)
+#define LOP(f) return lop(f,s)
+
+int
+uni(f,s)
+int f;
+char *s;
+{
+ yylval.ival = f;
+ expectterm = TRUE;
+ bufptr = s;
+ if (*s == '(')
+ return FUNC1;
+ s = skipspace(s);
+ if (*s == '(')
+ return FUNC1;
+ else
+ return UNIOP;
+}
+
+int
+lop(f,s)
+int f;
+char *s;
+{
+ if (*s != '(')
+ s = skipspace(s);
+ if (*s == '(') {
+ *s = META('(');
+ bufptr = oldbufptr;
+ return '(';
+ }
+ else {
+ yylval.ival=f;
+ expectterm = TRUE;
+ bufptr = s;
+ return LISTOP;
+ }
+}
+
+#endif /* CRIPPLED_CC */
+
yylex()
{
register char *s = bufptr;
@@ -309,11 +360,7 @@ yylex()
TERM(tmp);
case '}':
tmp = *s++;
- for (d = s; *d == ' ' || *d == '\t'; d++) ;
- if (*d == '\n' || *d == '#')
- OPERATOR(tmp); /* block end */
- else
- TERM(tmp); /* associative array end */
+ RETURN(tmp);
case '&':
s++;
tmp = *s++;
@@ -1547,7 +1594,7 @@ register char *s;
yylval.arg = arg;
if (!*r) {
Safefree(r);
- r = t;
+ r = t; rlen = tlen;
}
for (i = 0, j = 0; i < tlen; i++,j++) {
if (j >= rlen)
diff --git a/util.c b/util.c
index e267578ec6..d49978ec83 100644
--- a/util.c
+++ b/util.c
@@ -1,4 +1,4 @@
-/* $Header: util.c,v 3.0.1.1 89/11/11 05:06:13 lwall Locked $
+/* $Header: util.c,v 3.0.1.2 89/11/17 15:46:35 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: util.c,v $
+ * Revision 3.0.1.2 89/11/17 15:46:35 lwall
+ * patch5: BZERO separate from BCOPY now
+ * patch5: byteorder now is a hex value
+ *
* Revision 3.0.1.1 89/11/11 05:06:13 lwall
* patch2: made dup2 a little better
*
@@ -911,8 +915,8 @@ char *f;
}
#endif
-#ifndef BCOPY
#ifndef MEMCPY
+#ifndef BCOPY
char *
bcopy(from,to,len)
register char *from;
@@ -925,7 +929,9 @@ register int len;
*to++ = *from++;
return retval;
}
+#endif
+#ifndef BZERO
char *
bzero(loc,len)
register char *loc;
@@ -979,7 +985,7 @@ char *pat, *args;
#endif /* VARARGS */
#ifdef MYSWAP
-#if BYTEORDER != 04321
+#if BYTEORDER != 0x4321
short
my_swap(s)
short s;
@@ -1000,24 +1006,24 @@ register long l;
{
union {
long result;
- char c[4];
+ char c[sizeof(long)];
} u;
-#if BYTEORDER == 01234
+#if BYTEORDER == 0x1234
u.c[0] = (l >> 24) & 255;
u.c[1] = (l >> 16) & 255;
u.c[2] = (l >> 8) & 255;
u.c[3] = l & 255;
return u.result;
#else
-#if ((BYTEORDER - 01111) & 0444) || !(BYTEORDER & 7)
+#if ((BYTEORDER - 0x1111) & 0x444) || !(BYTEORDER & 0xf)
fatal("Unknown BYTEORDER\n");
#else
register int o;
register int s;
- for (o = BYTEORDER - 01111, s = 0; s < 32; o >>= 3, s += 8) {
- u.c[o & 7] = (l >> s) & 255;
+ for (o = BYTEORDER - 0x1111, s = 0; s < (sizeof(long)*8); o >>= 4, s += 8) {
+ u.c[o & 0xf] = (l >> s) & 255;
}
return u.result;
#endif
@@ -1030,17 +1036,17 @@ register long l;
{
union {
long l;
- char c[4];
+ char c[sizeof(long)];
} u;
-#if BYTEORDER == 01234
+#if BYTEORDER == 0x1234
u.c[0] = (l >> 24) & 255;
u.c[1] = (l >> 16) & 255;
u.c[2] = (l >> 8) & 255;
u.c[3] = l & 255;
return u.l;
#else
-#if ((BYTEORDER - 01111) & 0444) || !(BYTEORDER & 7)
+#if ((BYTEORDER - 0x1111) & 0x444) || !(BYTEORDER & 0xf)
fatal("Unknown BYTEORDER\n");
#else
register int o;
@@ -1048,15 +1054,15 @@ register long l;
u.l = l;
l = 0;
- for (o = BYTEORDER - 01111, s = 0; s < 32; o >>= 3, s += 8) {
- l |= (u.c[o & 7] & 255) << s;
+ for (o = BYTEORDER - 0x1111, s = 0; s < (sizeof(long)*8); o >>= 4, s += 8) {
+ l |= (u.c[o & 0xf] & 255) << s;
}
return l;
#endif
#endif
}
-#endif /* BYTEORDER != 04321 */
+#endif /* BYTEORDER != 0x4321 */
#endif /* HTONS */
FILE *
diff --git a/util.h b/util.h
index 85862eb59b..7a14bcb656 100644
--- a/util.h
+++ b/util.h
@@ -1,4 +1,4 @@
-/* $Header: util.h,v 3.0.1.1 89/10/26 23:28:25 lwall Locked $
+/* $Header: util.h,v 3.0.1.2 89/11/17 15:48:01 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.2 89/11/17 15:48:01 lwall
+ * patch5: BZERO separate from BCOPY now
+ *
* Revision 3.0.1.1 89/10/26 23:28:25 lwall
* patch1: declared bcopy if necessary
*
@@ -33,8 +36,11 @@ char *rninstr();
char *nsavestr();
FILE *mypopen();
int mypclose();
-#ifndef BCOPY
#ifndef MEMCPY
+#ifndef BCOPY
char *bcopy();
#endif
+#ifndef BZERO
+char *bzero();
+#endif
#endif
diff --git a/x2p/s2p.SH b/x2p/s2p.SH
index e428d41910..fc85209d34 100644
--- a/x2p/s2p.SH
+++ b/x2p/s2p.SH
@@ -28,9 +28,13 @@ $spitshell >s2p <<!GROK!THIS!
: In the following dollars and backticks do not need the extra backslash.
$spitshell >>s2p <<'!NO!SUBS!'
-# $Header: s2p.SH,v 3.0.1.1 89/11/11 05:08:25 lwall Locked $
+# $Header: s2p.SH,v 3.0.1.2 89/11/17 15:51:27 lwall Locked $
#
# $Log: s2p.SH,v $
+# Revision 3.0.1.2 89/11/17 15:51:27 lwall
+# patch5: in s2p, line labels without a subsequent statement were done wrong
+# patch5: s2p left residue in /tmp
+#
# Revision 3.0.1.1 89/11/11 05:08:25 lwall
# patch2: in s2p, + within patterns needed backslashing
# patch2: s2p was printing out some debugging info to the output file
@@ -109,7 +113,11 @@ line: while (<>) {
$toplabel = $label;
}
$_ = "$label:";
- if ($lastlinewaslabel++) {$_ .= "\t;";}
+ if ($lastlinewaslabel++) {
+ $indent += 4;
+ print body "\t" x ($indent / 8), ' ' x ($indent % 8), ";\n";
+ $indent -= 4;
+ }
if ($indent >= 2) {
$indent -= 2;
$indmod = 2;
@@ -198,6 +206,11 @@ line: while (<>) {
redo line;
}
}
+if ($lastlinewaslabel++) {
+ $indent += 4;
+ print body "\t" x ($indent / 8), ' ' x ($indent % 8), ";\n";
+ $indent -= 4;
+}
print body "}\n";
if ($appendseen || $tseen || !$assumen) {
@@ -259,10 +272,10 @@ eval \"exec $bin/perl -S \$0 \$*\"
}
}
-unlink "/tmp/sperl$$", "/tmp/sperl2$$";
+unlink "/tmp/sperl$$", "/tmp/sperl2$$", "/tmp/sperl2$$.c";
sub Die {
- unlink "/tmp/sperl$$", "/tmp/sperl2$$";
+ unlink "/tmp/sperl$$", "/tmp/sperl2$$", "/tmp/sperl2$$.c";
die $_[0];
}
sub make_filehandle {
diff --git a/x2p/walk.c b/x2p/walk.c
index d0ea34112c..62b64a4a86 100644
--- a/x2p/walk.c
+++ b/x2p/walk.c
@@ -1,4 +1,4 @@
-/* $Header: walk.c,v 3.0.1.1 89/11/11 05:09:33 lwall Locked $
+/* $Header: walk.c,v 3.0.1.2 89/11/17 15:53:00 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: walk.c,v $
+ * Revision 3.0.1.2 89/11/17 15:53:00 lwall
+ * patch5: on Pyramids, index(s, '}' + 128) doesn't find meta-}
+ *
* Revision 3.0.1.1 89/11/11 05:09:33 lwall
* patch2: in a2p, awk script with no line actions still needs main loop
*
@@ -1419,10 +1422,12 @@ sub Pick {\n\
if (!s)
fatal("Illegal for loop: %s",d);
*s++ = '\0';
- t = index(s,'}' + 128);
- if (!t)
- t = index(s,']' + 128);
- if (t)
+ for (t = s; i = *t; t++) {
+ i &= 127;
+ if (i == '}' || i == ']')
+ break;
+ }
+ if (*t)
*t = '\0';
str = str_new(0);
str_set(str,d+1);