bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bug-gnulib] gnulib-tool: unterminated substitute pattern


From: Bruno Haible
Subject: Re: [bug-gnulib] gnulib-tool: unterminated substitute pattern
Date: Wed, 1 Nov 2006 14:16:16 +0100
User-agent: KMail/1.9.1

Roger Persson wrote:
> I get a strange sed warning/error of "unterminated substitute pattern"
> while using gnulib-tool. I'm building bison and the bootstrapping
> process uses gnulib-tool. ...
> 
> I tracked down the failure to a regular expression in
> "func_get_automake_snippet"  in gnulib-tool:906. This is the
> expression.
> 
>       # Synthesize an EXTRA_DIST augmentation.
>       sed_combine_lines='/\\$/{
>        :a
>         N
>         s/\\\
> //
>         s/\\$/\\/
>         ta
>       }'
> 
> I can't say if this is an illegal regular expression, but changing it
> to the expression below removes the problem. Be aware of my limited
> experience with this.
> 
>       sed_combine_lines='/\\$/{
>        :a
>         N
>         s/\\[\n]//
>         s/\\$/\\/
>         ta
>       }'

Thanks for analyzing and reporting this. Indeed the current regular expression
is invalid according to POSIX, since it says in
  
http://www.opengroup.org/onlinepubs/009695399/utilities/sed.html#tag_04_126_13_02
  "The escape sequence '\n' shall match a <newline> embedded in the pattern
   space. A literal <newline> shall not be used in the BRE of a context address
   or in the substitute function."

I'm applying this:


2006-11-01  Bruno Haible  <address@hidden>

        * gnulib-tool (func_get_automake_snippet): Change sed_combine_lines to
        be POSIX compliant.
        Reported by Roger Persson <address@hidden>.

*** gnulib-tool 23 Oct 2006 11:25:20 -0000      1.184
--- gnulib-tool 1 Nov 2006 13:14:05 -0000
***************
*** 916,923 ****
        sed_combine_lines='/\\$/{
          :a
          N
!         s/\\\
! //
          s/\\$/\\/
          ta
        }'
--- 916,922 ----
        sed_combine_lines='/\\$/{
          :a
          N
!         s/\\\n//
          s/\\$/\\/
          ta
        }'




reply via email to

[Prev in Thread] Current Thread [Next in Thread]