Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Jun 1996 22:23:59 GMT
From:      James Raynard <fhackers@jraynard.demon.co.uk>
To:        mark@linus.demon.co.uk
Cc:        hackers@FreeBSD.ORG
Subject:   Re: small sed bugfix (PR#908)
Message-ID:  <199606152223.WAA13002@jraynard.demon.co.uk>
In-Reply-To: <199606120112.CAA07808@linus.demon.co.uk> (mark@linus.demon.co.uk)

next in thread | previous in thread | raw e-mail | index | archive | help
> Can I tempt anyone to review and/or commit the tiny fix for an annoying
> sed bug which I submitted in December, with a view to having this or a
> similar fix in 2.1.5?  It doesn't seem to make the sed regressions tests
> any noisier than they already were...

Are there any sed gurus in the house who can comment on this? If not,
perhaps you might be better to advised to mail the author, who appears
to be

Diomidis Spinellis <dds@doc.ic.ac.uk>

Cheers
James

> I'm appending a copy of <http://www.freebsd.org/cgi-bin/query-pr.cgi?pr=908>.
> 
> 		Cheers,
> 
> 		Mark.
> 
> -- 8< -------------------------------------------------------------------------
> 
> Problem Report bin/908
> 
> sed bug with trailing backslashes
> 
> Confidential
>       no 
> Severity
>       serious 
> Priority
>       medium 
> Responsible
>       freebsd-bugs@freebsd.org 
> State
>       open 
> Class
>       sw-bug 
> Submitter-Id
>       current-users 
> Arrival-Date
>       Thu Dec 21 17:00:01 PST 1995 
> Last-Modified
>       Wed Dec 27 23:30:01 PST 1995 
> Originator
>       Mark Valentine 
> Organization
> Release
>       FreeBSD 2.2-CURRENT i386 
> Environment
> 
>               n/a
> 
> 
> Description
> 
>               Sed misinterprets the pair of backslashes at the end of line 2 of
>               the following script, resulting in line 3 being taken as part of
>               the inserted text.
> 
>                   1i\
>                   char foo[] = "\\
>                   s/$/\\n\\/
>                   $a\
>                   ";
> 
>               GNU sed and SunOS 4.1.3 sed insert a single line ending with a
>               backslash, and treat line three as a substition command.
> 
> 
> How-To-Repeat
> 
>               $ echo test | sed -f 
>               char foo[] = "\
>               s/$/\n\/
>               test
>               ";
> 
>               $ echo test | /usr/gnu/bin/sed -f 
>               char foo[] = "\
>               test\n\
>               ";
> 
> 
> Fix
> Audit-Trail
> 
>       From: mark@linus.demon.co.uk (Mark Valentine)
>       To: FreeBSD-gnats-submit@FreeBSD.ORG
>       Cc:  Subject: Re: bin/908: sed bug with trailing backslashes
>       Date: Thu, 28 Dec 1995 07:19:57 +0000
> 
>        > From: Mark Valentine 
>        > Date: Thu 21 Dec, 1995
>        > Subject: bin/908: sed bug with trailing backslashes
>        
>        > >Description:
>        > 
>        >      Sed misinterprets the pair of backslashes at the end of line 2 of
>        >      the following script, resulting in line 3 being taken as part of
>        >      the inserted text.
>        > 
>        >          1i\
>        >          char foo[] = "\\
>        >          s/$/\\n\\/
>        >          $a\
>        >          ";
>        
>        This small patch to usr.bin/sed/compile.c seems to fix it.  It replaces
>        escaping backslashes in the input buffer with NULs, and uses those to
>        determine whether the newline was escaped, rather than looking for a
>        (possibly escaped) preceding backslash.
>        
>        --- compile.c.dist     Wed Aug 16 21:21:55 1995
>        +++ compile.c  Thu Dec 28 06:32:03 1995
>        @@ -628,11 +628,11 @@
>                       EATSPACE();
>                       for (; *p; p++) {
>                               if (*p == '\\')
>        -                              p++;
>        +                              *p++ = '\0';
>                               *s++ = *p;
>                       }
>                       size += s - op;
>        -              if (p[-2] != '\\') {
>        +              if (p[-2] != '\0') {
>                               *s = '\0';
>                               break;
>                       }
>        
>        This patch doesn't seem to break any of the regression tests.
>        
>                       Mark.
> 
> Unformatted
> 
> -- 8< -------------------------------------------------------------------------
> 
> -- 
> Mark Valentine at Home <mailto:mv@pobox.com> <http://www.pobox.com/~mv/>;
> 

> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199606152223.WAA13002>