diff options
author | sumikawa <sumikawa@FreeBSD.org> | 2001-03-06 11:17:09 +0000 |
---|---|---|
committer | sumikawa <sumikawa@FreeBSD.org> | 2001-03-06 11:17:09 +0000 |
commit | a53fcee7be8d3127cecdeb46fa6ce9b6c0edd40b (patch) | |
tree | 2919426fe01bd68db3f9180483437a73a4aa9546 /palm/jpilot | |
parent | f2269a27240ab1e40733f5849d6618c4537a674a (diff) | |
download | FreeBSD-ports-a53fcee7be8d3127cecdeb46fa6ce9b6c0edd40b.zip FreeBSD-ports-a53fcee7be8d3127cecdeb46fa6ce9b6c0edd40b.tar.gz |
fix internationalization bug. these patches are already submitted to
the author and will be synced in next release.
Submitted by: Takeshi MUTOH <tmutoh@mx10.freecom.ne.jp>
Approved by: maintainer
Diffstat (limited to 'palm/jpilot')
-rw-r--r-- | palm/jpilot/Makefile | 2 | ||||
-rw-r--r-- | palm/jpilot/files/patch-Makefile.in (renamed from palm/jpilot/files/patch-ba) | 0 | ||||
-rw-r--r-- | palm/jpilot/files/patch-address.c | 97 | ||||
-rw-r--r-- | palm/jpilot/files/patch-datebook.c | 120 | ||||
-rw-r--r-- | palm/jpilot/files/patch-datebook_gui.c | 47 | ||||
-rw-r--r-- | palm/jpilot/files/patch-japanese.c | 157 | ||||
-rw-r--r-- | palm/jpilot/files/patch-memo.c | 86 | ||||
-rw-r--r-- | palm/jpilot/files/patch-sync.c | 155 | ||||
-rw-r--r-- | palm/jpilot/files/patch-todo_gui.c | 21 | ||||
-rw-r--r-- | palm/jpilot/files/patch-utils.c | 70 | ||||
-rw-r--r-- | palm/jpilot/files/patch-utils.h | 23 |
11 files changed, 777 insertions, 1 deletions
diff --git a/palm/jpilot/Makefile b/palm/jpilot/Makefile index 7bf3e79..bff6f65 100644 --- a/palm/jpilot/Makefile +++ b/palm/jpilot/Makefile @@ -8,7 +8,7 @@ PORTNAME= jpilot PORTVERSION= 0.99 -PORTREVISION?= 1 +PORTREVISION?= 2 CATEGORIES+= palm comms MASTER_SITES= http://jpilot.org/ diff --git a/palm/jpilot/files/patch-ba b/palm/jpilot/files/patch-Makefile.in index 863f24b..863f24b 100644 --- a/palm/jpilot/files/patch-ba +++ b/palm/jpilot/files/patch-Makefile.in diff --git a/palm/jpilot/files/patch-address.c b/palm/jpilot/files/patch-address.c new file mode 100644 index 0000000..dbb316b --- /dev/null +++ b/palm/jpilot/files/patch-address.c @@ -0,0 +1,97 @@ +Index: address.c +diff -u address.c:1.1.1.1 address.c:1.1.1.1.4.3 +--- address.c:1.1.1.1 Sun Feb 4 12:58:54 2001 ++++ address.c Sat Feb 17 20:37:52 2001 +@@ -31,10 +31,6 @@ + #include "libplugin.h" + #include "password.h" + +-#include "japanese.h" +-#include "cp1250.h" +-#include "russian.h" +- + #define ADDRESS_EOF 7 + + static int glob_sort_by_company; +@@ -224,8 +220,16 @@ + unsigned int *unique_id) + { + char record[65536]; +- int rec_len; ++ int rec_len,i; + buf_rec br; ++ long char_set; ++ ++ get_pref(PREF_CHAR_SET, &char_set, NULL); ++ if (char_set != CHAR_SET_ENGLISH) { ++ for (i = 0; i < 19; i++) { ++ if (a->entry[i]) charset_j2p(a->entry[i], strlen(a->entry[i])+1, char_set); ++ } ++ } + + rec_len = pack_Address(a, record, 65535); + if (!rec_len) { +@@ -275,36 +279,22 @@ + return -1; + } + +- get_pref(PREF_CHAR_SET, &char_set, NULL); +- if (char_set==CHAR_SET_JAPANESE || +- char_set==CHAR_SET_1250 || +- char_set==CHAR_SET_1251 || +- char_set==CHAR_SET_1251_B +- ) { ++ get_pref(PREF_CHAR_SET, &char_set, NULL); ++ if (char_set != CHAR_SET_ENGLISH) { + /* Convert to character set */ +- { + int i; + for (i = 0; i < 16; i++) + if (ai->category.name[i][0] != '\0') { +- if (char_set==CHAR_SET_JAPANESE) Sjis2Euc(ai->category.name[i], 16); +- if (char_set==CHAR_SET_1250) Win2Lat(ai->category.name[i], 16); +- if (char_set==CHAR_SET_1251) win1251_to_koi8(ai->category.name[i], 16); ++ charset_p2j(ai->category.name[i], 16, char_set); + } + for (i = 0; i < 19 + 3; i++) + if (ai->labels[i][0] != '\0') { +- if (char_set==CHAR_SET_JAPANESE) Sjis2Euc(ai->labels[i], 16); +- if (char_set==CHAR_SET_1250) Win2Lat(ai->labels[i], 16); +- if (char_set==CHAR_SET_1251) win1251_to_koi8(ai->labels[i], 16); +- if (char_set==CHAR_SET_1251_B) koi8_to_win1251(ai->labels[i], 16); ++ charset_p2j(ai->labels[i],16, char_set); + } + for (i = 0; i < 8; i++) + if (ai->phoneLabels[i][0] != '\0') { +- if (char_set==CHAR_SET_JAPANESE) Sjis2Euc(ai->phoneLabels[i], 16); +- if (char_set==CHAR_SET_1250) Win2Lat(ai->phoneLabels[i], 16); +- if (char_set==CHAR_SET_1251) win1251_to_koi8(ai->phoneLabels[i], 16); +- if (char_set==CHAR_SET_1251_B) koi8_to_win1251(ai->phoneLabels[i], 16); ++ charset_p2j(ai->phoneLabels[i],16, char_set); + } +- } + } + + return 0; +@@ -386,17 +376,11 @@ + } + + get_pref(PREF_CHAR_SET, &char_set, NULL); +- if (char_set==CHAR_SET_JAPANESE || +- char_set==CHAR_SET_1250 || +- char_set==CHAR_SET_1251 || +- char_set==CHAR_SET_1251_B +- ) { +- int i; ++ if (char_set != CHAR_SET_ENGLISH) { + for (i = 0; i < 19; i++) { +- if (char_set==CHAR_SET_JAPANESE) Sjis2Euc(a.entry[i], 65536); +- if (char_set==CHAR_SET_1250) Win2Lat(a.entry[i], 65536); +- if (char_set==CHAR_SET_1251) win1251_to_koi8(a.entry[i], 65536); +- if (char_set==CHAR_SET_1251_B) koi8_to_win1251(a.entry[i], 65536); ++ if ((a.entry[i] != NULL) && (a.entry[i][0] != '\0')) { ++ charset_p2j(a.entry[i], strlen(a.entry[i])+1, char_set); ++ } + } + } + diff --git a/palm/jpilot/files/patch-datebook.c b/palm/jpilot/files/patch-datebook.c new file mode 100644 index 0000000..eadf805 --- /dev/null +++ b/palm/jpilot/files/patch-datebook.c @@ -0,0 +1,120 @@ +Index: datebook.c +diff -u datebook.c:1.1.1.1 datebook.c:1.1.1.1.4.5 +--- datebook.c:1.1.1.1 Sun Feb 4 12:58:54 2001 ++++ datebook.c Sat Feb 17 21:51:55 2001 +@@ -37,10 +37,6 @@ + #include "libplugin.h" + #include "password.h" + +-#include "japanese.h" +-#include "cp1250.h" +-#include "russian.h" +- + #ifndef FALSE + #define FALSE 0 + #endif +@@ -205,6 +201,13 @@ + char record[65536]; + int rec_len; + buf_rec br; ++ long char_set; ++ ++ get_pref(PREF_CHAR_SET, &char_set, NULL); ++ if (char_set != CHAR_SET_ENGLISH) { ++ if (a->description) charset_j2p(a->description, strlen(a->description)+1, char_set); ++ if (a->note) charset_j2p(a->note, strlen(a->note)+1, char_set); ++ } + + rec_len = pack_Appointment(a, record, 65535); + if (!rec_len) { +@@ -212,7 +215,7 @@ + jpilot_logf(LOG_WARN, "pack_Appointment %s\n", _("error")); + return -1; + } +- br.rt=rt; ++ br.rt=rt; + br.attrib = attrib; + br.buf = record; + br.size = rec_len; +@@ -535,9 +538,10 @@ + + int get_datebook_app_info(struct AppointmentAppInfo *ai) + { +- int num; ++ int num,i; + unsigned int rec_size; + unsigned char *buf; ++ long char_set; + + bzero(ai, sizeof(*ai)); + +@@ -550,6 +554,12 @@ + jpilot_logf(LOG_WARN, _("Error reading"), "DatebookDB.pdb"); + return -1; + } ++ get_pref(PREF_CHAR_SET, &char_set, NULL); ++ if (char_set != CHAR_SET_ENGLISH) { ++ for (i = 0; i < 16; i++) { ++ if (ai->category.name[i][0] != '\0') charset_p2j(ai->category.name[i], 16, char_set); ++ } ++ } + + return 0; + } +@@ -688,14 +698,14 @@ + AppointmentList *temp_a_list; + long keep_modified, keep_deleted; + int keep_priv; +- long char_set; + buf_rec *br; + #ifdef USE_DB3 + long use_db3_tags; + time_t ltime; + struct tm *today; + #endif +- ++ long char_set; ++ + #ifdef USE_DB3 + time(<ime); + today = localtime(<ime); +@@ -763,22 +773,8 @@ + } + + get_pref(PREF_CHAR_SET, &char_set, NULL); +- if (char_set==CHAR_SET_JAPANESE) { +- Sjis2Euc(a.description, 65536); +- Sjis2Euc(a.note, 65536); +- } +- if (char_set==CHAR_SET_1250) { +- Win2Lat(a.description, 65536); +- Win2Lat(a.note, 65536); +- } +- if (char_set==CHAR_SET_1251) { +- win1251_to_koi8(a.description, 65536); +- win1251_to_koi8(a.note, 65536); +- } +- if (char_set==CHAR_SET_1251_B) { +- koi8_to_win1251(a.description, 65536); +- koi8_to_win1251(a.note, 65536); +- } ++ if (a.description) charset_p2j(a.description, strlen(a.description)+1, char_set); ++ if (a.note) charset_p2j(a.note, strlen(a.note)+1, char_set); + + temp_a_list = malloc(sizeof(AppointmentList)); + if (!temp_a_list) { +@@ -793,6 +789,8 @@ + temp_a_list->next = *appointment_list; + *appointment_list = temp_a_list; + recs_returned++; ++ ++ + } + + jp_free_DB_records(&records); +@@ -803,3 +801,5 @@ + + return recs_returned; + } ++ ++ diff --git a/palm/jpilot/files/patch-datebook_gui.c b/palm/jpilot/files/patch-datebook_gui.c new file mode 100644 index 0000000..0d79ce8 --- /dev/null +++ b/palm/jpilot/files/patch-datebook_gui.c @@ -0,0 +1,47 @@ +Index: datebook_gui.c +diff -u datebook_gui.c:1.1.1.1 datebook_gui.c:1.1.1.1.4.4 +--- datebook_gui.c:1.1.1.1 Sun Feb 4 12:58:54 2001 ++++ datebook_gui.c Sat Feb 17 21:48:47 2001 +@@ -224,7 +224,6 @@ + + void cb_date_cats(GtkWidget *widget, gpointer data) + { +- unsigned char *buf; + int size; + struct AppointmentAppInfo ai; + int i; +@@ -241,13 +240,7 @@ + return; + } + +- get_app_info("DatebookDB", &buf, &size); +- jpilot_logf(LOG_DEBUG, "Got datebook app info, size = %d", size); +- if (size<1) { +- return; +- } +- unpack_AppointmentAppInfo(&ai, buf, size); +- free(buf); ++ get_datebook_app_info(&ai); + + window_date_cats = gtk_window_new(GTK_WINDOW_TOPLEVEL); + +@@ -268,10 +261,8 @@ + gtk_table_set_col_spacings(GTK_TABLE(table),0); + gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); + +- get_pref(PREF_CHAR_SET, &char_set, NULL); + for (i=0, bit=1; i<16; i++, bit <<= 1) { + if (ai.category.name[i][0]) { +- if (char_set == CHAR_SET_JAPANESE) Sjis2Euc(ai.category.name[i], 65536); + toggle_button[i]=gtk_toggle_button_new_with_label + (ai.category.name[i]); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle_button[i]), +@@ -945,7 +936,7 @@ + if (a->note) { + jpilot_logf(LOG_DEBUG, "text2=[%s]\n",a->note); + } +- ++ + /* We won't allow a repeat frequency of less than 1 */ + if ((page != PAGE_NONE) && (a->repeatFrequency < 1)) { + jpilot_logf(LOG_WARN, diff --git a/palm/jpilot/files/patch-japanese.c b/palm/jpilot/files/patch-japanese.c new file mode 100644 index 0000000..8b2fffb --- /dev/null +++ b/palm/jpilot/files/patch-japanese.c @@ -0,0 +1,157 @@ +Index: japanese.c +diff -u japanese.c:1.1.1.1 japanese.c:1.1.1.1.4.3 +--- japanese.c:1.1.1.1 Sun Feb 4 12:58:54 2001 ++++ japanese.c Sat Feb 17 21:19:41 2001 +@@ -10,7 +10,7 @@ + + #include <stdlib.h> + #include <stdio.h> +- ++ + /* In utils.c, also a prototype in utils.h */ + void multibyte_safe_strncpy(char *dst, char *src, size_t max_len); + +@@ -23,7 +23,14 @@ + #define isEuc(c) \ + (0xa0 < ((unsigned char) (c)) && ((unsigned char) (c)) < 0xff) + ++/* convert SJIS char to EUC char ++ ++ this does not support Machine dependent codes. ++ args: hi: first byte of sjis char. ++ lo: second byte of sjis char. ++ return: euc char in 16bit value. + ++ */ + static unsigned int SjisToEuc(unsigned char hi, unsigned char lo) + { + if (lo >= 0x9f) +@@ -32,8 +39,12 @@ + return ((hi * 2 - (hi >= 0xe0 ? 0xe1 : 0x61)) << 8) | + (lo + (lo >= 0x7f ? 0x60 : 0x61)); + } +- + ++/* ++ args: source char pointer, destination source pointer, a length of srting ++ Length include null termination. ++ return the pointer of nul termination code. ++ */ + unsigned char *Sjis2EucCpy(unsigned char *dest, unsigned char *src, int max_len) + { + unsigned char *p, *q; +@@ -43,8 +54,8 @@ + + p = src; + q = dest; +- while ((*p) && (n < max_len-1)) { +- if (isSjis1stByte(*p)) { ++ while ((*p) && (n < max_len-2)) { ++ if (isSjis1stByte(*p)) { + hi = *p++; + lo = *p++; + w = SjisToEuc(hi, lo); +@@ -58,27 +69,48 @@ + } else if ((*p) & 0x80) { /* irregular japanese char */ + p++; /* ??abort and return NULL?? */ + /* discard it */ +- } else { ++ } else { + *q++ = *p++; + n++; + } + } +- *q = '\0'; +- return dest; ++ if ((*p) && !(*p & 0x80) && (n < max_len-1)) { ++ *q++ = *p++; ++ *q = '\0'; ++ } else { ++ *q = '\0'; ++ } ++ return q; + } + ++/* ++ convert strings from Sjis to EUC. ++ max_len includes null termiantion. ++ size of buf must be more than max_len. ++ ++*/ ++ + void Sjis2Euc(unsigned char *buf, int max_len) + { + unsigned char *dst; + + if (buf == NULL) return; +- if ((dst = (unsigned char *)malloc(max_len*2)) != NULL) { +- if (Sjis2EucCpy(dst, buf, max_len*2) != NULL) ++ if ((dst = (unsigned char *)malloc(max_len)) != NULL) { ++ /* assign buffer for destination. */ ++ if (Sjis2EucCpy(dst, buf, max_len) != NULL) { + multibyte_safe_strncpy(buf, dst, max_len); ++ buf[max_len-1] = '\0'; /* i am a paranoire B-) */ ++ } + free(dst); +- } ++ } + } + ++/* ++ Convert one char from euc to sjis. ++ args: hi: first byte of euc code. ++ lo: second byte of euc code. ++ return: 16bit value of sjis char code. ++ */ + static unsigned int EucToSjis(unsigned char hi, unsigned char lo) + { + if (hi & 1) +@@ -88,6 +120,11 @@ + return ((hi / 2 + (hi < 0xdf ? 0x30 : 0x70)) << 8) | (lo - 2); + } + ++/* ++ Convert string from euc to sjis with coping to another buffer. ++ Theoritically, strlen(EUC) >= strlen(SJIS), ++ then it is ok that dest == src. ++ */ + unsigned char *Euc2SjisCpy(unsigned char *dest, unsigned char *src, int max_len) + { + unsigned char *p, *q; +@@ -97,7 +134,7 @@ + + p = src; + q = dest; +- while ((*p) && (n < max_len-1)) { ++ while ((*p) && (n < max_len-2)) { + if (isEucKana(*p)) { /* euc kana(2byte) -> sjis(1byte) */ + p++; + *q++ = *p++; +@@ -113,13 +150,25 @@ + *q++ = *p++; + n++; + } ++ } ++ if ((*p) && !(*p & 0x80) && n < max_len-1) { ++ *q++ = *p++; ++ *q = '\0'; ++ } else { ++ *q = '\0'; + } +- *q = '\0'; + return dest; + } ++/* ++ convert euc to sjis. ++ size of buf must be more than man_len. ++ it simply call Euc2SjisCpy(). ++ this function exists for symmetry. ++ */ + + void Euc2Sjis(unsigned char *buf, int max_len) + { + if (buf == NULL) return; +- Euc2SjisCpy(buf, buf, max_len); ++ if (max_len <= 0) return; ++ (void *)Euc2SjisCpy(buf, buf, max_len); + } diff --git a/palm/jpilot/files/patch-memo.c b/palm/jpilot/files/patch-memo.c new file mode 100644 index 0000000..44143b6 --- /dev/null +++ b/palm/jpilot/files/patch-memo.c @@ -0,0 +1,86 @@ +Index: memo.c +diff -u memo.c:1.1.1.1 memo.c:1.1.1.1.4.4 +--- memo.c:1.1.1.1 Sun Feb 4 12:58:54 2001 ++++ memo.c Sat Feb 17 21:47:54 2001 +@@ -32,10 +32,6 @@ + #include "libplugin.h" + #include "password.h" + +-#include "japanese.h" +-#include "cp1250.h" +-#include "russian.h" +- + #define MEMO_EOF 7 + + int memo_compare(const void *v1, const void *v2) +@@ -133,6 +129,12 @@ + char record[65536]; + int rec_len; + buf_rec br; ++ long char_set; ++ ++ get_pref(PREF_CHAR_SET, &char_set, NULL); ++ if (char_set != CHAR_SET_ENGLISH) { ++ if (memo->text) charset_j2p(memo->text, strlen(memo->text)+1, char_set); ++ } + + rec_len = pack_Memo(memo, record, 65535); + if (!rec_len) { +@@ -165,7 +167,7 @@ + + int get_memo_app_info(struct MemoAppInfo *ai) + { +- int num; ++ int num,i; + unsigned int rec_size; + unsigned char *buf; + long char_set; +@@ -183,18 +185,12 @@ + } + + get_pref(PREF_CHAR_SET, &char_set, NULL); +- if (char_set==CHAR_SET_JAPANESE || +- char_set==CHAR_SET_1250 || +- char_set==CHAR_SET_1251 || +- char_set==CHAR_SET_1251_B) { +- int i; +- for (i = 0; i < 16; i++) +- if (ai->category.name[i][0] != '\0') { +- if (char_set==CHAR_SET_JAPANESE) Sjis2Euc(ai->category.name[i], 16); +- if (char_set==CHAR_SET_1250) Win2Lat(ai->category.name[i], 16); +- if (char_set==CHAR_SET_1251) win1251_to_koi8(ai->category.name[i], 16); +- if (char_set==CHAR_SET_1251_B) koi8_to_win1251(ai->category.name[i], 16); +- } ++ if (char_set != CHAR_SET_ENGLISH) { ++ for (i = 0; i < 16; i++) { ++ if (ai->category.name[i][0] != '\0') { ++ charset_p2j(ai->category.name[i], 16, char_set); ++ } ++ } + } + + return 0; +@@ -218,8 +214,8 @@ + MemoList *temp_memo_list; + long keep_modified, keep_deleted; + int keep_priv; +- long char_set; + buf_rec *br; ++ long char_set; + + jpilot_logf(LOG_DEBUG, "get_memos2()\n"); + if (modified==2) { +@@ -274,12 +270,8 @@ + if ( ((br->attrib & 0x0F) != category) && category != CATEGORY_ALL) { + continue; + } +- + get_pref(PREF_CHAR_SET, &char_set, NULL); +- if (char_set==CHAR_SET_JAPANESE) Sjis2Euc(memo.text, 65536); +- if (char_set==CHAR_SET_1250) Win2Lat(memo.text, 65536); +- if (char_set==CHAR_SET_1251) win1251_to_koi8(memo.text, 65536); +- if (char_set==CHAR_SET_1251_B) koi8_to_win1251(memo.text, 65536); ++ if (memo.text) charset_p2j(memo.text, strlen(memo.text)+1, char_set); + + temp_memo_list = malloc(sizeof(MemoList)); + if (!temp_memo_list) { diff --git a/palm/jpilot/files/patch-sync.c b/palm/jpilot/files/patch-sync.c new file mode 100644 index 0000000..7099549 --- /dev/null +++ b/palm/jpilot/files/patch-sync.c @@ -0,0 +1,155 @@ +Index: sync.c +diff -u sync.c:1.1.1.1 sync.c:1.1.1.1.4.1 +--- sync.c:1.1.1.1 Sun Feb 4 12:58:55 2001 ++++ sync.c Sat Feb 17 17:07:51 2001 +@@ -105,10 +105,6 @@ + + int pdb_file_delete_record_by_id(char *DB_name, pi_uid_t uid_in); + +- +-void recode_packed_record(char *DB_name, void *record, int rec_len, long char_seet); +- +- + void sig_handler(int sig) + { + jpilot_logf(LOG_DEBUG, "caught signal SIGCHLD\n"); +@@ -624,10 +620,8 @@ + return 0; + } + get_pref(PREF_CHAR_SET, &char_set, NULL); +- if (char_set == CHAR_SET_JAPANESE) Euc2Sjis(buf, 1023); +- if (char_set == CHAR_SET_1250) Lat2Win(buf, 1023); +- if (char_set == CHAR_SET_1251) koi8_to_win1251(buf, 1023); +- if (char_set == CHAR_SET_1251_B) win1251_to_koi8(buf, 1023); ++ charset_j2p(buf,1023,char_set); ++ + dlp_AddSyncLogEntry(sd, buf); + dlp_AddSyncLogEntry(sd, "\n\r"); + +@@ -751,15 +745,6 @@ + } + } + +- get_pref(PREF_CHAR_SET, &char_set, NULL); +- if (char_set==CHAR_SET_JAPANESE || +- char_set==CHAR_SET_1250 || +- char_set==CHAR_SET_1251 || +- char_set==CHAR_SET_1251_B +- ) { +- recode_packed_record(DB_name, record, rec_len, char_set); +- } +- + ret = dlp_WriteRecord(sd, db, header.attrib & dlpRecAttrSecret, + 0, header.attrib & 0x0F, + record, rec_len, &new_id); +@@ -1469,61 +1454,6 @@ + return 0; + } + +-void recode_packed_record(char *DB_name, void *record, int rec_len, long char_set) +-{ +- /*todo move this to before the record is written out?*/ +- /* Convert to SJIS Japanese Kanji code (Palm use this code) */ +- /* or convert to different encoding */ +- /*Write the record to the Palm Pilot */ +- if (!strcmp(DB_name, "DatebookDB")) { +- struct Appointment a; +- unpack_Appointment(&a, record, rec_len); +- if (char_set == CHAR_SET_JAPANESE) Euc2Sjis(a.description, 65536); +- if (char_set == CHAR_SET_1250) Lat2Win(a.description, 65536); +- if (char_set == CHAR_SET_1251) koi8_to_win1251(a.description, 65536); +- if (char_set == CHAR_SET_1251_B) win1251_to_koi8(a.description, 65536); +- if (char_set == CHAR_SET_JAPANESE) Euc2Sjis(a.note, 65536); +- if (char_set == CHAR_SET_1250) Lat2Win(a.note, 65536); +- if (char_set == CHAR_SET_1251) koi8_to_win1251(a.note, 65536); +- if (char_set == CHAR_SET_1251_B) win1251_to_koi8(a.note, 65536); +- rec_len = pack_Appointment(&a, record, 65535); +- } +- if (!strcmp(DB_name, "AddressDB")) { +- struct Address a; +- int i; +- unpack_Address(&a, record, rec_len); +- for (i = 0; i < 19; i++) { +- if (char_set == CHAR_SET_JAPANESE) Euc2Sjis(a.entry[i], 65536); +- if (char_set == CHAR_SET_1250) Lat2Win(a.entry[i], 65536); +- if (char_set == CHAR_SET_1251) koi8_to_win1251(a.entry[i], 65536); +- if (char_set == CHAR_SET_1251_B) win1251_to_koi8(a.entry[i], 65536); +- } +- rec_len = pack_Address(&a, record, 65535); +- } +- if (!strcmp(DB_name, "ToDoDB")) { +- struct ToDo t; +- unpack_ToDo(&t, record, rec_len); +- if (char_set == CHAR_SET_JAPANESE) Euc2Sjis(t.description, 65536); +- if (char_set == CHAR_SET_1250) Lat2Win(t.description, 65536); +- if (char_set == CHAR_SET_1251) koi8_to_win1251(t.description, 65536); +- if (char_set == CHAR_SET_1251_B) win1251_to_koi8(t.description, 65536); +- if (char_set == CHAR_SET_JAPANESE) Euc2Sjis(t.note, 65536); +- if (char_set == CHAR_SET_1250) Lat2Win(t.note, 65536); +- if (char_set == CHAR_SET_1251) koi8_to_win1251(t.note, 65536); +- if (char_set == CHAR_SET_1251_B) win1251_to_koi8(t.note, 65536); +- rec_len = pack_ToDo(&t, record, 65535); +- } +- if (!strcmp(DB_name, "MemoDB")) { +- struct Memo m; +- unpack_Memo(&m, record, rec_len); +- if (char_set == CHAR_SET_JAPANESE) Euc2Sjis(m.text, 65536); +- if (char_set == CHAR_SET_1250) Lat2Win(m.text, 65536); +- if (char_set == CHAR_SET_1251) koi8_to_win1251(m.text, 65536); +- if (char_set == CHAR_SET_1251_B) win1251_to_koi8(m.text, 65536); +- rec_len = pack_Memo(&m, record, 65535); +- } +-} +- + int fast_sync_local_recs(char *DB_name, int sd, int db) + { + unsigned long new_id; +@@ -1541,7 +1471,6 @@ + char error_log_message_d[256]; + char delete_log_message[256]; + int index, size, attr, category; +- long char_set; + + jpilot_logf(LOG_DEBUG, "fast_sync_local_recs\n"); + +@@ -1599,14 +1528,6 @@ + if (ferror(pc_in)) { + break; + } +- } +- get_pref(PREF_CHAR_SET, &char_set, NULL); +- if (char_set==CHAR_SET_JAPANESE || +- char_set==CHAR_SET_1250 || +- char_set==CHAR_SET_1251 || +- char_set==CHAR_SET_1251_B +- ) { +- recode_packed_record(DB_name, record, rec_len, char_set); + } + + jpilot_logf(LOG_DEBUG, "Writing PC record to palm\n"); +Index: todo.c +diff -u todo.c:1.1.1.1 todo.c:1.1.1.1.4.3 +--- todo.c:1.1.1.1 Sun Feb 4 12:58:55 2001 ++++ todo.c Sat Feb 17 20:37:52 2001 +@@ -31,10 +31,6 @@ + #include "libplugin.h" + #include "password.h" + +-#include "japanese.h" +-#include "cp1250.h" +-#include "russian.h" +- + #define TODO_EOF 7 + + static struct ToDoAppInfo *glob_Ptodo_app_info; +@@ -241,6 +237,13 @@ + char record[65536]; + int rec_len; + buf_rec br; ++ long char_set; ++ ++ get_pref(PREF_CHAR_SET, &char_set, NULL); ++ if (char_set != CHAR_SET_ENGLISH) { ++ if (todo->description) charset_j2p(todo->description, strlen(todo->description)+1, char_set); ++ if (todo->note) charset_j2p(todo->note, strlen(todo->note)+1, char_set); ++ } diff --git a/palm/jpilot/files/patch-todo_gui.c b/palm/jpilot/files/patch-todo_gui.c new file mode 100644 index 0000000..42017b9 --- /dev/null +++ b/palm/jpilot/files/patch-todo_gui.c @@ -0,0 +1,21 @@ +Index: todo_gui.c +diff -u todo_gui.c:1.1.1.1 todo_gui.c:1.1.1.1.4.1 +--- todo_gui.c:1.1.1.1 Sun Feb 4 12:58:55 2001 ++++ todo_gui.c Sat Feb 17 17:07:51 2001 +@@ -426,12 +426,16 @@ + /*it will show it though. I allow it. */ + new_todo->description = gtk_editable_get_chars + (GTK_EDITABLE(todo_text), 0, -1); ++/* charset_j2p(new_todo->description, 65536); */ + new_todo->note = gtk_editable_get_chars + (GTK_EDITABLE(todo_text_note), 0, -1); + if (new_todo->note[0]=='\0') { + free(new_todo->note); + new_todo->note=NULL; + } ++/* else { ++ charset_j2p(new_todo->note, 65536); ++ }*/ + + for (i=0; i<NUM_TODO_CAT_ITEMS; i++) { + if (GTK_IS_WIDGET(todo_cat_menu_item2[i])) { diff --git a/palm/jpilot/files/patch-utils.c b/palm/jpilot/files/patch-utils.c new file mode 100644 index 0000000..49e3177 --- /dev/null +++ b/palm/jpilot/files/patch-utils.c @@ -0,0 +1,70 @@ +Index: utils.c +diff -u utils.c:1.1.1.1 utils.c:1.1.1.1.4.1 +--- utils.c:1.1.1.1 Sun Feb 4 12:58:55 2001 ++++ utils.c Sat Feb 17 17:07:51 2001 +@@ -40,6 +40,9 @@ + #include "plugins.h" + #include "libplugin.h" + ++#include "japanese.h" ++#include "cp1250.h" ++#include "russian.h" + + #include <pi-source.h> + #include <pi-socket.h> +@@ -1981,7 +1984,7 @@ + char *p, *q; + int n = 0; + p = src; q = dst; +- while ((*p) && n < (max_len-1)) { ++ while ((*p) && n < (max_len-2)) { + if ((*p) & 0x80) { + *q++ = *p++; + n++; +@@ -1994,11 +1997,10 @@ + n++; + } + } +- if ((*p & 0x80 ) && (n < max_len)) { +- *q = *p; +- } else { +- *q = '\0'; +- } ++ if (!(*p & 0x80 ) && (n < max_len-1)) ++ *q++ = *p++; ++ ++ *q = '\0'; + } else { + strncpy(dst, src, max_len); + } +@@ -2022,7 +2024,7 @@ + int n = 0; + + p = (char *)src; q = dst; +- while ((*p) && (n < (len -1))) { ++ while ((*p) && (n < (len -2))) { + if ((*p) & 0x80) { + *q++ = *p++; + n++; +@@ -2033,15 +2035,15 @@ + } else { + *q++ = *p++; + n++; ++ if (*(p-1) == (char)(c & 0xff)) return q; + } +- if (*(p-1) == (char)(c & 0xff)) return q; +- } +- if ((*p & 0x80) && (n < len)) { +- *q = *p; +- } else { +- *q = '\0'; + } ++ if (!(*p & 0x80) && (n < len-1)) ++ *q++ = *p++; ++ ++ *q = '\0'; + return NULL; + } else + return memccpy(dst, src, c, len); + } ++ diff --git a/palm/jpilot/files/patch-utils.h b/palm/jpilot/files/patch-utils.h new file mode 100644 index 0000000..3f5b8e4 --- /dev/null +++ b/palm/jpilot/files/patch-utils.h @@ -0,0 +1,23 @@ +Index: utils.h +diff -u utils.h:1.1.1.1 utils.h:1.1.1.1.4.3 +--- utils.h:1.1.1.1 Sun Feb 4 12:58:55 2001 ++++ utils.h Sat Feb 17 21:56:24 2001 +@@ -303,3 +303,18 @@ + + void multibyte_safe_strncpy(char *dst, char *src, size_t max_len); + char *multibyte_safe_memccpy(char *dst, const char *src, int c, size_t len); ++ ++/************************************* ++ * convert char code ++ *************************************/ ++#define charset_j2p(buf, max_len, char_set) {\ ++ if (char_set == CHAR_SET_JAPANESE) Euc2Sjis(buf, max_len);\ ++ if (char_set == CHAR_SET_1250) Lat2Win(buf,max_len);\ ++ if (char_set == CHAR_SET_1251) koi8_to_win1251(buf, max_len);\ ++ if (char_set == CHAR_SET_1251_B) win1251_to_koi8(buf, max_len);} ++#define charset_p2j(buf, max_len, char_set) {\ ++ if (char_set == CHAR_SET_JAPANESE) Sjis2Euc(buf, max_len);\ ++ if (char_set == CHAR_SET_1250) Win2Lat(buf,max_len);\ ++ if (char_set == CHAR_SET_1251) win1251_to_koi8(buf, max_len);\ ++ if (char_set == CHAR_SET_1251_B) koi8_to_win1251(buf, max_len);} ++ |