git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3] t9001: avoid not portable '\n' with sed

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Jun 10, 2014, 05:03 UTC
Message-ID
<CAPig+cTeqjj6pstzvRh2z6CW8ksW5tpz41+RzpO=Aj2gYr7DAg@mail.gmail.com>
In-Reply-To
<5396849F.7060206@web.de>
On Tue, Jun 10, 2014 at 12:07 AM, Torsten Bögershausen <tboegi@web.de> wrote:
Show 15 quoted lines
> t9001 used a '\n' in a sed expression to split one line into two lines,
> but the usage of '\n' in the "replacement string" is not portable.
>
> The '\n' can be used to match a newline in the "pattern space",
> but otherwise the meaning of '\n' is unspecified in POSIX.
>
> - Gnu versions of sed will treat '\n' as a newline character.
> - Other versions of sed (like /usr/bin/sed under Mac OS X)
>   simply ignore the '\' before the 'n', treating '\n' as 'n'.
>
> For reference see:
> pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
> http://www.gnu.org/software/sed/manual/sed.html
>
> As the test already requires perl as a prerequisite, use perl instead of sed.

René Scharfe pointed out this useful resource [1] for writing portable 'sed' when he fixed [2] a problem on NetBSD in a test I had written.

[1]: http://sed.sourceforge.net/sedfaq4.html [2]: http://thread.gmane.org/gmane.comp.version-control.git/231654

Show 24 quoted lines
> Signed-off-by: Torsten Bögershausen <tboegi@web.de>
> ---
> Sending a V3 patch seems "spammish", but after re-reading all
> the comments I think that the commit msg should point out the difference
> between POSIX sed and gnu sed somewhat better.
>
>  t/t9001-send-email.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
> index 64d9434..19a3ced 100755
> --- a/t/t9001-send-email.sh
> +++ b/t/t9001-send-email.sh
> @@ -1342,7 +1342,7 @@ test_cover_addresses () {
>         git format-patch --cover-letter -2 -o outdir &&
>         cover=`echo outdir/0000-*.patch` &&
>         mv $cover cover-to-edit.patch &&
> -       sed "s/^From:/$header: extra@address.com\nFrom:/" cover-to-edit.patch >"$cover" &&
> +       perl -pe "s/^From:/$header: extra\@address.com\nFrom:/" cover-to-edit.patch >"$cover" &&
>         git send-email \
>           --force \
>           --from="Example <nobody@example.com>" \
> --
> 2.0.0.553.ged01b91
Previous: Torsten BögershausenNext: Junio C Hamano
Message 2 of 5 in “t9001: avoid not portable '\n' with sed”
  1. t9001: avoid not portable '\n' with sedTorsten Bögershausen, Jun 10, 2014
  2. Eric SunshineJun 10, 2014
  3. Junio C HamanoJun 10, 2014
  4. Torsten BögershausenJun 10, 2014
  5. Junio C HamanoJun 10, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.