From 378cc40b38293ffc7298c6a7ed3cd740ad79be52 Mon Sep 17 00:00:00 2001 From: Larry Wall Date: Sun, 5 Jun 1988 00:00:00 +0000 Subject: perl 2.0 (no announcement message available) Some of the enhancements from Perl1 included: * New regexp routines derived from Henry Spencer's. o Support for /(foo|bar)/. o Support for /(foo)*/ and /(foo)+/. o \s for whitespace, \S for non-, \d for digit, \D nondigit * Local variables in blocks, subroutines and evals. * Recursive subroutine calls are now supported. * Array values may now be interpolated into lists: unlink 'foo', 'bar', @trashcan, 'tmp'; * File globbing. * Use of <> in array contexts returns the whole file or glob list. * New iterator for normal arrays, foreach, that allows both read and write. * Ability to open pipe to a forked off script for secure pipes in setuid scripts. * File inclusion via do 'foo.pl'; * More file tests, including -t to see if, for instance, stdin is a terminal. File tests now behave in a more correct manner. You can do file tests on filehandles as well as filenames. The special filetests -T and -B test a file to see if it's text or binary. * An eof can now be used on each file of the <> input for such purposes as resetting the line numbers or appending to each file of an inplace edit. * Assignments can now function as lvalues, so you can say things like ($HOST = $host) =~ tr/a-z/A-Z/; ($obj = $src) =~ s/\.c$/.o/; * You can now do certain file operations with a variable which holds the name of a filehandle, e.g. open(++$incl,$includefilename); $foo = <$incl>; * Warnings are now available (with -w) on use of uninitialized variables and on identifiers that are mentioned only once, and on reference to various undefined things. * There is now a wait operator. * There is now a sort operator. * The manual is now not lying when it says that perl is generally faster than sed. I hope. --- x2p/str.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'x2p/str.c') diff --git a/x2p/str.c b/x2p/str.c index 5de045a3be..6aae90d484 100644 --- a/x2p/str.c +++ b/x2p/str.c @@ -1,8 +1,8 @@ -/* $Header: str.c,v 1.0 87/12/18 13:07:26 root Exp $ +/* $Header: str.c,v 2.0 88/06/05 00:16:02 root Exp $ * * $Log: str.c,v $ - * Revision 1.0 87/12/18 13:07:26 root - * Initial revision + * Revision 2.0 88/06/05 00:16:02 root + * Baseline version 2.0. * */ @@ -281,7 +281,7 @@ register FILE *fp; register char *bp; /* we're going to steal some values */ register int cnt; /* from the stdio struct and put EVERYTHING */ - register char *ptr; /* in the innermost loop into registers */ + register STDCHAR *ptr; /* in the innermost loop into registers */ register char newline = '\n'; /* (assuming at least 6 registers) */ int i; int bpx; @@ -294,9 +294,14 @@ register FILE *fp; bp = str->str_ptr; /* move these two too to registers */ ptr = fp->_ptr; for (;;) { - while (--cnt >= 0) { /* this */ /* eat */ - if ((*bp++ = *ptr++) == newline) /* really */ /* dust */ - goto thats_all_folks; /* screams */ /* sed :-) */ + while (--cnt >= 0) { + if ((*bp++ = *ptr++) == newline) + if (bp <= str->str_ptr || bp[-2] != '\\') + goto thats_all_folks; + else { + line++; + bp -= 2; + } } fp->_cnt = cnt; /* deregisterize cnt and ptr */ -- cgit v1.2.1