1 /* 2 * $Id: de_header.h,v 1.20 2004/12/29 17:45:32 aonoto Exp $ 3 */ 4 5 /* 6 * FreeWnn is a network-extensible Kana-to-Kanji conversion system. 7 * This file is part of FreeWnn. 8 * 9 * Copyright Kyoto University Research Institute for Mathematical Sciences 10 * 1987, 1988, 1989, 1990, 1991, 1992 11 * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999 12 * Copyright ASTEC, Inc. 1987, 1988, 1989, 1990, 1991, 1992 13 * Copyright FreeWnn Project 1999, 2000, 2001, 2002, 2003, 2004 14 * 15 * Maintainer: FreeWnn Project <freewnn@tomo.gr.jp> 16 * 17 * This program is free software; you can redistribute it and/or modify 18 * it under the terms of the GNU General Public License as published by 19 * the Free Software Foundation; either version 2 of the License, or 20 * (at your option) any later version. 21 * 22 * This program is distributed in the hope that it will be useful, 23 * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 * GNU General Public License for more details. 26 * 27 * You should have received a copy of the GNU General Public License 28 * along with this program; if not, write to the Free Software 29 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 30 */ 31 32 #ifndef JSERVER_DE_HEADER_H 33 #define JSERVER_DE_HEADER_H 1 34 35 #ifdef GLOBAL_VALUE_DEFINE 36 #define GLOBAL 37 #define GLOBAL_VAL(v) = (v) 38 #else 39 #define GLOBAL extern 40 #define GLOBAL_VAL(v) 41 #endif /* GLOBAL_VALUE_DEFINE */ 42 43 #define DAEMON 44 45 #if defined(CHINESE) 46 #define WNN_DAEMON_NAME "cserver" 47 #else 48 # if defined(KOREAN) 49 # define WNN_DAEMON_NAME "kserver" 50 # else 51 # define WNN_DAEMON_NAME "jserver" 52 # endif /* KOREAN */ 53 #endif /* CHINESE */ 54 55 #include <netdb.h> 56 57 #include "jslib.h" 58 #include "commonhd.h" 59 #include "jdata.h" 60 #include "ddefine.h" 61 #include "wnn_os.h" 62 63 #define FILENAME 128 64 #define SUCCESS 1 65 #define FAILURE NULL 66 67 #define CL_MAX 32 68 #define ST_MAX 10 69 #define MAX_ENV 256 70 #define MAX_FILES 600 71 #define MAX_DIC 1200 72 73 /* constants for one client */ 74 /* 75 #define USER_NAME_LEN 20 76 #define HOST_NAME_LEN 20 77 */ 78 /* constants for one env. */ 79 #define FILE_NAME_L 100 80 81 /* value of file.localf */ 82 #define LOCAL 1 83 #define REMOTE 0 84 85 /* SERVER OPTIONS */ 86 #define OPT_FORK 0x01 87 #define OPT_VERBOSE 0x02 88 89 90 /* 91 Client 92 */ 93 struct cli 94 { 95 char user_name[WNN_ENVNAME_LEN]; 96 char host_name[WNN_HOSTLEN]; 97 int env[WNN_MAX_ENV_OF_A_CLIENT]; 98 }; 99 100 typedef struct cli CLIENT; 101 102 /* 103 Environment for Conversion 104 */ 105 /* jisho Table for an Environment */ 106 107 /* ����ʸ����������� */ 108 109 struct GIJI 110 { /* ADD */ 111 int eisuu; /* Ⱦ��/���ѱѿ��� */ 112 int number; /* Ⱦ��/����/������ */ 113 int kigou; /* Ⱦ��/����(JIS/ASCII)���� */ 114 }; 115 116 struct cnv_env 117 { 118 char env_name[WNN_ENVNAME_LEN]; 119 int ref_count; 120 int sticky; /* ���饤����Ȥ����ʤ��ʤäƤ⤽�δĶ���Ĥ� */ 121 int nbun; /* ��(��)ʸ����ϤΣ� */ 122 int nshobun; /* ��ʸ����ξ�ʸ��κ���� */ 123 int hindoval; /* ��������٤Υѥ��� */ 124 int lenval; /* ��ʸ��Ĺ�Υѥ��� */ 125 int jirival; /* ����Ĺ�Υѥ��� */ 126 int flagval; /* ���Ȥä���bit�Υѥ��� */ 127 int jishoval; /* ����Υѥ��� */ 128 int sbn_val; /* ��ʸ���ɾ���ͤΥѥ��� */ 129 int dbn_len_val; /* ��ʸ��Ĺ�Υѥ��� */ 130 int sbn_cnt_val; /* ��ʸ����Υѥ��� */ 131 132 int suuji_val; /* �����ʻ� ���������� */ 133 int kana_val; /* �����ʻ� ���ʤ����� */ 134 int eisuu_val; /* �����ʻ� �ѿ������� */ 135 int kigou_val; /* �����ʻ� ��������� */ 136 int toji_kakko_val; /* �����ʻ� �ij�̤����� */ 137 int fuzokogo_val; /* �����ʻ� ��°������� */ 138 int kaikakko_val; /* �����ʻ� ����̤����� */ 139 140 struct GIJI giji; /* ADD */ 141 142 int fzk_fid; 143 144 int jishomax; 145 int jisho[WNN_MAX_JISHO_OF_AN_ENV]; 146 int file[WNN_MAX_FILE_OF_AN_ENV]; 147 }; 148 149 150 /* 151 structure of Dictionary 152 */ 153 154 struct wnn_dic 155 { 156 int body; /* fid */ 157 int hindo; /* fid */ 158 int rw; 159 int hindo_rw; 160 int enablef; 161 int nice; 162 int rev; /* reverse dict */ 163 }; 164 165 /* 166 structure of File 167 */ 168 169 struct wnn_file 170 { 171 char name[FILE_NAME_L]; 172 struct wnn_file_uniq f_uniq; 173 struct wnn_file_uniq f_uniq_org; 174 int localf; 175 int file_type; 176 int ref_count; 177 void *area; 178 char passwd[WNN_PASSWD_LEN]; 179 }; 180 181 182 /* 183 external variables of daemon 184 */ 185 GLOBAL char SER_VERSION[] GLOBAL_VAL(_SERVER_VERSION); 186 187 GLOBAL CLIENT *client; 188 GLOBAL int max_client GLOBAL_VAL(CL_MAX); 189 GLOBAL CLIENT *c_c GLOBAL_VAL(NULL); /* this means current client */ 190 GLOBAL int cur_client; 191 GLOBAL int clientp; 192 193 /* env,dic,file */ 194 GLOBAL struct cnv_env *env[MAX_ENV]; 195 GLOBAL struct cnv_env *c_env; 196 /* GLOBAL struct cnv_env *s_env[]; */ 197 GLOBAL int max_sticky_env GLOBAL_VAL(ST_MAX); 198 199 GLOBAL struct wnn_file *files; 200 GLOBAL struct wnn_dic dic_table[MAX_DIC]; 201 202 GLOBAL int wnn_errorno GLOBAL_VAL(0); 203 204 /* option flags */ 205 GLOBAL int noisy GLOBAL_VAL(0); 206 GLOBAL int option_flag GLOBAL_VAL(0); 207 208 GLOBAL char jserver_dir[MAXPATHLEN]; 209 GLOBAL char jserverrcfile[MAXPATHLEN]; 210 211 #define MAXLISTENADDR 256 212 GLOBAL char listenaddr[MAXLISTENADDR][NI_MAXHOST]; 213 214 GLOBAL char *hinsi_file_name GLOBAL_VAL(NULL); 215 GLOBAL char lang_dir[MAXPATHLEN]; 216 217 /* atojis.c */ 218 extern w_char *get_giji_knj (); 219 extern void giji_hindoup (); 220 /* b_index.c */ 221 #ifdef CONVERT_by_STROKE 222 extern int create_b_index (struct JT *jt); 223 extern int b_index_add (struct JT *jt, w_char *yomi, int serial); 224 extern void b_index_delete (struct JT *jt, int serial); 225 #endif 226 /* bnsetu_kai.c */ 227 extern int sbn_kai (); 228 extern int j_max (); 229 extern int getgiji (); 230 extern int is_g_eisuu (); 231 extern int getgiji_f (); 232 extern int check_bar_katakana (); 233 extern int kan_ckvt (); 234 /* daibn_kai.c */ 235 extern int dbn_kai (); 236 extern int get_status (); 237 extern int zentan_able (); 238 #ifndef NO_FZK 239 extern w_char *rev_fzk (); 240 #endif 241 extern struct SYO_BNSETSU *que_reorder (); 242 extern int sbjunjo (); 243 extern int set_daibnsetu (); 244 extern int sum_hyouka (); 245 extern int ave_hyouka (); 246 extern int cmp_hyouka (); 247 /* de.c */ 248 extern void del_client (void); 249 extern void daemon_fin (void); 250 extern char *gets_cur (char*, size_t); 251 extern w_char *getws_cur (w_char*, size_t); 252 extern int get2_cur (void); 253 extern int get4_cur (void); 254 extern int getc_cur (void); 255 extern void puts_cur (char*); 256 extern void puts_n_cur (char*, int); 257 extern void putws_cur (w_char*); 258 extern void putnws_cur (w_char*, int); 259 extern void put2_cur (int); 260 extern void put4_cur (int); 261 extern void putc_cur (int); 262 extern void putc_purge (void); 263 extern void js_who (void); 264 extern void js_kill (void); 265 /* dispatch.c */ 266 extern void do_command (); 267 extern char *get_file_name (char*, size_t); 268 extern char *expand_file_name (char*, size_t); 269 extern void error_ret (); 270 /* do_dic_env.c */ 271 extern void js_dic_add (); 272 extern int add_dic_to_env (); 273 extern int chk_dic (); 274 extern int chk_hindo (); 275 extern int get_new_dic (); 276 extern int find_dic_in_env (); 277 extern void js_dic_delete (); 278 extern void del_all_dic_in_env (); 279 extern void js_dic_list_all (); 280 extern void js_dic_list (); 281 extern void js_dic_use (); 282 extern void js_fuzokugo_set (); 283 extern void js_fuzokugo_get (); 284 extern void used_dic_fuzoku_delete (); 285 /* do_dic_no.c */ 286 extern void dic_init (); 287 extern void js_dic_info (); 288 extern void put_dic_info (int); 289 extern void js_word_add (); 290 extern void js_word_delete (); 291 extern void js_word_search_by_env (); 292 extern void js_word_search (); 293 extern void js_word_comment_set (); 294 extern void js_word_info (); 295 extern void js_hinsi_name (); 296 extern void js_hinsi_number (); 297 extern void js_hinsi_list (); 298 extern void js_hinsi_dicts (); 299 extern void js_hinsi_table_set (); 300 /* do_env.c */ 301 extern void js_open (void); 302 extern void js_close (void); 303 extern void env_init (void); 304 extern void js_connect (void); 305 extern void js_env_sticky (void); 306 extern void js_env_un_sticky (void); 307 extern void js_env_exist (void); 308 extern void disconnect_all_env_of_client (void); 309 extern void js_disconnect (void); 310 extern void js_env_list (void); 311 extern void js_param_set (void); 312 extern void js_param_get (void); 313 extern int envhandle (void); 314 /* do_filecom.c */ 315 extern int file_init (void); 316 extern void js_mkdir (void); 317 extern void js_access (void); 318 extern void js_file_list_all (void); 319 extern void js_file_list (void); 320 extern void js_file_info (void); 321 extern void js_file_stat (void); 322 extern int file_stat (char *); 323 extern void js_file_discard (void); 324 extern void del_all_file_in_env (int); 325 extern void js_hindo_file_create (void); 326 extern void js_hindo_file_create_client (void); 327 extern void js_dic_file_create (void); 328 extern void js_file_comment_set (void); 329 extern void js_file_loaded_local (void); 330 extern void js_file_loaded (void); 331 extern int file_loaded (char *); 332 extern void js_file_send (void); 333 extern void js_file_read (void); 334 extern void js_file_write (void); 335 extern void js_file_receive (void); 336 extern int get_new_fid (void); 337 extern int find_fid_in_env (int, int); 338 extern void js_file_remove (void); 339 extern void js_file_password_set (void); 340 /* do_henkan.c */ 341 extern void ret_dai (); 342 extern void ret_sho (); 343 #ifdef CONVERT_by_STROKE 344 extern void ret_B (); 345 extern void ret_daiB (); 346 #endif 347 #ifdef DEBUG 348 extern void print_dlist (); 349 extern void print_dlist1 (); 350 #endif 351 /* do_henkan1.c */ 352 extern void do_kanren (); 353 extern void do_kantan_dai (); 354 extern void do_kantan_sho (); 355 extern void do_kanzen_dai (); 356 extern void do_kanzen_sho (); 357 extern void Get_knj (); 358 extern void get_knj_com (); 359 /* do_hinsi_s.c */ 360 extern void js_hindo_set (); 361 /* error.c */ 362 #if 0 /* not used for now */ 363 extern void error_exit1 (); 364 extern void error_exit (); 365 #endif 366 extern void log_err (const char *, ...); 367 extern void log_debug (const char *, ...); 368 extern RETSIGTYPE signal_hand (); 369 extern RETSIGTYPE terminate_hand (); 370 /* error1() - For compatiblity */ 371 #define error1 log_debug 372 extern void out (); 373 #ifdef DEBUG 374 #ifdef putwchar 375 #undef putwchar 376 #endif 377 extern void putwchar (); 378 extern void wsputs (); 379 #endif 380 /* fzk.c */ 381 extern struct FT *fzk_read (); 382 extern struct FT *fzk_ld (); 383 extern void fzk_discard (); 384 extern int fzk_kai (); 385 extern int fzk_ckvt (); 386 /* get_kaiarea.c */ 387 extern int get_kaiseki_area (size_t); 388 extern void init_work_areas (void); 389 /* hinsi_list.c */ 390 extern void make_hinsi_list (); 391 extern int hinsi_table_set (); 392 /* initjserv.c */ 393 extern int read_default (void); 394 extern int read_default_files (void); 395 /* jbiki.c */ 396 extern int jishobiki (); 397 extern int binary1 (); 398 extern int binary (); 399 extern int Strcmpud (); 400 extern int Substrud (); 401 extern int Substrstud (); 402 extern int Substrudud (); 403 extern int word_search (); 404 extern int rd_biki (); 405 extern int rd_binary1 (); 406 extern int rd_binary (); 407 extern int rd_binary_same (); 408 #ifdef CONVERT_by_STROKE 409 /* jbiki_b.c */ 410 extern int is_bwnn_rev_dict (); 411 extern int jishobiki_b (); 412 #endif 413 /* jikouho.c */ 414 extern int jkt_sbn_one (); 415 #ifndef NO_KATA 416 extern struct JKT_SBN *get_kata_kouho (); 417 #endif 418 extern struct JKT_SBN *get_hira_kouho (); 419 extern int jkt_get_syo (); 420 extern int get_zen_giji (); 421 /* jikouho_d.c */ 422 extern int jkt_get_dai (); 423 extern int get_jkt_status (); 424 extern struct DSD_DBN *get_dsd_dbn (); 425 extern struct DSD_DBN *get_dsd_dbn (); 426 extern struct DSD_SBN *get_dsd_sbn (); 427 extern int dbn_set (); 428 extern int cnt_sone (); 429 /* jishoop.c */ 430 extern int word_add (); 431 extern int word_comment_set (); 432 extern int word_delete (); 433 extern void kanjiadd (); 434 extern int dic_in_envp (); 435 extern int hindo_file_size_justify (); 436 /* jishosub.c */ 437 extern int inspect (); 438 extern int get_yomi_from_serial (); 439 extern int get_yomi_from_serial (); 440 /* jmt0.c */ 441 extern void init_jmt (void); 442 extern int jmt_set (int); 443 /* mknode0.c */ 444 extern int init_bzd (void); 445 extern int init_ichbnp (); 446 extern void clr_node (); 447 extern void freebzd (); 448 extern void freeibsp (); 449 extern struct BZD *getbzdsp (); 450 extern struct ICHBNP *getibsp (); 451 extern struct fzkkouho *getfzkoh_body (); 452 extern struct fzkkouho *getfzkoh1_body (); 453 extern int mknode (); 454 /* mknode1.c */ 455 extern int init_sbn (); 456 extern int get_area (); 457 extern void free_area (); 458 extern void freesbn (); 459 extern void clr_sbn_node (); 460 extern struct SYO_BNSETSU *getsbnsp (); 461 /* mknode2.c */ 462 extern int init_jktdbn (); 463 extern int init_jktsbn (); 464 extern int init_jktsone (); 465 extern void freejktdbn (); 466 extern void freejktsbn (); 467 extern struct JKT_DBN *getjktdbn (); 468 extern struct JKT_SBN *getjktsbn (); 469 extern struct JKT_SONE *getjktsone (); 470 /* rd_jishoop.c */ 471 extern int rd_word_add1 (struct JT *, w_char *, int, w_char *, w_char *); 472 extern int rd_word_delete1 (struct JT *, struct HJT *, int); 473 extern int inspect_rd (int, int, w_char *, struct jdata *); 474 /* readfile.c */ 475 extern int read_file (struct wnn_file *); 476 extern int ud_realloc_hontai (struct JT *); 477 extern int ud_realloc_kanji (struct JT *); 478 extern int ud_realloc_serial (struct JT *); 479 extern int ud_realloc_table (struct JT *); 480 extern int rd_realloc_ri1 (struct JT *, int); 481 extern int hindo_file_realloc (struct HJT *); 482 #ifdef CONVERT_by_STROKE 483 extern int rd_realloc_bind (struct JT *); 484 #endif 485 extern int must_write_file (struct wnn_file *, struct wnn_file_uniq *); 486 extern void clear_dirty_bit (struct wnn_file *); 487 extern int rcv_file (struct wnn_file *, int); 488 extern int write_file (struct wnn_file *, char *); 489 extern int discardfile (struct wnn_file *); 490 extern int create_hindo_file1 (struct wnn_file *, char *, w_char *, char *); 491 extern int match_dic_and_hindo_p (struct wnn_file *, struct wnn_file *); 492 extern int file_comment_set (struct wnn_file *, w_char *); 493 extern int file_password_set (struct wnn_file *, int, char *, char *); 494 /* renbn_kai.c */ 495 #ifndef NO_FZK 496 extern int renbn_kai (int, int, int, w_char*, int, int, int, int, int, struct DSD_DBN **); 497 #else /* NO_FZK */ 498 extern int renbn_kai (int, int, int, int, int, int, int, int, struct DSD_DBN **); 499 #endif /* NO_FZK */ 500 #ifndef NO_FZK 501 extern int tan_dai (int, int, int, w_char *, int, int, int, struct DSD_DBN **); 502 #else /* NO_FZK */ 503 extern int tan_dai (int, int, int, int, int, int, struct DSD_DBN **); 504 #endif /* NO_FZK */ 505 #ifndef NO_FZK 506 extern int tan_syo (int, int, int, w_char*, int, int, struct DSD_SBN **); 507 #else /* NO_FZK */ 508 extern int tan_syo (int, int, int, int, int, struct DSD_SBN **); 509 #endif /* NO_FZK */ 510 /* sisheng.c */ 511 extern int get_sisheng (); 512 extern w_char *biki_sisheng (); 513 extern unsigned int diff_sisheng (); 514 /* snd_rcv.c */ 515 extern int fopen_read_cur (); 516 extern int fopen_write_cur (); 517 extern int fread_cur (); 518 extern int xgetc_cur (); 519 extern void xungetc_cur (); 520 extern void fwrite_cur (); 521 extern void xputc_cur (); 522 extern void fclose_cur (); 523 /* w_string.c */ 524 extern void Sreverse (); 525 extern int Sstrcpy (); 526 extern int Strcmp (); 527 extern int Substr (); 528 extern int Strncmp (); 529 extern w_char *Strcpy (); 530 extern w_char *Strncpy (); 531 extern int Strlen (); 532 /* gethinsi.c */ 533 extern int wnn_loadhinsi (); 534 extern w_char *wnn_hinsi_name (); 535 extern int wnn_hinsi_number (); 536 extern int wnn_hinsi_list (); 537 extern int wnn_has_hinsi (); 538 extern int wnn_find_hinsi_by_name (); 539 extern char *wnn_get_hinsi_name (); 540 extern int wnn_get_fukugou_component_body (); 541 extern int wnn_get_fukugou_component (); 542 /* bdic.c */ 543 extern void check_backup (); 544 extern void delete_tmp_file (); 545 extern char *make_backup_file (); 546 extern char *make_tmp_file (); 547 extern void move_tmp_to_org (); 548 extern int output_file_header (); 549 extern int input_file_header (); 550 extern int output_file_uniq (struct wnn_file_uniq* funiq, FILE* ofpter); 551 extern int check_inode (); 552 extern int change_file_uniq (); 553 extern int f_uniq_cmp (); 554 extern void Get_knj2 (); 555 extern void get_kanji_str (); 556 extern void Get_kanji_str_r (); 557 extern unsigned char *kanjiaddr (); 558 extern int create_null_dic (); 559 extern int create_hindo_file (); 560 extern int input_header_jt (); 561 extern int output_header_jt (); 562 extern int input_header_hjt (); 563 extern int output_header_hjt (); 564 /* dic_atojis.c */ 565 extern void Get_kanji (); 566 extern void Get_knj1 (); 567 /* revdic.c */ 568 extern int little_endian (); 569 extern int revdic (); 570 /* hindo.c */ 571 extern int asshuku (); 572 extern int motoni2 (); 573 /* pwd.c */ 574 extern int new_pwd (); 575 extern int check_pwd (); 576 577 #endif /* JSERVER_DE_HEADER_H */ 578 579