Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Jun 2011 01:00:43 +0200
From:      Jilles Tjoelker <jilles@stack.nl>
To:        Atom Smasher <atom@smasher.org>
Cc:        freebsd-hackers@freebsd.org, freebsd-i18n@freebsd.org
Subject:   Re: tr A-Z a-z in locales other than C
Message-ID:  <20110607230042.GB16994@stack.nl>
In-Reply-To: <1106080945020.2239@smasher>
References:  <20110606224105.GA92410@stack.nl> <1106080945020.2239@smasher>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jun 08, 2011 at 09:56:39AM +1200, Atom Smasher wrote:
> the man page makes it clear...

>       Translate the contents of file1 to upper-case.

>             tr "[:lower:]" "[:upper:]" < file1

>       (This should be preferred over the traditional UNIX idiom of ``tr a-z
>  	A-Z'', since it works correctly in all locales.)

> for any other uses, either build the port with locale specified as "C" as 
> mentioned, or patch the port so:
>  	tr '[a-z]' '[A-Z]'
>   becomes:
>  	env LC_ALL=C tr '[a-z]' '[A-Z]'

> the only change that would be appropriate to the tr utility would be a 
> command-line option to select a locale... something like:
>  	tr -l C '[a-z]' '[A-Z]'

> i don't think anyone would object to that, but it would still require 
> patching some ports under some locales...

That new option would provide zero benefit. If things are going to be
patched anyway then patch them to be standards compliant.

> maybe another option would be modifying tr to recognize other [new] 
> environment variables... TR_LANG, TR_LC_ALL, TR_LC_CTYPE and 
> TR_LC_COLLATE. done that way, things could be set in /etc/make.conf (or 
> sys.mk), not need any patching, and not interfere with other uses of 
> locale.

That would be rather ugly.

If  tr a-z A-Z  is supposed to be deceiving in some locales, then let it
remain so unconditionally.

-- 
Jilles Tjoelker



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110607230042.GB16994>