[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: smbclient: замена символа номера на подчеркивание



Kondrashov Nickolay wrote:

    Здравствуйте All.

    Небольшая проблема есть.

Похоже разобрался, извините если дурацкий вопрос был :)
Решение смотрите ниже...

Похоже, smbclient заменяет символ номера 'No' на символ подчеркивания '_'
в именах файлов на шаре Windows NT и не может к обратится к файлам с
этим символом в имене.

    В smb.conf
    character set = KOI8-R
    client code page = 866

    Я знаю что в koi8-r нет этого символа (и некоторых других тоже), в
отличие от cp866. Кто-нибудь смог научить smbclient обращаться с такими
файлами?
    Может как-то нужно похитрить с valid chars или character set (например
cp1251, cp866 или UTF-8), выставив локаль соответствующую, или может
какой escaping бывает? Как лучше подступиться?


Character set подходит cp1251, но использовать его, гхм, неудобно.

После просмотра исходников обнаружилось, что в source/lib/charcnv.c есть таблица перекодировки cp866-koi8r, в которой символ номера заменяется на значок копирайта (достаточно легально - оба есть только в своей кодировке). Однако выяснилось что эта таблица не используется при перекодировании имен файлов получаемых с Windows NT, поскольку в сессиях с ней используется unicode. Вместо этой таблицы используется unicode_map (в Debian они лежат в /usr/share/samba/codepages) - unicode_map.KOI8-R, исходник которой - source/codepages/CPKOI8-R.TXT.

	В этой таблице, совершенно верно, указано следующее соответствие:

0xBF    0x00A9  #       COPYRIGHT SIGN

Но это нас не устраивает, поэтому исправляем (можно просто пропатчить приложеным патчиком):

0xBF    0x2116  #       NUMERO SIGN

	Далее компилируем и устанавливаем:

$ make_unicodemap KOI8-R CPKOI8-R.TXT unicode_map.KOI8-R
# cp --backup unicode_map.KOI8-R /usr/share/samba/codepages/

На минимальных тестах работает, пока больше не пробовал. Гарантий, естественно, никаких. В понедельник попробую с Amanda :)

Спасибо за внимание, если кто-то дочитал до этого места :)

--


    С уважением,
    Кондрашов Николай,
    ИТ-менеджер
    ЗАО "Автоматика-Север"
    +7(812) 1183238, 3039648
    http://www.avt.com.ru/
    mailto:knu@avtsev.spb.ru
--- source/codepages/CPKOI8-R.TXT	Sun Jul 13 01:56:43 2003
+++ source/codepages/CPKOI8-R-NSH.TXT	Sun Jul 13 02:10:14 2003
@@ -238 +238,4 @@
-0xBF	0x00A9	#	COPYRIGHT SIGN
+#0xBF	0x00A9	#	COPYRIGHT SIGN	- commented out by Nickolay
+		#	Kondrashov to solve NT-Samba numero sign problem
+0xBF	0x2116	#	NUMERO SIGN	- added by Nickolay Kondrashov
+		#	to solve NT-Samba numero sign problem

Reply to: