All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] t9001: avoid not portable '\n' with sed
@ 2014-06-10  4:07 Torsten Bögershausen
  2014-06-10  5:03 ` Eric Sunshine
  2014-06-10  5:55 ` Junio C Hamano
  0 siblings, 2 replies; 5+ messages in thread
From: Torsten Bögershausen @ 2014-06-10  4:07 UTC (permalink / raw)
  To: git; +Cc: tboegi

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.

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

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] t9001: avoid not portable '\n' with sed
  2014-06-10  4:07 [PATCH v3] t9001: avoid not portable '\n' with sed Torsten Bögershausen
@ 2014-06-10  5:03 ` Eric Sunshine
  2014-06-10  5:55 ` Junio C Hamano
  1 sibling, 0 replies; 5+ messages in thread
From: Eric Sunshine @ 2014-06-10  5:03 UTC (permalink / raw)
  To: Torsten Bögershausen; +Cc: Git List

On Tue, Jun 10, 2014 at 12:07 AM, Torsten Bögershausen <tboegi@web.de> wrote:
> 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

> 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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] t9001: avoid not portable '\n' with sed
  2014-06-10  4:07 [PATCH v3] t9001: avoid not portable '\n' with sed Torsten Bögershausen
  2014-06-10  5:03 ` Eric Sunshine
@ 2014-06-10  5:55 ` Junio C Hamano
  2014-06-10  6:30   ` Torsten Bögershausen
  1 sibling, 1 reply; 5+ messages in thread
From: Junio C Hamano @ 2014-06-10  5:55 UTC (permalink / raw)
  To: Torsten Bögershausen; +Cc: git

Torsten Bögershausen <tboegi@web.de> writes:

> 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.

This looks peculiarly familiar; don't I already have it queued?

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] t9001: avoid not portable '\n' with sed
  2014-06-10  5:55 ` Junio C Hamano
@ 2014-06-10  6:30   ` Torsten Bögershausen
  2014-06-10 15:38     ` Junio C Hamano
  0 siblings, 1 reply; 5+ messages in thread
From: Torsten Bögershausen @ 2014-06-10  6:30 UTC (permalink / raw)
  To: Junio C Hamano, Torsten Bögershausen; +Cc: git

On 06/10/2014 07:55 AM, Junio C Hamano wrote:
> Torsten Bögershausen <tboegi@web.de> writes:
>
>> 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.
> This looks peculiarly familiar; don't I already have it queued?
Yes, V2 is queued and in pu,and only the commit msg is changed
between V2 and V3.

I think that V3 explains the difference between POSIX sed and
gnu sed much better, and does reflect all the comments from
the list, which otherwise may be lost.
And I suspect that not only the sed under Mac OS X does not
handle this very '\n' different from gnu sed, or in other words,
more platforms may not have a gnu sed and may need the fix.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3] t9001: avoid not portable '\n' with sed
  2014-06-10  6:30   ` Torsten Bögershausen
@ 2014-06-10 15:38     ` Junio C Hamano
  0 siblings, 0 replies; 5+ messages in thread
From: Junio C Hamano @ 2014-06-10 15:38 UTC (permalink / raw)
  To: Torsten Bögershausen; +Cc: git

Torsten Bögershausen <tboegi@web.de> writes:

> I think that V3 explains the difference between POSIX sed and
> gnu sed much better, and does reflect all the comments from
> the list, which otherwise may be lost.

Too late for that as the patch is already in 'next' X-<.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-06-10 15:38 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-10  4:07 [PATCH v3] t9001: avoid not portable '\n' with sed Torsten Bögershausen
2014-06-10  5:03 ` Eric Sunshine
2014-06-10  5:55 ` Junio C Hamano
2014-06-10  6:30   ` Torsten Bögershausen
2014-06-10 15:38     ` Junio C Hamano

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.