From: Nguyen Thai Ngoc Duy <pclouds@gmail.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>, git@vger.kernel.org
Subject: Re: shell compatibility issues with SunOS 5.10
Date: Thu, 7 May 2009 09:07:00 +1000 [thread overview]
Message-ID: <fcaeb9bf0905061607n51457fa3x3a198c61911d0228@mail.gmail.com> (raw)
In-Reply-To: <alpine.DEB.1.00.0905061137300.14230@intel-tinevez-2-302>
On Wed, May 6, 2009 at 7:38 PM, Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Wed, 6 May 2009, Ralf Wildenhues wrote:
>
>> Nguyen Thai Ngoc Duy writes:
>> > On Wed, May 6, 2009 at 4:45 PM, Johannes Sixt wrote:
>> > > Nguyen Thai Ngoc Duy schrieb:
>> > >> # normalize path:
>> > >> # multiple //; leading ./; /./; /../; trailing /
>> > >> path=$(printf '%s/\n' "$path" |
>> > >> sed -e '
>> > >> s|//*|/|g
>> > >> s|^\(\./\)*||
>> > >> s|/\./|/|g
>> > >> :start
>> > >> s|\([^/]*\)/\.\./||
>> > >> tstart
>> > >> s|/*$||
>> > >> ')
>>
>> > It says nothing. The result of "printf '%s\n' ./foo/bar | sed -e blah"
>> > is just wrong, (i.e. "./" remains). I stripped down to "sed -e
>> > 's|^\(\./\)*||'", does not work. Probably due to \( \) pair. Skimmed
>> > through sed manpage, seems no mention of bracket grouping.
>>
>> Quoting 'info Autoconf "Limitation of Usual Tools"':
>>
>> Some `sed' implementations, e.g., Solaris, restrict the special
>> role of the asterisk to one-character regular expressions. This
>> may lead to unexpected behavior:
>>
>> $ echo '1*23*4' | /usr/bin/sed 's/\(.\)*/x/g'
>> x2x4
>> $ echo '1*23*4' | /usr/xpg4/bin/sed 's/\(.\)*/x/g'
>> x
>>
>> You can work around it in this case with
>> :again
>> s|^\./||
>> t again
>>
>> BTW, you should put a space between t and the label (but not between
>> : and label), POSIX requires that and some sed versions expect it.
>
> Maybe the time is better spent on turning submodule into a builtin, before
> it gets even larger, and before we have to jump through even more hoops
> because of shell compatibility issues?
Totally agree. git-submodule is the second largest shell script.
Better do it now or it will take git-rebase--interactive position as
the biggest one.
--
Duy
next prev parent reply other threads:[~2009-05-06 23:07 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-06 5:59 shell compatibility issues with SunOS 5.10 Nguyen Thai Ngoc Duy
2009-05-06 6:16 ` Junio C Hamano
2009-05-06 6:43 ` Nguyen Thai Ngoc Duy
2009-05-07 1:38 ` Nguyen Thai Ngoc Duy
2009-05-06 6:45 ` Johannes Sixt
2009-05-06 6:57 ` Nguyen Thai Ngoc Duy
2009-05-06 9:19 ` Ralf Wildenhues
2009-05-06 9:38 ` Johannes Schindelin
2009-05-06 23:07 ` Nguyen Thai Ngoc Duy [this message]
2009-05-06 13:07 ` Jeff King
2009-05-06 18:14 ` Brandon Casey
2009-05-06 18:29 ` [PATCH 0/4] workaround some Solaris sed issues Brandon Casey
2009-05-06 18:29 ` [PATCH 1/4] t4118: add missing '&&' Brandon Casey
2009-05-06 18:29 ` [PATCH 2/4] t4118: avoid sed invocation on file without terminating newline Brandon Casey
2009-05-06 18:29 ` [PATCH 3/4] t/annotate-tests.sh: avoid passing a non-newline terminated file to sed Brandon Casey
2009-05-06 18:29 ` [PATCH 4/4] t4200: " Brandon Casey
2009-05-06 18:48 ` Junio C Hamano
2009-05-06 21:12 ` Brandon Casey
2009-05-06 21:49 ` Junio C Hamano
2009-05-06 22:56 ` [PATCH 1/2] t4200: remove two unnecessary lines Brandon Casey
2009-05-06 22:56 ` [PATCH 2/2] t4200: convert sed expression which operates on non-text file to perl Brandon Casey
2009-05-06 23:24 ` Nguyen Thai Ngoc Duy
2009-05-07 1:49 ` [PATCH 4/4] t4200: avoid passing a non-newline terminated file to sed Nguyen Thai Ngoc Duy
2009-05-07 2:06 ` Brandon Casey
2009-05-07 2:29 ` Junio C Hamano
2009-05-07 7:26 ` Johannes Sixt
2009-05-07 14:57 ` Brandon Casey
2009-05-06 23:15 ` shell compatibility issues with SunOS 5.10 Nguyen Thai Ngoc Duy
2009-05-07 0:22 ` Brandon Casey
2009-05-07 1:14 ` Junio C Hamano
2009-05-07 2:23 ` Brandon Casey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fcaeb9bf0905061607n51457fa3x3a198c61911d0228@mail.gmail.com \
--to=pclouds@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=Ralf.Wildenhues@gmx.de \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).