Показать сообщение отдельно
Старый 02.01.2006, 10:04   #2
Imperio
PRO-двинутые пользователи
 
Регистрация: 06.04.2004
Сообщений: 3,797
По умолчанию

Раньше много копий об эту букву поломали. Напомню, что происходит. При появлении на сервере файла, в имени которого содержится буква "я", в клиенте (напр. total commander) в имени файла эта буква и следующий за ней символ не отображаются. В результате мы имеем битое имя, файл можно скачать (такой же кривой) и нельзя удалить. No such file, понимаешь.

Наткнулся на решение этой проблемы, попробовал - всё работает.
отсюда: http://forum.krasnogorsk.ru/index.php?boar...y;threadid=2637
==============================================
Tim:

Тема актуальна для всех, кто держит на Unix файлы с русскими именами в кодировке 1251.
Как известно, ProFTPD неправильно обрабатывает каталоги и файлы, содержащие маленькую русскую букву "я", код которой (255) совпадает с IAC (Is A Command) протокола telnet.
Опять же, непонятно почему ProFTPD весь сетевой i/o пропускает через telnet-фильтр - разве FTP протокол предусматривает возможность передавать telnet-последовательности на FTP-сервер?

Дабы исправить сие мерзкое поведение, надо сделать следующее:
- открываем файл src/netio.c
- ищем там следующий кусок кода (или похожий на него):

switch (mode) {
case IAC:
switch (cp) {
case WILL:
case WONT:
case DO:
case DONT:
mode = cp;
continue;

case IAC:
mode = 0;
break;

default:
/* Ignore */
mode = 0;
continue;
}
break;

case WILL:
case WONT:
pr_netio_printf(out_nstrm, "%c%c%c", IAC, DONT, cp);
mode = 0;
continue;

case DO:
case DONT:
pr_netio_printf(out_nstrm, "%c%c%c", IAC, WONT, cp);
mode = 0;
continue;

default:
if (cp == IAC) {
mode = cp;
continue;
}
break;
}

и вырезаем его целиком, начиная от команды switch и до завершающей фигурной скобки. Можно вырезать cut-ом, можно закомментить #if 0 ... #endif (я сделал второе). Пересобираем, радуемся жизни - все работает.
==============================================
Imperio вне форума   Ответить с цитированием