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