Re: [PATCH v3] am: invoke perl's strftime in C locale

2013-01-19 Thread Dmitry V. Levin
On Fri, Jan 18, 2013 at 12:36:46PM -0800, Junio C Hamano wrote:
 Dmitry V. Levin l...@altlinux.org writes:
 
  This fixes hg patch format support for locales other than C and en_*.
  Before the change, git-am was making Date: line from hg changeset
  metadata according to the current locale, and this line was rejected
  later with invalid date format diagnostics because localized date
  strings are not supported.
 
  Reported-by: Gleb Fotengauer-Malinovskiy gle...@altlinux.org
  Signed-off-by: Dmitry V. Levin l...@altlinux.org
  ---
 
   v3: alternative implementation using setlocale(LC_TIME, C)
 
   git-am.sh | 3 ++-
   1 file changed, 2 insertions(+), 1 deletion(-)
 
  diff --git a/git-am.sh b/git-am.sh
  index c682d34..8677d8c 100755
  --- a/git-am.sh
  +++ b/git-am.sh
  @@ -334,7 +334,8 @@ split_patches () {
  # Since we cannot guarantee that the commit message is 
  in
  # git-friendly format, we put no Subject: line and just 
  consume
  # all of the message as the body
  -   perl -M'POSIX qw(strftime)' -ne 'BEGIN { $subject = 0 }
  +   perl -M'POSIX qw(strftime :locale_h)' -ne '
  +   BEGIN { setlocale(LC_TIME, C); $subject = 0 }
 
 I still haven't convinced myself that this is an improvement over
 the simple LC_ALL=C LANG=C perl ... approach.

Personally I prefer 2nd edition that is simpler and does the right thing
(not that LC_ALL=C is necessary and sufficient, you neither need to add
things like LANG=C nor can relax it to LC_TIME=C).


-- 
ldv


pgp3AH6oqBPnI.pgp
Description: PGP signature


Re: [PATCH] am: invoke perl's strftime in C locale

2013-01-15 Thread Dmitry V. Levin
On Tue, Jan 15, 2013 at 08:50:59AM -0800, Jeff King wrote:
 On Tue, Jan 15, 2013 at 05:42:12PM +0100, Antoine Pelisse wrote:
 
   This puts all of perl into the C locale, which would mean error messages
   from perl would be in English rather than the user's language. It
   probably isn't a big deal, because that snippet of perl is short and not
   likely to produce problems, but I wonder how hard it would be to set the
   locale just for the strftime call.
  
  Maybe just setting LC_TIME to C would do ...
 
 Yeah, that is a nice simple solution. Dmitry, does just setting LC_TIME
 fix the problem for you?

Just setting LC_TIME environment variable instead of LC_ALL would end up
with unreliable solution because LC_ALL has the highest priority.

If keeping error messages from perl has the utmost importance, it could be
achieved by
-   perl -M'POSIX qw(strftime)' -ne 'BEGIN { $subject = 0 }
+   perl -M'POSIX qw(strftime :locale_h)' -ne '
+   BEGIN { setlocale(LC_TIME, C); $subject = 0 }
but the little perl helper script we are talking about hardly worths so
much efforts.


-- 
ldv


pgp6E64QU8Sck.pgp
Description: PGP signature


[PATCH v3] am: invoke perl's strftime in C locale

2013-01-15 Thread Dmitry V. Levin
This fixes hg patch format support for locales other than C and en_*.
Before the change, git-am was making Date: line from hg changeset
metadata according to the current locale, and this line was rejected
later with invalid date format diagnostics because localized date
strings are not supported.

Reported-by: Gleb Fotengauer-Malinovskiy gle...@altlinux.org
Signed-off-by: Dmitry V. Levin l...@altlinux.org
---

 v3: alternative implementation using setlocale(LC_TIME, C)

 git-am.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/git-am.sh b/git-am.sh
index c682d34..8677d8c 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -334,7 +334,8 @@ split_patches () {
# Since we cannot guarantee that the commit message is 
in
# git-friendly format, we put no Subject: line and just 
consume
# all of the message as the body
-   perl -M'POSIX qw(strftime)' -ne 'BEGIN { $subject = 0 }
+   perl -M'POSIX qw(strftime :locale_h)' -ne '
+   BEGIN { setlocale(LC_TIME, C); $subject = 0 }
if ($subject) { print ; }
elsif (/^\# User /) { s/\# User/From:/ ; print 
; }
elsif (/^\# Date /) {

-- 
ldv
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2] am: invoke perl's strftime in C locale

2013-01-14 Thread Dmitry V. Levin
This fixes hg patch format support for locales other than C and en_*.
Before the change, git-am was making Date: line from hg changeset
metadata according to the current locale, and this line was rejected
later with invalid date format diagnostics because localized date
strings are not supported.

Reported-by: Gleb Fotengauer-Malinovskiy gle...@altlinux.org
Signed-off-by: Dmitry V. Levin l...@altlinux.org
---

 v2: replaced unfriendly URL with a short description

 git-am.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/git-am.sh b/git-am.sh
index c682d34..64b88e4 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -334,7 +334,7 @@ split_patches () {
# Since we cannot guarantee that the commit message is 
in
# git-friendly format, we put no Subject: line and just 
consume
# all of the message as the body
-   perl -M'POSIX qw(strftime)' -ne 'BEGIN { $subject = 0 }
+   LC_ALL=C perl -M'POSIX qw(strftime)' -ne 'BEGIN { 
$subject = 0 }
if ($subject) { print ; }
elsif (/^\# User /) { s/\# User/From:/ ; print 
; }
elsif (/^\# Date /) {

-- 
ldv
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html