comparison Wnn/jserver/de_header.h @ 0:bbc77ca4def5

initial import
author Yoshiki Yazawa <yaz@cc.rim.or.jp>
date Thu, 13 Dec 2007 04:30:14 +0900
parents
children 790205f476c0
comparison
equal deleted inserted replaced
-1:000000000000 0:bbc77ca4def5
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 "jslib.h"
56 #include "commonhd.h"
57 #include "jdata.h"
58 #include "ddefine.h"
59 #include "wnn_os.h"
60
61 #define FILENAME 128
62 #define SUCCESS 1
63 #define FAILURE NULL
64
65 #define CL_MAX 32
66 #define ST_MAX 10
67 #define MAX_ENV 256
68 #define MAX_FILES 600
69 #define MAX_DIC 1200
70
71 /* constants for one client */
72 /*
73 #define USER_NAME_LEN 20
74 #define HOST_NAME_LEN 20
75 */
76 /* constants for one env. */
77 #define FILE_NAME_L 100
78
79 /* value of file.localf */
80 #define LOCAL 1
81 #define REMOTE 0
82
83 /* SERVER OPTIONS */
84 #define OPT_FORK 0x01
85 #define OPT_VERBOSE 0x02
86
87
88 /*
89 Client
90 */
91 struct cli
92 {
93 char user_name[WNN_ENVNAME_LEN];
94 char host_name[WNN_HOSTLEN];
95 int env[WNN_MAX_ENV_OF_A_CLIENT];
96 };
97
98 typedef struct cli CLIENT;
99
100 /*
101 Environment for Conversion
102 */
103 /* jisho Table for an Environment */
104
105 /* 疑似文節の選択した候補 */
106
107 struct GIJI
108 { /* ADD */
109 int eisuu; /* 半角/全角英数字 */
110 int number; /* 半角/全角/漢数字 */
111 int kigou; /* 半角/全角(JIS/ASCII)記号 */
112 };
113
114 struct cnv_env
115 {
116 char env_name[WNN_ENVNAME_LEN];
117 int ref_count;
118 int sticky; /* クライアントがいなくなってもその環境を残す */
119 int nbun; /* N(大)文節解析のN */
120 int nshobun; /* 大文節中の小文節の最大数 */
121 int hindoval; /* 幹語の頻度のパラメータ */
122 int lenval; /* 小文節長のパラメータ */
123 int jirival; /* 幹語長のパラメータ */
124 int flagval; /* 今使ったよbitのパラメータ */
125 int jishoval; /* 辞書のパラメータ */
126 int sbn_val; /* 小文節の評価値のパラメータ */
127 int dbn_len_val; /* 大文節長のパラメータ */
128 int sbn_cnt_val; /* 小文節数のパラメータ */
129
130 int suuji_val; /* 疑似品詞 数字の頻度 */
131 int kana_val; /* 疑似品詞 カナの頻度 */
132 int eisuu_val; /* 疑似品詞 英数の頻度 */
133 int kigou_val; /* 疑似品詞 記号の頻度 */
134 int toji_kakko_val; /* 疑似品詞 閉括弧の頻度 */
135 int fuzokogo_val; /* 疑似品詞 付属語の頻度 */
136 int kaikakko_val; /* 疑似品詞 開括弧の頻度 */
137
138 struct GIJI giji; /* ADD */
139
140 int fzk_fid;
141
142 int jishomax;
143 int jisho[WNN_MAX_JISHO_OF_AN_ENV];
144 int file[WNN_MAX_FILE_OF_AN_ENV];
145 };
146
147
148 /*
149 structure of Dictionary
150 */
151
152 struct wnn_dic
153 {
154 int body; /* fid */
155 int hindo; /* fid */
156 int rw;
157 int hindo_rw;
158 int enablef;
159 int nice;
160 int rev; /* reverse dict */
161 };
162
163 /*
164 structure of File
165 */
166
167 struct wnn_file
168 {
169 char name[FILE_NAME_L];
170 struct wnn_file_uniq f_uniq;
171 struct wnn_file_uniq f_uniq_org;
172 int localf;
173 int file_type;
174 int ref_count;
175 void *area;
176 char passwd[WNN_PASSWD_LEN];
177 };
178
179
180 /*
181 external variables of daemon
182 */
183 GLOBAL char SER_VERSION[] GLOBAL_VAL(_SERVER_VERSION);
184
185 GLOBAL CLIENT *client;
186 GLOBAL int max_client GLOBAL_VAL(CL_MAX);
187 GLOBAL CLIENT *c_c GLOBAL_VAL(NULL); /* this means current client */
188 GLOBAL int cur_client;
189 GLOBAL int clientp;
190
191 /* env,dic,file */
192 GLOBAL struct cnv_env *env[MAX_ENV];
193 GLOBAL struct cnv_env *c_env;
194 /* GLOBAL struct cnv_env *s_env[]; */
195 GLOBAL int max_sticky_env GLOBAL_VAL(ST_MAX);
196
197 GLOBAL struct wnn_file *files;
198 GLOBAL struct wnn_dic dic_table[MAX_DIC];
199
200 GLOBAL int wnn_errorno GLOBAL_VAL(0);
201
202 /* option flags */
203 GLOBAL int noisy GLOBAL_VAL(0);
204 GLOBAL int option_flag GLOBAL_VAL(0);
205
206 GLOBAL char jserver_dir[MAXPATHLEN];
207 GLOBAL char jserverrcfile[MAXPATHLEN];
208 GLOBAL char *hinsi_file_name GLOBAL_VAL(NULL);
209 GLOBAL char lang_dir[MAXPATHLEN];
210
211 /* atojis.c */
212 extern w_char *get_giji_knj ();
213 extern void giji_hindoup ();
214 /* b_index.c */
215 #ifdef CONVERT_by_STROKE
216 extern int create_b_index (struct JT *jt);
217 extern int b_index_add (struct JT *jt, w_char *yomi, int serial);
218 extern void b_index_delete (struct JT *jt, int serial);
219 #endif
220 /* bnsetu_kai.c */
221 extern int sbn_kai ();
222 extern int j_max ();
223 extern int getgiji ();
224 extern int is_g_eisuu ();
225 extern int getgiji_f ();
226 extern int check_bar_katakana ();
227 extern int kan_ckvt ();
228 /* daibn_kai.c */
229 extern int dbn_kai ();
230 extern int get_status ();
231 extern int zentan_able ();
232 #ifndef NO_FZK
233 extern w_char *rev_fzk ();
234 #endif
235 extern struct SYO_BNSETSU *que_reorder ();
236 extern int sbjunjo ();
237 extern int set_daibnsetu ();
238 extern int sum_hyouka ();
239 extern int ave_hyouka ();
240 extern int cmp_hyouka ();
241 /* de.c */
242 extern void del_client (void);
243 extern void daemon_fin (void);
244 extern char *gets_cur (char*, size_t);
245 extern w_char *getws_cur (w_char*, size_t);
246 extern int get2_cur (void);
247 extern int get4_cur (void);
248 extern int getc_cur (void);
249 extern void puts_cur (char*);
250 extern void puts_n_cur (char*, int);
251 extern void putws_cur (w_char*);
252 extern void putnws_cur (w_char*, int);
253 extern void put2_cur (int);
254 extern void put4_cur (int);
255 extern void putc_cur (int);
256 extern void putc_purge (void);
257 extern void js_who (void);
258 extern void js_kill (void);
259 /* dispatch.c */
260 extern void do_command ();
261 extern char *get_file_name (char*, size_t);
262 extern char *expand_file_name (char*, size_t);
263 extern void error_ret ();
264 /* do_dic_env.c */
265 extern void js_dic_add ();
266 extern int add_dic_to_env ();
267 extern int chk_dic ();
268 extern int chk_hindo ();
269 extern int get_new_dic ();
270 extern int find_dic_in_env ();
271 extern void js_dic_delete ();
272 extern void del_all_dic_in_env ();
273 extern void js_dic_list_all ();
274 extern void js_dic_list ();
275 extern void js_dic_use ();
276 extern void js_fuzokugo_set ();
277 extern void js_fuzokugo_get ();
278 extern void used_dic_fuzoku_delete ();
279 /* do_dic_no.c */
280 extern void dic_init ();
281 extern void js_dic_info ();
282 extern void put_dic_info (int);
283 extern void js_word_add ();
284 extern void js_word_delete ();
285 extern void js_word_search_by_env ();
286 extern void js_word_search ();
287 extern void js_word_comment_set ();
288 extern void js_word_info ();
289 extern void js_hinsi_name ();
290 extern void js_hinsi_number ();
291 extern void js_hinsi_list ();
292 extern void js_hinsi_dicts ();
293 extern void js_hinsi_table_set ();
294 /* do_env.c */
295 extern void js_open (void);
296 extern void js_close (void);
297 extern void env_init (void);
298 extern void js_connect (void);
299 extern void js_env_sticky (void);
300 extern void js_env_un_sticky (void);
301 extern void js_env_exist (void);
302 extern void disconnect_all_env_of_client (void);
303 extern void js_disconnect (void);
304 extern void js_env_list (void);
305 extern void js_param_set (void);
306 extern void js_param_get (void);
307 extern int envhandle (void);
308 /* do_filecom.c */
309 extern int file_init (void);
310 extern void js_mkdir (void);
311 extern void js_access (void);
312 extern void js_file_list_all (void);
313 extern void js_file_list (void);
314 extern void js_file_info (void);
315 extern void js_file_stat (void);
316 extern int file_stat (char *);
317 extern void js_file_discard (void);
318 extern void del_all_file_in_env (int);
319 extern void js_hindo_file_create (void);
320 extern void js_hindo_file_create_client (void);
321 extern void js_dic_file_create (void);
322 extern void js_file_comment_set (void);
323 extern void js_file_loaded_local (void);
324 extern void js_file_loaded (void);
325 extern int file_loaded (char *);
326 extern void js_file_send (void);
327 extern void js_file_read (void);
328 extern void js_file_write (void);
329 extern void js_file_receive (void);
330 extern int get_new_fid (void);
331 extern int find_fid_in_env (int, int);
332 extern void js_file_remove (void);
333 extern void js_file_password_set (void);
334 /* do_henkan.c */
335 extern void ret_dai ();
336 extern void ret_sho ();
337 #ifdef CONVERT_by_STROKE
338 extern void ret_B ();
339 extern void ret_daiB ();
340 #endif
341 #ifdef DEBUG
342 extern void print_dlist ();
343 extern void print_dlist1 ();
344 #endif
345 /* do_henkan1.c */
346 extern void do_kanren ();
347 extern void do_kantan_dai ();
348 extern void do_kantan_sho ();
349 extern void do_kanzen_dai ();
350 extern void do_kanzen_sho ();
351 extern void Get_knj ();
352 extern void get_knj_com ();
353 /* do_hinsi_s.c */
354 extern void js_hindo_set ();
355 /* error.c */
356 #if 0 /* not used for now */
357 extern void error_exit1 ();
358 extern void error_exit ();
359 #endif
360 extern void log_err (const char *, ...);
361 extern void log_debug (const char *, ...);
362 extern RETSIGTYPE signal_hand ();
363 extern RETSIGTYPE terminate_hand ();
364 /* error1() - For compatiblity */
365 #define error1 log_debug
366 extern void out ();
367 #ifdef DEBUG
368 #ifdef putwchar
369 #undef putwchar
370 #endif
371 extern void putwchar ();
372 extern void wsputs ();
373 #endif
374 /* fzk.c */
375 extern struct FT *fzk_read ();
376 extern struct FT *fzk_ld ();
377 extern void fzk_discard ();
378 extern int fzk_kai ();
379 extern int fzk_ckvt ();
380 /* get_kaiarea.c */
381 extern int get_kaiseki_area (size_t);
382 extern void init_work_areas (void);
383 /* hinsi_list.c */
384 extern void make_hinsi_list ();
385 extern int hinsi_table_set ();
386 /* initjserv.c */
387 extern int read_default (void);
388 extern int read_default_files (void);
389 /* jbiki.c */
390 extern int jishobiki ();
391 extern int binary1 ();
392 extern int binary ();
393 extern int Strcmpud ();
394 extern int Substrud ();
395 extern int Substrstud ();
396 extern int Substrudud ();
397 extern int word_search ();
398 extern int rd_biki ();
399 extern int rd_binary1 ();
400 extern int rd_binary ();
401 extern int rd_binary_same ();
402 #ifdef CONVERT_by_STROKE
403 /* jbiki_b.c */
404 extern int is_bwnn_rev_dict ();
405 extern int jishobiki_b ();
406 #endif
407 /* jikouho.c */
408 extern int jkt_sbn_one ();
409 #ifndef NO_KATA
410 extern struct JKT_SBN *get_kata_kouho ();
411 #endif
412 extern struct JKT_SBN *get_hira_kouho ();
413 extern int jkt_get_syo ();
414 extern int get_zen_giji ();
415 /* jikouho_d.c */
416 extern int jkt_get_dai ();
417 extern int get_jkt_status ();
418 extern struct DSD_DBN *get_dsd_dbn ();
419 extern struct DSD_DBN *get_dsd_dbn ();
420 extern struct DSD_SBN *get_dsd_sbn ();
421 extern int dbn_set ();
422 extern int cnt_sone ();
423 /* jishoop.c */
424 extern int word_add ();
425 extern int word_comment_set ();
426 extern int word_delete ();
427 extern void kanjiadd ();
428 extern int dic_in_envp ();
429 extern int hindo_file_size_justify ();
430 /* jishosub.c */
431 extern int inspect ();
432 extern int get_yomi_from_serial ();
433 extern int get_yomi_from_serial ();
434 /* jmt0.c */
435 extern void init_jmt (void);
436 extern int jmt_set (int);
437 /* mknode0.c */
438 extern int init_bzd (void);
439 extern int init_ichbnp ();
440 extern void clr_node ();
441 extern void freebzd ();
442 extern void freeibsp ();
443 extern struct BZD *getbzdsp ();
444 extern struct ICHBNP *getibsp ();
445 extern struct fzkkouho *getfzkoh_body ();
446 extern struct fzkkouho *getfzkoh1_body ();
447 extern int mknode ();
448 /* mknode1.c */
449 extern int init_sbn ();
450 extern int get_area ();
451 extern void free_area ();
452 extern void freesbn ();
453 extern void clr_sbn_node ();
454 extern struct SYO_BNSETSU *getsbnsp ();
455 /* mknode2.c */
456 extern int init_jktdbn ();
457 extern int init_jktsbn ();
458 extern int init_jktsone ();
459 extern void freejktdbn ();
460 extern void freejktsbn ();
461 extern struct JKT_DBN *getjktdbn ();
462 extern struct JKT_SBN *getjktsbn ();
463 extern struct JKT_SONE *getjktsone ();
464 /* rd_jishoop.c */
465 extern int rd_word_add1 (struct JT *, w_char *, int, w_char *, w_char *);
466 extern int rd_word_delete1 (struct JT *, struct HJT *, int);
467 extern int inspect_rd (int, int, w_char *, struct jdata *);
468 /* readfile.c */
469 extern int read_file (struct wnn_file *);
470 extern int ud_realloc_hontai (struct JT *);
471 extern int ud_realloc_kanji (struct JT *);
472 extern int ud_realloc_serial (struct JT *);
473 extern int ud_realloc_table (struct JT *);
474 extern int rd_realloc_ri1 (struct JT *, int);
475 extern int hindo_file_realloc (struct HJT *);
476 #ifdef CONVERT_by_STROKE
477 extern int rd_realloc_bind (struct JT *);
478 #endif
479 extern int must_write_file (struct wnn_file *, struct wnn_file_uniq *);
480 extern void clear_dirty_bit (struct wnn_file *);
481 extern int rcv_file (struct wnn_file *, int);
482 extern int write_file (struct wnn_file *, char *);
483 extern int discardfile (struct wnn_file *);
484 extern int create_hindo_file1 (struct wnn_file *, char *, w_char *, char *);
485 extern int match_dic_and_hindo_p (struct wnn_file *, struct wnn_file *);
486 extern int file_comment_set (struct wnn_file *, w_char *);
487 extern int file_password_set (struct wnn_file *, int, char *, char *);
488 /* renbn_kai.c */
489 #ifndef NO_FZK
490 extern int renbn_kai (int, int, int, w_char*, int, int, int, int, int, struct DSD_DBN **);
491 #else /* NO_FZK */
492 extern int renbn_kai (int, int, int, int, int, int, int, int, struct DSD_DBN **);
493 #endif /* NO_FZK */
494 #ifndef NO_FZK
495 extern int tan_dai (int, int, int, w_char *, int, int, int, struct DSD_DBN **);
496 #else /* NO_FZK */
497 extern int tan_dai (int, int, int, int, int, int, struct DSD_DBN **);
498 #endif /* NO_FZK */
499 #ifndef NO_FZK
500 extern int tan_syo (int, int, int, w_char*, int, int, struct DSD_SBN **);
501 #else /* NO_FZK */
502 extern int tan_syo (int, int, int, int, int, struct DSD_SBN **);
503 #endif /* NO_FZK */
504 /* sisheng.c */
505 extern int get_sisheng ();
506 extern w_char *biki_sisheng ();
507 extern unsigned int diff_sisheng ();
508 /* snd_rcv.c */
509 extern int fopen_read_cur ();
510 extern int fopen_write_cur ();
511 extern int fread_cur ();
512 extern int xgetc_cur ();
513 extern void xungetc_cur ();
514 extern void fwrite_cur ();
515 extern void xputc_cur ();
516 extern void fclose_cur ();
517 /* w_string.c */
518 extern void Sreverse ();
519 extern int Sstrcpy ();
520 extern int Strcmp ();
521 extern int Substr ();
522 extern int Strncmp ();
523 extern w_char *Strcpy ();
524 extern w_char *Strncpy ();
525 extern int Strlen ();
526 /* gethinsi.c */
527 extern int wnn_loadhinsi ();
528 extern w_char *wnn_hinsi_name ();
529 extern int wnn_hinsi_number ();
530 extern int wnn_hinsi_list ();
531 extern int wnn_has_hinsi ();
532 extern int wnn_find_hinsi_by_name ();
533 extern char *wnn_get_hinsi_name ();
534 extern int wnn_get_fukugou_component_body ();
535 extern int wnn_get_fukugou_component ();
536 /* bdic.c */
537 extern void check_backup ();
538 extern void delete_tmp_file ();
539 extern char *make_backup_file ();
540 extern char *make_tmp_file ();
541 extern void move_tmp_to_org ();
542 extern int output_file_header ();
543 extern int input_file_header ();
544 extern int output_file_uniq (struct wnn_file_uniq* funiq, FILE* ofpter);
545 extern int check_inode ();
546 extern int change_file_uniq ();
547 extern int f_uniq_cmp ();
548 extern void Get_knj2 ();
549 extern void get_kanji_str ();
550 extern void Get_kanji_str_r ();
551 extern unsigned char *kanjiaddr ();
552 extern int create_null_dic ();
553 extern int create_hindo_file ();
554 extern int input_header_jt ();
555 extern int output_header_jt ();
556 extern int input_header_hjt ();
557 extern int output_header_hjt ();
558 /* dic_atojis.c */
559 extern void Get_kanji ();
560 extern void Get_knj1 ();
561 /* revdic.c */
562 extern int little_endian ();
563 extern int revdic ();
564 /* hindo.c */
565 extern int asshuku ();
566 extern int motoni2 ();
567 /* pwd.c */
568 extern int new_pwd ();
569 extern int check_pwd ();
570
571 #endif /* JSERVER_DE_HEADER_H */
572