Re: [gnome-cyr] Evolution Pilot koi8 %-\



Ну вот, ответа не дождался, раскопал  сам, делюсь знанием.

1. Evolution сам конвертацией не занимается, он вызывает функции
convert_ToPilotChar и convert_FromPilotChar из пакета pilot-link (файл util.c)
2. ToPilotChar и convert_FromPilotChar - кривые (да не обидится на меня разарботчик) и по умолчанию  конвертят в CP1251
(#define PILOT_CHARSET "CP1252")
3. Pilot-Link для конвертации использует Libiconv

Как это безобразие заставить работать:

Установить ставить libiconv: ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.8.tar.gz 
(со штатным из glibc Mandrake 8.2 не работает)
Скачать http://www.pilot-link.org/source/pilot-link-0.11.3.tar.gz
Пропатчить прилагаемым патчем
Установить export PILOTCHARSET=KOI8-R.

После этих махинаций у меня все заработало

Исходную мысль взял с http://mail.gnome.gr.jp/ml/gnome-devel/200112/msg00000.html
но с pilot-link-0.9.5 у меня ничего не получилось, заработало только на 0.11.3




В Втр, 13.08.2002, в 17:10, Andrey Tuev написал:
Добрый день.

Помогите,плиз разбраться как наладить синхронизацию Evolution c pilot.

Синхронизирую и получаю:
Evolution - подчеркивания вместо букв.
Pilot - "п%яппя" и т.д. - очень напоминает UTF-8 показанную в koi (pilot работает в KOI8)

стал искать по исходникам - и в pilot-link и в Evolution нашел функции для конввертации
из одного чарсета в другой.

в Evo - e_pilot_utf8_from(to)_pchar
в pilot-link -convert_From(To)PilotChar

Так кто-ж на самом деле должен конвертить из koi в utа-8 и назад?

и как заставить эту конвертацию работать?


И вообще, БЛИН, ЛЮДИ У КОГО EVO НОРМАЛЬНО С ПИЛОТОМ В KOI СИНХРОНИЗИРУЕТСЯ, ОТЗОВИСЬ!!!!
--- pilot-link-0.11.3-back/libpisock/util.c	Tue Jul 30 19:37:13 2002
+++ pilot-link-0.11.3/libpisock/util.c	Fri Aug 16 10:26:34 2002
@@ -32,7 +32,7 @@
 #include <iconv.h>
 #endif
 
-#define PILOT_CHARSET "CP1252"
+#define DEFAULT_PILOT_CHARSET "CP1252"
 
 /***********************************************************************
  *
@@ -55,8 +55,14 @@
 		*ob;
 	iconv_t cd;
 	size_t 	ibl, obl;
+	char *charset_env;
+
+	charset_env = getenv("PILOTCHARSET");
+	if (charset_env)
+	    cd = iconv_open(charset_env, charset);
+	if (!charset_env || !cd)
+	    cd = iconv_open(DEFAULT_PILOT_CHARSET, charset);
 
-	cd = iconv_open(PILOT_CHARSET, charset);
 	if (!cd)
 		return -1;
 
@@ -98,8 +104,14 @@
 		*ob;
 	iconv_t cd;
 	size_t 	ibl, obl;
+	char *charset_env;
+
+	charset_env = getenv("PILOTCHARSET");
+	if (charset_env)
+	    cd = iconv_open(charset_env, charset);
+	if (!charset_env || !cd)
+	cd = iconv_open(DEFAULT_PILOT_CHARSET, charset);
 
-	cd = iconv_open(charset, PILOT_CHARSET);
 	if (!cd)
 		return -1;
 


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