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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox