URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID14
Нить номер: 635
[ Назад ]

Исходное сообщение
"искажение английских имён (aux => ahy9u3~9)"

Отправлено vladka , 08-Ноя-05 23:23 
FreeBSD 6.0-STABLE (cvsup от 7ноября), консоль в koi-8;
samba-3.0.20b из портов, собиралась WITH_LDAP, остальное выключено.
dos charset=СP866
display charset=KOI8-R                                      
unix charset = KOI8-R
Клиентская машина - WinXP SP2, видит и русский, и английский, за исключением некоторых файлов. Например, если создать файл с именем "aux" (неважно, с клиента или на сервере), то на сервере он появляется именно с этим именем, а с клиента виден как ahy9u3~9. Файлы типа au, auy, a1ux, au1x отображаются нормально. В логах только ругань на отсутствующий /etc/printcap. Пробовал unix charset=UTF8, пробовал dos charset=866 - не помогло. Куда копать ?

Содержание

Сообщения в этом обсуждении
"искажение английских имён (aux => ahy9u3~9)"
Отправлено gdenis , 10-Ноя-05 21:47 
>Куда копать ?

В сторону спец. имен и/или резервирования имен файлов в Винни :) Попробуй ради прикола скопировать либой файл в файл с именем aux, тока чур на свой страх и риск ;))))))))))))))))))))))))


"искажение английских имён (aux => ahy9u3~9)"
Отправлено vladka , 10-Ноя-05 21:59 
не понял, винда ведь не переименовывает локальные файлы с именами aux/lpt/prn. И ещё - с рядом стоящей самбой2 на linux'е подобной проблемы нет, с того же клиента вижу нормальные имена.

"искажение английских имён (aux => ahy9u3~9)"
Отправлено gdenis , 10-Ноя-05 22:26 
>не понял, винда ведь не переименовывает локальные файлы с именами aux/lpt/prn. И
>ещё - с рядом стоящей самбой2 на linux'е подобной проблемы нет,
>с того же клиента вижу нормальные имена.

а хз, проблема в спец. имени, а че-где-кто-и-как это к разработчикам Самбы и Винни :))


"искажение английских имён (aux => ahy9u3~9)"
Отправлено vladka , 11-Ноя-05 00:10 
Мысль верная, спасибо.
Надо в source/smbd/mangle_hash2.c поправить или функцию is_reserved_name, сделав так:
static BOOL is_reserved_name(const char *name)                          
{
        return False;                                                  
}
или список
static const char *reserved_names[] ={ "AUX", "LOCK$", "CON", "COM1", "COM2", "COM3", "COM4","LPT1", "LPT2", "LPT3", "NUL", "PRN", NULL };
Компилируем, ставим, видим ожидаемый результат.

"искажение английских имён (aux => ahy9u3~9)"
Отправлено gdenis , 11-Ноя-05 10:56 
>Мысль верная, спасибо.
>Надо в source/smbd/mangle_hash2.c поправить или функцию is_reserved_name, сделав так:
>static BOOL is_reserved_name(const char *name)
>{
>        return False;
>}
>или список
>static const char *reserved_names[] ={ "AUX", "LOCK$", "CON", "COM1", "COM2", "COM3", "COM4","LPT1",
>"LPT2", "LPT3", "NUL", "PRN", NULL };
>Компилируем, ставим, видим ожидаемый результат.

Велком :)