Bug 6770

Summary: Не позволяет ввод нелатинских символов для gecos в локали.UTF-8
Product: Sisyphus Reporter: Sergey V Turchin <zerg>
Component: shadow-utilsAssignee: Mikhail Efremov <sem>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P2 CC: lav, ldv, sem, shaba, sin
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 10446    

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
Работает.