static void cb_button_save(GtkButton *button, gpointer user_data) { if (b_contrib) { ts_upload(); } else { int i; for(i=0; i<del_ofsN; i++) { fseek(tsin_hand.fph, del_ofs[i], SEEK_SET); char clen; fread(&clen, 1, 1, tsin_hand.fph); if (clen > 0) { clen = -clen; fseek(tsin_hand.fph, del_ofs[i], SEEK_SET); fwrite(&clen, 1, 1, tsin_hand.fph); } } fflush(tsin_hand.fph); #if UNIX unix_exec(GCIN_BIN_DIR"/tsd2a32 %s -o tsin.tmp", current_tsin_fname); unix_exec(GCIN_BIN_DIR"/tsa2d32 tsin.tmp %s", current_tsin_fname); #else win32exec_va("tsd2a32", current_tsin_fname, "-o", "tsin.tmp", NULL); win32exec_va("tsa2d32", "tsin.tmp", current_tsin_fname, NULL); #endif } exit(0); }
gboolean init_tsin_table_fname(INMD *p, char *fname) { char fname_idx[256], gtab_phrase_src[256], gtabfname[256]; if (p->filename_append) { // dbg("filename_append %s\n",p->filename_append); strcpy(fname, p->filename_append); strcpy(gtabfname, fname); } else if (p->filename) { get_hime_user_fname(p->filename, fname); get_hime_user_or_sys_fname(p->filename, gtabfname); } else { dbg("no file name\n"); return FALSE; } strcat(fname, ".tsin-db"); strcat(strcpy(fname_idx, fname), ".idx"); strcat(strcpy(gtab_phrase_src, fname), ".src"); // dbg("init_tsin_table %s\n", fname); putenv("HIME_NO_RELOAD="); if (access(fname, W_OK) < 0 || access(fname_idx, W_OK) < 0) { unix_exec(HIME_BIN_DIR"/hime-tsin2gtab-phrase %s %s", gtabfname, gtab_phrase_src); unix_exec(HIME_BIN_DIR"/hime-tsa2d32 %s %s", gtab_phrase_src, fname); } return TRUE; }
void load_tsin_contrib() { char minus_priv[128]; #define PRIVATE_PHRASES "private-phrases" gen_bin(PRIVATE_PHRASES, private_file_src, minus_priv); #define CONTRIBUTED_PHRASES "contributed-phrases" char minus_contributed[128]; gen_bin(CONTRIBUTED_PHRASES, contributed_file_src, minus_contributed); #define DOWNLOADED_PHRASES "downloaded-phrases" char minus_downloaded[128]; gen_bin(DOWNLOADED_PHRASES, downloaded_file_src, minus_downloaded); char sys_tsfname[128], contrib_temp[128]; get_sys_table_file_name(tsin32_f, sys_tsfname); get_gcin_user_fname("contrib-temp", contrib_temp); #if UNIX unix_exec(GCIN_BIN_DIR"/tsd2a32 -b -minus %s -o %s%s%s%s", sys_tsfname, contrib_temp, minus_priv, minus_contributed, minus_downloaded); #else char *argv[32]; int argc=0; argv[argc++]="-b"; argv[argc++]="-o"; argv[argc++]=contrib_temp; argv[argc++]="-minus"; argv[argc++]=sys_tsfname; if (minus_priv[0]) { argv[argc++]="-minus"; argv[argc++]=PRIVATE_PHRASES; } if (minus_contributed[0]) { argv[argc++]="-minus"; argv[argc++]=CONTRIBUTED_PHRASES; } if (minus_downloaded[0]) { argv[argc++]="-minus"; argv[argc++]=DOWNLOADED_PHRASES; } win32exec_argv("tsd2a32.exe", argc, argv); #endif free_tsin(); load_tsin_db0(contrib_temp, FALSE); }
static void gen_bin(char *name, char *full_src, char *minus) { // doesn't have to use full path because chdir(gcin user dir) minus[0]=0; char src[128]; strcat(strcpy(src, name),".src"); dbg("gen_bin %s %s\n", name, src); if (get_gcin_user_fname(src, full_src)) { dbg("%s %s\n", name, full_src); #if UNIX putenv("GCIN_NO_RELOAD="); unix_exec(GCIN_BIN_DIR"/tsa2d32 %s %s", src, name); #else _putenv("GCIN_NO_RELOAD=Y"); win32exec_va("tsa2d32", src, name, NULL); #endif sprintf(minus, " -minus %s", name); } else dbg("not exist %s\n", full_src); }