sed not working
Tim Robbins
tjr at freebsd.org
Mon Sep 5 02:40:27 PDT 2005
Rein Kadastik wrote:
> Giorgos Keramidas wrote:
>
>> On 2005-09-03 14:17, Rein Kadastik <wigry at uninet.ee> wrote:
>>
>>
>>> Rein Kadastik wrote:
>>>
>>>
>>>> Well I have one guess here. In estonian alphabet, the z comes
>>>> immediately after s and before t. So as the regex orders [a-z] the
>>>> characters t, u, v, w, x, y are left out
>>>>
>>>> How to order the sed to use english alphabet?
>>>>
>>>
>>> Well, My guess was right. I have a following line in the /etc/profile:
>>>
>>> export LANG=et_EE.ISO8859-15
>>>
>>> After I expoerted LANG=en_US.ISO8859-1, the sed started to work.
>>>
>>> I did not thought that LANG parameter will also alter the alfabet and
>>> therefore the expression [a-z] does not cover the full alphabet
>>> anymore.
>>>
>>
>>
>> By using a character class:
>>
>> [[:alpha:]]
>>
>> AFAIK, if you are using non-English locales, there's no guarantee that
>> [a-z] will be the entire set of lowercase letters, or that it will only
>> include lowercase letters, for that matter.
>>
>> _______________________________________________
>> freebsd-hackers at freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>> To unsubscribe, send any mail to
>> "freebsd-hackers-unsubscribe at freebsd.org"
>>
>>
>>
> Yep, I know but it does not matter. The form [a-z] is used all over
> the place in the FreeBSD source (1629 lines in 4.11-RELEASE-p11 and
> almost 1600 in 5-STABLE). Totally hopeless. Seems, that no developer
> have ever heard about character classes and it VERY UNSAFE to try to
> compile (and actually even run) FreeBSD with some other locale than
> C/en_US.ISO8859-1.
>
> I actually searched for existance of character classes in source code.
> Found around 30 matches. Mostly in manual pages. Perl configure script
> checks if tr supports them, but it actually never uses the featuire
> (even if available).
>
> I am totally dissappointed about this. I thought about reporting a
> bug, but as it is everywhere, there is no point to do so.
I think you're blowing things out of proportion. Providing that you
build world as root (which most people do), and that you don't change
the LANG setting for root (think single-user mode), the following
command will give you an approximate idea of which utilities are affected:
$ find /usr/src -name \*.c | xargs grep -e '".*a-z' -e '".*A-Z'
25
Of these 25 hits, about half are in comments or test code that is never
built. The utilities that are genuinely affected are: kbdmap, scon, ppp
(when using ATM), m4 (in GNU compatibility mode), fdisk, named, cvs,
diff and vi.
Tim
More information about the freebsd-hackers
mailing list