Bug 6770 - Не позволяет ввод нелатинских символов для gecos в локали.UTF-8
Summary: Не позволяет ввод нелатинских символов для gecos в локали.UTF-8
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: shadow-utils (show other bugs)
Version: unstable
Hardware: all Linux
: P2 normal
Assignee: Mikhail Efremov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 10446
  Show dependency tree
 
Reported: 2005-05-03 14:41 MSD by Sergey V Turchin
Modified: 2019-11-05 17:20 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey V Turchin 2005-05-03 14:41:28 MSD
В локали ru_RU.UTF-8 
chfn -f Сергей 
говорит 
invalid name 'Сергей'
Comment 1 Vitaly Lipatov 2005-10-13 11:39:18 MSD
Подтверждаю. Действительно именно в UTF-ной локали такое. 
Может быть поправить определение, что символ управляющий? А то он коды >=0x80 
к ним относит... 
 
$ diff -urN fields.c.o fields.c 
--- fields.c.o  2005-10-13 11:37:27 +0400 
+++ libmisc/fields.c    2005-10-13 11:38:04 +0400 
@@ -37,7 +37,7 @@ 
 #include "prototypes.h" 
 
 #define fixed_iscntrl(c) \ 
-       (((c) & 0x7f) < 0x20 || (c) == 0x7f) 
+       ((c) < 0x20 || (c) == 0x7f) 
 
 #define MAX_FIELD_SIZE                 0x80 
 
 
Comment 2 Vitaly Lipatov 2005-10-13 11:56:27 MSD
char оказался знаковым, так что вот так: 
$diff -urN fields.c.o fields.c 
--- fields.c.o  2005-10-13 11:37:27 +0400 
+++ libmisc/fields.c    2005-10-13 11:56:54 +0400 
@@ -37,7 +37,7 @@ 
 #include "prototypes.h" 
 
 #define fixed_iscntrl(c) \ 
-       (((c) & 0x7f) < 0x20 || (c) == 0x7f) 
+       (((unsigned)(c)) < 0x20 || (c) == 0x7f) 
 
 #define MAX_FIELD_SIZE                 0x80 
Comment 3 Vitaly Lipatov 2008-01-17 09:37:53 MSK
Дима, а это нормально, что меньше чем через 4 месяца мы отметим 3 года этой 
баги?
Comment 4 Dmitry V. Levin 2008-01-20 00:19:16 MSK
(In reply to comment #3)
> Дима, а это нормально, что меньше чем через 4 месяца мы отметим 3 года этой 
> баги?

Попробуй вывести на неюникодную консоль символы из диапазона 0x80..0xa0,
и тогда станет понятно, что проблема не одномерна.
Comment 5 Vitaly Lipatov 2008-01-20 02:57:41 MSK
Мне кажется это проблема консоли, а в программах не должно быть таких 
американских хаков, как-либо изменяющих поток данных.
И может быть когда-нибудь мы доживём-таки до юникодной консоли :)
Comment 6 Alexey Shabalin 2019-10-17 20:53:44 MSK
chfn -f "Алексей Шабалин"
chfn: имя «Алексей Шабалин» содержит не ASCII-символы

Может уже пришло время юникодных консолей?
Comment 7 Sergey V Turchin 2019-10-18 09:55:39 MSK
(В ответ на комментарий №4)
> Попробуй вывести на неюникодную консоль символы из диапазона 0x80..0xa0,
В неадекватном неюникодной консоли отображении текста на экране я проблем не вижу.
Comment 8 Mikhail Efremov 2019-11-05 17:10:45 MSK
В shadow-utils-4.5 юникодный gecos не запрещается, хоть и выводится предупреждение:
# chfn -f 'Сергей' foobar 
chfn: имя «Сергей» содержит не ASCII-символы
# grep foobar /etc/passwd
foobar:x:502:502:Сергей,,,:/home/foobar:/bin/bash
Comment 9 Sergey V Turchin 2019-11-05 17:20:22 MSK
Работает.