summaryrefslogtreecommitdiff
path: root/doop.c
diff options
context:
space:
mode:
authorPerl 5 Porters <perl5-porters@africa.nicoh.com>1996-02-02 18:52:27 -0800
committerLarry Wall <lwall@sems.com>1996-02-02 18:52:27 -0800
commitc07a80fdfe3926b5eb0585b674aa5d1f57b32ade (patch)
tree6d56135571eb9ea6635748469bdaf72ad481247a /doop.c
parent91b7def858c29dac014df40946a128c06b3aa2ed (diff)
downloadperl-c07a80fdfe3926b5eb0585b674aa5d1f57b32ade.tar.gz
perl5.002beta3
[editor's note: no patch file was found for this release, so no fine-grained changes] I can't find the password for our ftp server, so I had to drop it into ftp://ftp.sems.com/pub/incoming/perl5.002b3.tar.gz, which is a drop directory you can't ls. The current plan is that Andy is gonna whack on this a little more, and then release a gamma in a few days when he's happy with it. So don't get carried away. This is now *late* beta. In other words, have less than the appropriate amount of fun. :-) Larry
Diffstat (limited to 'doop.c')
-rw-r--r--doop.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/doop.c b/doop.c
index 7f00f04907..c906db70d1 100644
--- a/doop.c
+++ b/doop.c
@@ -442,10 +442,13 @@ I32
do_chomp(sv)
register SV *sv;
{
- register I32 count = 0;
+ register I32 count;
STRLEN len;
char *s;
-
+
+ if (RsSNARF(rs))
+ return 0;
+ count = 0;
if (SvTYPE(sv) == SVt_PVAV) {
register I32 i;
I32 max;
@@ -472,7 +475,7 @@ register SV *sv;
s = SvPV_force(sv, len);
if (s && len) {
s += --len;
- if (rspara) {
+ if (RsPARA(rs)) {
if (*s != '\n')
goto nope;
++count;
@@ -482,21 +485,24 @@ register SV *sv;
++count;
}
}
- else if (rslen == 1) {
- if (*s != rschar)
- goto nope;
- ++count;
- }
else {
- if (len < rslen - 1)
- goto nope;
- len -= rslen - 1;
- s -= rslen - 1;
- if (bcmp(s, rs, rslen))
- goto nope;
- count += rslen;
+ STRLEN rslen;
+ char *rsptr = SvPV(rs, rslen);
+ if (rslen == 1) {
+ if (*s != *rsptr)
+ goto nope;
+ ++count;
+ }
+ else {
+ if (len < rslen)
+ goto nope;
+ len -= rslen - 1;
+ s -= rslen - 1;
+ if (bcmp(s, rsptr, rslen))
+ goto nope;
+ count += rslen;
+ }
}
-
*s = '\0';
SvCUR_set(sv, len);
SvNIOK_off(sv);