From: Eric Wong <normalperson@yhbt.net>
To: Jakub Narebski <jnareb@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] send-email: Use setlocale in addition to $ENV{LC_ALL} to set locale
Date: Wed, 21 Jun 2006 03:49:41 -0700 [thread overview]
Message-ID: <20060621104941.GB15748@localdomain> (raw)
In-Reply-To: <e7b796$lj$1@sea.gmane.org>
Jakub Narebski <jnareb@gmail.com> wrote:
> Jakub Narebski wrote:
>
> > $ENV{LC_ALL} = 'C'; does not change locale used by strftime.
> > Use setlocale( LC_ALL, 'C' ); instead.
>
> > # most mail servers generate the Date: header, but not all...
> > $ENV{LC_ALL} = 'C';
> > -use POSIX qw/strftime/;
> > +use POSIX qw/strftime setlocale LC_ALL/;
> > +setlocale( &LC_ALL, 'C' );
>
> Perhaps instead of
> setlocale( &LC_ALL, 'C' );
> we should use
> setlocale( &LC_ALL, '' );
> (i.e. set the LC_ALL behaviour according to the locale environment
> variables). I'm not that versed in locale, POSIX and Perl.
I'm responsible for the $ENV{LC_ALL} = 'C' setting but I never actually
tested how things would work with a non-English locale (not being
well-versed in these things myself, either).
I've always wondered about why /usr/bin/822-date existed without
strftime on my Debian systems but never bothered asking, I guess this
could be a good reason why...
For reference, here's the /usr/bin/822-date script
(trailing whitespace fixed):
------- 8< -------
#!/usr/bin/perl --
# I hereby place this in the public domain - Ian Jackson, 1995.
# Changes by Klee Dienes also placed in public domain (1997).
# time structure:
# [ sec min hour mday mon year wday yday isdst ]
@ARGV && die "usage: 822-date\n";
$curtime = time;
@localtm = localtime ($curtime);
$localtms = localtime ($curtime);
@gmttm = gmtime ($curtime);
$gmttms = gmtime ($curtime);
if ($localtm[0] != $gmttm[0]) {
die (sprintf ("local timezone differs from GMT by a non-minute interval\n"
. "local time: %s\n"
. "GMT time: %s\n", $localtms, $gmttms));
}
$localmin = $localtm[1] + $localtm[2] * 60;
$gmtmin = $gmttm[1] + $gmttm[2] * 60;
if ((($gmttm[6] + 1) % 7) == $localtm[6]) {
$localmin += 1440;
} elsif ((($gmttm[6] - 1) % 7) == $localtm[6]) {
$localmin -= 1440;
} elsif ($gmttm[6] == $localtm[6]) {
1;
} else {
die ("822-date: local time offset greater than or equal to 24 hours\n");
}
$offset = $localmin - $gmtmin;
$offhour = $offset / 60;
$offmin = abs ($offset % 60);
if (abs ($offhour) >= 24) {
die ("822-date: local time offset greater than or equal to 24 hours\n");
}
printf
(
"%s, %2d %s %d %02d:%02d:%02d %s%02d%02d\n",
(Sun,Mon,Tue,Wed,Thu,Fri,Sat)[$localtm[6]], # day of week
$localtm[3], # day of month
(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)[$localtm[4]], # month
$localtm[5]+1900, # year
$localtm[2], # hour
$localtm[1], # minute
$localtm[0], # sec
($offset >= 0) ? '+' : '-',# TZ offset direction
abs ($offhour), # TZ offset hour
$offmin, # TZ offset minute
) || die "822-date: output error: $!\n";
------- 8< -------
--
Eric Wong
next prev parent reply other threads:[~2006-06-21 10:50 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <11508760843417-git-send-email-jnareb@gmail.com>
[not found] ` <11508760842024-git-send-email-jnareb@gmail.com>
2006-06-21 8:05 ` [PATCH 1/3] gitweb: whitespace cleanup Jakub Narebski
2006-06-21 9:04 ` [PATCH 0/3] Minor gitweb modifications and cleanups Junio C Hamano
2006-06-21 9:12 ` [PATCH] send-email: Use setlocale in addition to $ENV{LC_ALL} to set locale Jakub Narebski
2006-06-21 10:33 ` Jakub Narebski
2006-06-21 10:49 ` Eric Wong [this message]
2006-06-21 11:18 ` Jakub Narebski
2006-07-03 2:49 ` Junio C Hamano
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=20060621104941.GB15748@localdomain \
--to=normalperson@yhbt.net \
--cc=git@vger.kernel.org \
--cc=jnareb@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;
as well as URLs for NNTP newsgroup(s).