From: Jim Meyering <jim@meyering.net>
To: Jeff King <peff@peff.net>
Cc: Alex Riesen <raa.lkml@gmail.com>, git list <git@vger.kernel.org>
Subject: Re: [PATCH] pre-commit.sample: don't use [...] around a tr range
Date: Mon, 21 Sep 2009 16:10:21 +0200 [thread overview]
Message-ID: <87tyywgzhu.fsf@meyering.net> (raw)
In-Reply-To: <20090921134427.GA20567@sigio.peff.net> (Jeff King's message of "Mon, 21 Sep 2009 09:44:27 -0400")
Jeff King wrote:
> On Mon, Sep 21, 2009 at 01:00:34PM +0200, Jim Meyering wrote:
>
>> > We have (had?) people trying to support Git on HP-UX and SunOS.
>> > Do these count?
>>
>> I had my doubts, but have just confirmed that Solaris 10's
>> /usr/bin/tr is still doing it the SYSV way:
>>
>> $ echo foo | LC_ALL=C /usr/bin/tr a-z A-Z
>> foo
>>
>> There, you have to use /usr/xpg4/bin/tr to get the expected behavior:
>>
>> $ echo foo | LC_ALL=C /usr/xpg4/bin/tr a-z A-Z
>> FOO
>>
>> So you're right. Thanks!
>
> See:
>
> http://article.gmane.org/gmane.comp.version-control.git/76991
>
>> + # Note that the use of brackets around a tr range is ok here, (it's
>> + # even required, for portability to Solaris 10's /usr/bin/tr), since
>> + # the square bracket bytes happen to fall in the designated range.
>> test "$(git diff --cached --name-only --diff-filter=A -z |
>> LC_ALL=C tr -d '[ -~]\0')"
>
> Does this work on non-bracket systems?
Yes, since [] happen to fall in the range.
> I would think that enumerating
> the sequence would be the most portable thing.
Enumerating is more portable, at the expense of
readability and maintainability.
In case you want to go that route, here's one more:
(note that this, like the original range, treats TAB as nonportable)
>From 40a368a7bcf0ac6524bbe36ba3bfdaa0711897b8 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering@redhat.com>
Date: Mon, 21 Sep 2009 10:58:02 +0200
Subject: [PATCH] pre-commit.sample: use tr more portability; fix grammar
Avoid tr's M-N range notation altogether.
Instead, enumerate ascii bytes 32..126.
Correct spelling and grammar.
Signed-off-by: Jim Meyering <meyering@redhat.com>
---
templates/hooks--pre-commit.sample | 19 +++++++++++++------
1 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/templates/hooks--pre-commit.sample b/templates/hooks--pre-commit.sample
index b11ad6a..896eb9e 100755
--- a/templates/hooks--pre-commit.sample
+++ b/templates/hooks--pre-commit.sample
@@ -10,19 +10,26 @@
# If you want to allow non-ascii filenames set this variable to true.
allownonascii=$(git config hooks.allownonascii)
+printables=' !"#$%&'\''()*+,-./0123456789:;<=>?@'
+printables="$printables"'ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`'
+printables="$printables"'abcdefghijklmnopqrstuvwxyz{|}~'
+
# Cross platform projects tend to avoid non-ascii filenames; prevent
# them from being added to the repository. We exploit the fact that the
# printable range starts at the space character and ends with tilde.
if [ "$allownonascii" != "true" ] &&
- test "$(git diff --cached --name-only --diff-filter=A -z |
- LC_ALL=C tr -d '[ -~]\0')"
+ # Filter out printable ascii bytes, and NUL.
+ # If anything remains, you lose.
+ rem=$(git diff --cached --name-only --diff-filter=A -z |
+ LC_ALL=C tr -d "$printables"'\0')
+ test -n "$rem"
then
- echo "Error: Attempt to add a non-ascii filename."
+ echo "Error: Attempt to add a non-ascii file name."
echo
- echo "This can cause problems if you want to work together"
- echo "with people on other platforms than you."
+ echo "This can cause problems if you want to work"
+ echo "with people on other platforms."
echo
- echo "To be portable it is adviseable to rename the file ..."
+ echo "To be portable it is advisable to rename the file ..."
echo
echo "If you know what you are doing you can disable this"
echo "check using:"
--
1.6.5.rc1.214.g13c5a
next prev parent reply other threads:[~2009-09-21 14:10 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-21 9:09 [PATCH] pre-commit.sample: don't use [...] around a tr range Jim Meyering
2009-09-21 9:43 ` Alex Riesen
2009-09-21 11:00 ` Jim Meyering
2009-09-21 12:45 ` Alex Riesen
2009-09-21 13:44 ` Jeff King
2009-09-21 14:10 ` Jim Meyering [this message]
2009-09-21 14:21 ` Jeff King
2009-09-21 15:58 ` Brandon Casey
2009-09-24 5:55 ` Jeff King
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=87tyywgzhu.fsf@meyering.net \
--to=jim@meyering.net \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
--cc=raa.lkml@gmail.com \
/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 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.