Bug 6770 - Не позволяет ввод нелатинских символов для gecos в локали.UTF-8
: Не позволяет ввод нелатинских символов для gecos в локали.UTF-8
Status: NEW
: Sisyphus
(All bugs in Sisyphus/shadow-utils)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
: 10446
  Show dependency tree
 
Reported: 2005-05-03 14:41 by
Modified: 2008-03-14 13:31 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2005-05-03 14:41:28
В локали ru_RU.UTF-8 
chfn -f Сергей 
говорит 
invalid name 'Сергей'
------- Comment #1 From 2005-10-13 11:39:18 -------
Подтверждаю. Действительно именно в 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 From 2005-10-13 11:56:27 -------
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 From 2008-01-17 09:37:53 -------
Дима, а это нормально, что меньше чем через 4 месяца мы отметим 3 года этой 
баги?
------- Comment #4 From 2008-01-20 00:19:16 -------
(In reply to comment #3)
> Дима, а это нормально, что меньше чем через 4 месяца мы отметим 3 года этой 
> баги?

Попробуй вывести на неюникодную консоль символы из диапазона 0x80..0xa0,
и тогда станет понятно, что проблема не одномерна.
------- Comment #5 From 2008-01-20 02:57:41 -------
Мне кажется это проблема консоли, а в программах не должно быть таких 
американских хаков, как-либо изменяющих поток данных.
И может быть когда-нибудь мы доживём-таки до юникодной консоли :)