On Jun 21, 2011, at 03:24, Miguel Almeida wrote:

> On Mon, 2011-06-20 at 22:17 +0300, Daniel Shahaf wrote:
>> 
>> Miguel Almeida wrote on Mon, Jun 20, 2011 at 15:02:27 +0100:
>> > I tried adding the following, but with no success (I must be passing
>> > the date wrongly):
>> >     --add-header date=`date -R`
>> 
>> --add-header Date="`date -R`"
>> 
>> FWIW, 'date -R' is not portable; I think the portable version is
>>    LC_ALL=C date +"%a, %d %b %Y %H:%M:%S %z"
>> 
> Could you tell me what you mean by non-portability?

"-R" is a GNU date extension. BSD date (such as you'll find on Mac OS X or 
FreeBSD) does not have that option. On public mailing lists like this one (and 
in general, really), it's good to write portable code (code that can be ported 
to (m)any system(s)), since people will probably be referring back to it in the 
archives for years to come, and may not be using the same OS as you.

> And also, what does the LC_ALL=C part mean in the line you suggest?

It sets the locale to C -- in other words, no localization. This ensures the 
user's (or computer's) locale setting does not make the date command print 
output in an unexpected locale (language). Your goal is to reproduce the "-R" 
option of GNU date. The date manpage says this produces a date in RFC 2822 
format, which by definition is in English.

http://www.ietf.org/rfc/rfc2822.txt (section 3.3)

The various % options shown in the portable version above however are localized 
-- shown in different languages, depending on the locale setting. Observe how 
GNU date displays the output with "-R" the same regardless of the locale:

$ date -R
Tue, 21 Jun 2011 03:35:08 -0500
$ LC_ALL=de_AT date -R
Tue, 21 Jun 2011 03:35:17 -0500

But that the compatibility version gets localized:

$ date +"%a, %d %b %Y %H:%M:%S %z"
Tue, 21 Jun 2011 03:35:23 -0500
$ LC_ALL=de_AT date +"%a, %d %b %Y %H:%M:%S %z"
Di, 21 Jun 2011 03:35:27 -0500

To fix this and make it RFC 2822 compliant, ensure the locale is C.


Reply via email to