1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-19 03:52:17 +00:00
freebsd-ports/japanese/FreeWnn-server/files/patch-Wnn-etc-revdic.c
Hiroki Sato 4b38031b7f - Improve buffer management. This change should fix issues on amd64.
- Fix daemonizing part.  It now returns the exit status correctly.
- Fix *_{pre,post}cmd handling in the rc.d scripts.  Plus,
  wnntouch is now invoked just before running the server process.
- Use ${*_WNNMANDIR} in Makefile to use the common patchset
  in both FreeWnn-server and -lib.
- Integrate libtool22 change and regenerate patch files.
2010-01-02 14:47:20 +00:00

688 lines
16 KiB
C

Index: Wnn/etc/revdic.c
===================================================================
RCS file: /home/cvs/private/hrs/freewnn/Wnn/etc/revdic.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -p -r1.1.1.1 -r1.2
--- Wnn/etc/revdic.c 20 Dec 2008 07:13:30 -0000 1.1.1.1
+++ Wnn/etc/revdic.c 20 Dec 2008 15:22:40 -0000 1.2
@@ -5,7 +5,7 @@
/*
* FreeWnn is a network-extensible Kana-to-Kanji conversion system.
* This file is part of FreeWnn.
- *
+ *
* Copyright Kyoto University Research Institute for Mathematical Sciences
* 1987, 1988, 1989, 1990, 1991, 1992
* Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999
@@ -35,13 +35,11 @@
#include "jh.h"
#include "jdata.h"
-
#ifndef min
#define min(a, b) ((a > b)? b:a)
#define max(a, b) ((a < b)? b:a)
#endif
-
/*
* rev_ud_hontai(hostart, maxhontai)
* rev_ud_table(tary, maxtable)
@@ -51,96 +49,81 @@
static int tmptmp;
-#define rev_int(x) (tmptmp = *(x), *(x) = ((tmptmp >> 24) & 0xff) | \
- (((tmptmp >> 16) & 0xff) << 8) | \
- (((tmptmp >> 8) & 0xff) << 16) | \
- (((tmptmp & 0xff) << 24)))
+#define rev_int(x) (tmptmp = *(x), *(x) = ((tmptmp >> 24) & 0xff) | \
+ (((tmptmp >> 16) & 0xff) << 8) | \
+ (((tmptmp >> 8) & 0xff) << 16) | \
+ (((tmptmp & 0xff) << 24)))
#define rev_short(x) (tmptmp = *(x), *(x) = ((tmptmp >> 8) & 0xff) | \
- ((tmptmp & 0xff) << 8))
+ ((tmptmp & 0xff) << 8))
#define rev_int_org(x) (tmptmp = *(x), *(x) = ((tmptmp >> 24) & 0xff) | \
- (((tmptmp >> 16) & 0xff) << 8) | \
- (((tmptmp >> 8) & 0xff) << 16) | \
- ((tmptmp & 0xff) << 24), tmptmp)
+ (((tmptmp >> 16) & 0xff) << 8) | \
+ (((tmptmp >> 8) & 0xff) << 16) | \
+ ((tmptmp & 0xff) << 24), tmptmp)
#define rev_short_org(x) (tmptmp = *(x), *(x) = ((tmptmp >> 8) & 0xff) | \
- ((tmptmp & 0xff) << 8), tmptmp)
+ ((tmptmp & 0xff) << 8), tmptmp)
+void
+rev_ud_hontai(UCHAR *hostart,
+ int maxhontai,
+ int match /* whether the cpu type match the dictionary */
+ )
+{
+ UCHAR *hoend = hostart + maxhontai;
+ struct uind2 *hop, *hop1;
+ int k;
+ int len;
+
+ /* Skip first 4 bytes for some reason. (cf. ujistoud() in atod.c) */
+ for (hop = (struct uind2 *)((int *) hostart + 1); (UCHAR *) hop < hoend;) {
+ rev_int(&(hop->next));
+ rev_int(&(hop->serial));
+ rev_int(&(hop->kanjipter));
+ rev_short(&(hop->kosuu));
+
+ if (match) {
+ len = hop->yomi[0];
+ hop1 = (struct uind2 *)(AL_INT (&(hop->yomi[0]) + 1 + max((len - 4), 0)));
+ rev_short(&(hop->yomi[0]));
+ for (k = 0; k < len - 4; k++)
+ rev_short(&(hop->yomi[k + 1]));
+ hop = hop1;
+ } else {
+ rev_short(&(hop->yomi[0]));
+ len = hop->yomi[0];
+ for (k = 0; k < len - 4; k++)
+ rev_short(&(hop->yomi[k + 1]));
+ hop = (struct uind2 *)(AL_INT (&(hop->yomi[0]) + 1 + max((len - 4), 0)));
+ }
+ }
+}
+void
+rev_ud_table(struct uind1 *tary,
+ int maxtable,
+ int match)
+{
+ int k;
+
+ for (k = 0; k < maxtable; k++) {
+ rev_int(&(tary[k].pter1));
+ rev_int(&(tary[k].pter));
+ rev_int(&(tary[k].yomi1));
+ rev_int(&(tary[k].yomi2));
+ }
+}
void
-rev_ud_hontai (hostart, maxhontai, match)
- UCHAR *hostart;
- int maxhontai;
- int match; /* whether the cpu type match the dictionary */
-{
- UCHAR *hoend = hostart + maxhontai;
- struct uind2 *hop, *hop1;
- int k;
- int len;
-
- /* Skip first 4 bytes for some reason. (cf. ujistoud() in atod.c) */
- for (hop = (struct uind2 *)((int *) hostart + 1); (UCHAR *) hop < hoend;)
- {
- rev_int (&(hop->next));
- rev_int (&(hop->serial));
- rev_int (&(hop->kanjipter));
- rev_short (&(hop->kosuu));
- if (match)
- {
- len = hop->yomi[0];
- hop1 = (struct uind2 *) (AL_INT (&(hop->yomi[0]) + 1 + max ((len - 4), 0)));
- rev_short (&(hop->yomi[0]));
- for (k = 0; k < len - 4; k++)
- {
- rev_short (&(hop->yomi[k + 1]));
- }
- hop = hop1;
- }
- else
- {
- rev_short (&(hop->yomi[0]));
- len = hop->yomi[0];
- for (k = 0; k < len - 4; k++)
- {
- rev_short (&(hop->yomi[k + 1]));
- }
- hop = (struct uind2 *) (AL_INT (&(hop->yomi[0]) + 1 + max ((len - 4), 0)));
- }
- }
-}
-
-
-void
-rev_ud_table (tary, maxtable, match)
- struct uind1 *tary;
- int maxtable;
- int match;
-{
- int k;
-
- for (k = 0; k < maxtable; k++)
- {
- rev_int (&(tary[k].pter1));
- rev_int (&(tary[k].pter));
- rev_int (&(tary[k].yomi1));
- rev_int (&(tary[k].yomi2));
- }
-}
-
-void
-rev_hinsi (hinsi, maxserial, match)
- unsigned short *hinsi;
- int maxserial;
- int match;
-{
- int k;
-
- for (k = 0; k < maxserial; k++)
- {
- rev_short (&(hinsi[k]));
- }
+rev_hinsi(unsigned short *hinsi,
+ int maxserial,
+ int match)
+{
+ int k;
+
+ for (k = 0; k < maxserial; k++)
+ rev_short(&(hinsi[k]));
}
/*
@@ -154,200 +137,183 @@ void travel_next_nodes ();
void rev_sd_node ();
void
-rev_sd_hontai0 (hopter, hostart, match)
- UCHAR *hostart;
- UCHAR *hopter;
- int match;
-{
- if (match)
- {
- travel_next_nodes (hopter, hostart, match);
- rev_sd_node (hopter, hostart, match);
- }
- else
- {
- rev_sd_node (hopter, hostart, match);
- travel_next_nodes (hopter, hostart, match);
- }
-}
-
-void
-rev_sd_hontai (hostart, match)
- UCHAR *hostart;
- int match;
-{
- rev_sd_hontai0 (hostart, hostart, match);
-}
-
-void
-travel_next_nodes (hopter, hostart, match)
- UCHAR *hostart, *hopter;
- int match;
-{
- int k;
- int tsize;
- w_char *charst;
- w_char *sumst;
- int *ptrst;
-
- switch (*(unsigned short *) hopter)
- {
- case ST_NORMAL:
- tsize = *(w_char *) (hopter + 2);
- charst = (w_char *) (hopter + 12);
- sumst = ((w_char *) charst + tsize + 2); /* + 2 keeps two zero words */
- ptrst = (int *) ((w_char *) sumst + tsize);
- for (k = 0; k < tsize; k++)
- {
- if (ptrst[k] != ENDPTR)
- {
- rev_sd_hontai0 (hostart + ptrst[k], hostart, match);
- }
- }
- break;
- case ST_NOPTER:
- break;
- case ST_NOENT:
- tsize = *(w_char *) (hopter + 2);
- charst = (w_char *) (hopter + 4);
- ptrst = (int *) AL_INT ((w_char *) charst + tsize);
- for (k = 0; k < tsize; k++)
- {
- rev_sd_hontai0 (hostart + ptrst[k], hostart, match);
- }
- break;
- case ST_SMALL:
- rev_sd_hontai0 (hopter + 4, hostart, match);
- break;
- }
+rev_sd_hontai0(UCHAR *hopter,
+ UCHAR *hostart,
+ int match)
+{
+ if (match) {
+ travel_next_nodes(hopter, hostart, match);
+ rev_sd_node(hopter, hostart, match);
+ } else {
+ rev_sd_node(hopter, hostart, match);
+ travel_next_nodes(hopter, hostart, match);
+ }
+}
+
+void
+rev_sd_hontai(UCHAR *hostart,
+ int match)
+{
+ rev_sd_hontai0(hostart, hostart, match);
+}
+
+void
+travel_next_nodes(UCHAR *hopter,
+ UCHAR *hostart,
+ int match)
+{
+ int k;
+ int tsize;
+ w_char *charst;
+ w_char *sumst;
+ int *ptrst;
+
+ switch (*(unsigned short *)hopter) {
+ case ST_NORMAL:
+ tsize = *(w_char *)(hopter + 2);
+ charst = (w_char *)(hopter + 12);
+ sumst = ((w_char *)charst + tsize + 2); /* + 2 keeps two zero words */
+ ptrst = (int *)((w_char *)sumst + tsize);
+
+ for (k = 0; k < tsize; k++) {
+ if (ptrst[k] != ENDPTR)
+ rev_sd_hontai0(hostart + ptrst[k], hostart, match);
+ }
+ break;
+
+ case ST_NOPTER:
+ break;
+ case ST_NOENT:
+ tsize = *(w_char *)(hopter + 2);
+ charst = (w_char *)(hopter + 4);
+ ptrst = (int *)AL_INT((w_char *)charst + tsize);
+
+ for (k = 0; k < tsize; k++)
+ rev_sd_hontai0(hostart + ptrst[k], hostart, match);
+ break;
+ case ST_SMALL:
+ rev_sd_hontai0(hopter + 4, hostart, match);
+ break;
+ }
}
#define rev_if_short(x) (match? rev_short_org(x): rev_short(x))
#define rev_if_int(x) (match? rev_int_org(x): rev_int(x))
void
-rev_sd_node (hopter, hostart, match)
- UCHAR *hostart, *hopter;
- int match;
-{
- /* whether current state of dict matches the cpu type of the machine */
- int k;
- int tsize;
- w_char *charst;
- w_char *sumst;
- int *ptrst;
- int state;
-
- state = rev_if_short ((unsigned short *) hopter);
- switch (state)
- {
- case ST_NORMAL:
- case ST_NOPTER:
- tsize = rev_if_short ((w_char *) (hopter + 2));
- rev_int ((int *) (hopter + 4));
- rev_int ((int *) (hopter + 8));
- charst = (w_char *) (hopter + 12);
- sumst = ((w_char *) charst + tsize + 2); /* + 2 keeps two zero words */
- ptrst = (int *) ((w_char *) sumst + tsize);
- for (k = 0; k < tsize; k++)
- {
- rev_short (charst + k);
- rev_short (sumst + k);
- }
- if (state == ST_NORMAL)
- {
- for (k = 0; k < tsize; k++)
- {
- rev_int (ptrst + k);
- }
- }
- break;
- case ST_NOENT:
- tsize = rev_if_short ((w_char *) (hopter + 2));
- charst = (w_char *) (hopter + 4);
- ptrst = (int *) AL_INT ((w_char *) charst + tsize);
- for (k = 0; k < tsize; k++)
- {
- rev_short (charst + k);
- rev_int (ptrst + k);
- }
- break;
- case ST_SMALL:
- rev_short ((unsigned short *) (hopter + 2));
- break;
- }
+rev_sd_node(UCHAR *hopter,
+ UCHAR *hostart,
+ int match)
+{
+ /* whether current state of dict matches the cpu type of the machine */
+ int k;
+ int tsize;
+ w_char *charst;
+ w_char *sumst;
+ int *ptrst;
+ int state;
+
+ state = rev_if_short((unsigned short *) hopter);
+
+ switch (state) {
+ case ST_NORMAL:
+ case ST_NOPTER:
+ tsize = rev_if_short((w_char *)(hopter + 2));
+ rev_int((int *)(hopter + 4));
+ rev_int((int *)(hopter + 8));
+ charst = (w_char *)(hopter + 12);
+ sumst = ((w_char *)charst + tsize + 2); /* + 2 keeps two zero words */
+ ptrst = (int *)((w_char *)sumst + tsize);
+
+ for (k = 0; k < tsize; k++) {
+ rev_short(charst + k);
+ rev_short(sumst + k);
+ }
+
+ if (state == ST_NORMAL) {
+ for (k = 0; k < tsize; k++)
+ rev_int (ptrst + k);
+ }
+ break;
+
+ case ST_NOENT:
+ tsize = rev_if_short((w_char *)(hopter + 2));
+ charst = (w_char *)(hopter + 4);
+ ptrst = (int *)AL_INT((w_char *)charst + tsize);
+
+ for (k = 0; k < tsize; k++) {
+ rev_short(charst + k);
+ rev_int(ptrst + k);
+ }
+ break;
+
+ case ST_SMALL:
+ rev_short((unsigned short *)(hopter + 2));
+ break;
+ }
}
-
int
-little_endian ()
+little_endian()
{
- int a = 1;
+ int a = 1;
#ifdef BYTE_SWAP
- return (1);
+ return (1);
#else
- return (*(char *) &a == 1);
+ return (*(char *) &a == 1);
#endif
}
void
-rev_rd_rind1 (ri1, maxri1, match)
- struct rind1 *ri1;
- int maxri1;
- int match;
-{
- int k;
-
- for (k = 0; k < maxri1; k++)
- {
- rev_int (&(ri1[k].pter1));
- rev_int (&(ri1[k].pter));
- }
+rev_rd_rind1(struct rind1 *ri1,
+ int maxri1,
+ int match)
+{
+ int k;
+
+ for (k = 0; k < maxri1; k++) {
+ rev_int(&(ri1[k].pter1));
+ rev_int(&(ri1[k].pter));
+ }
}
void
-rev_rd_rind2 (ri2, maxri2, match)
- struct rind2 *ri2;
- int maxri2;
- int match;
-{
- int k;
-
- for (k = 0; k < maxri2; k++)
- {
- rev_int (&(ri2[k].kanjipter));
- rev_int (&(ri2[k].next[D_YOMI]));
- rev_int (&(ri2[k].next[D_KANJI]));
- }
+rev_rd_rind2(struct rind2 *ri2,
+ int maxri2,
+ int match)
+{
+ int k;
+
+ for (k = 0; k < maxri2; k++) {
+ rev_int(&(ri2[k].kanjipter));
+ rev_int(&(ri2[k].next[D_YOMI]));
+ rev_int(&(ri2[k].next[D_KANJI]));
+ }
}
void rev_w_char ();
void
-rev_kanji (kpter, maxk, match)
- UCHAR *kpter;
- int maxk;
- int match;
-{
- UCHAR *kend = kpter + maxk;
-
- while (kpter < kend && *kpter)
- {
- rev_w_char ((w_char *) (kpter + 2), *kpter / 2 - 1);
- kpter += *kpter;
- }
+rev_kanji(UCHAR *kpter,
+ int maxk,
+ int match)
+{
+ UCHAR *kend = kpter + maxk;
+
+ while (kpter < kend && *kpter) {
+ rev_w_char((w_char *)(kpter + 2), *kpter / 2 - 1);
+ kpter += *kpter;
+ }
}
void
-rev_w_char (p, maxp)
- w_char *p;
- int maxp;
-{
- for (; maxp > 0; maxp--)
- {
- rev_short (p);
- p++;
- }
+rev_w_char(w_char *p,
+ int maxp)
+{
+ for (; maxp > 0; maxp--) {
+ rev_short(p);
+ p++;
+ }
}
/*
@@ -357,87 +323,78 @@ rev_w_char (p, maxp)
*/
int
-revdic (jtl, match)
- struct JT *jtl;
- int match;
-{
- extern int rev_ud (), rev_rd (), rev_sd ();
- int syurui = jtl->syurui;
-
- syurui = jtl->syurui & 0xff;
-
- if (syurui == WNN_UD_DICT)
- {
- if (rev_ud (jtl, match) == -1)
- return (-1);
- }
- else if (syurui == WNN_REV_DICT)
- {
- if (rev_rd (jtl, match) == -1)
- return (-1);
- }
- else
- {
- if (rev_sd (jtl, match) == -1)
- return (-1);
- }
- return (0);
+revdic(struct JT *jtl,
+ int match)
+{
+ extern int rev_ud(), rev_rd(), rev_sd();
+ int syurui = jtl->syurui;
+
+ syurui = jtl->syurui & 0xff;
+
+ if (syurui == WNN_UD_DICT) {
+ if (rev_ud (jtl, match) == -1)
+ return (-1);
+ } else if (syurui == WNN_REV_DICT) {
+ if (rev_rd (jtl, match) == -1)
+ return (-1);
+ } else {
+ if (rev_sd (jtl, match) == -1)
+ return (-1);
+ }
+
+ return (0);
}
void rev_common ();
int
-rev_ud (jtl, match)
- struct JT *jtl;
- int match;
-{
- rev_common (jtl, match);
- rev_ud_hontai (jtl->hontai, jtl->maxhontai, match);
- rev_ud_table (jtl->table, jtl->maxtable, match);
- return (0);
+rev_ud(struct JT *jtl,
+ int match)
+{
+ rev_common(jtl, match);
+ rev_ud_hontai(jtl->hontai, jtl->maxhontai, match);
+ rev_ud_table(jtl->table, jtl->maxtable, match);
+
+ return (0);
}
int
-rev_sd (jtl, match)
- struct JT *jtl;
- int match;
-{
- rev_common (jtl, match);
- rev_sd_hontai (jtl->hontai, match);
- return (0);
+rev_sd(struct JT *jtl,
+ int match)
+{
+ rev_common(jtl, match);
+ rev_sd_hontai(jtl->hontai, match);
+ return (0);
}
int
-rev_rd (jtl, match)
- struct JT *jtl;
- int match;
-{
- rev_common (jtl, match);
- rev_rd_rind1 (jtl->ri1[D_YOMI], jtl->maxri1[D_YOMI], match);
- rev_rd_rind1 (jtl->ri1[D_KANJI], jtl->maxri1[D_KANJI], match);
- rev_rd_rind2 (jtl->ri2, jtl->maxri2, match);
- return (0);
+rev_rd(struct JT *jtl,
+ int match)
+{
+ rev_common(jtl, match);
+ rev_rd_rind1(jtl->ri1[D_YOMI], jtl->maxri1[D_YOMI], match);
+ rev_rd_rind1(jtl->ri1[D_KANJI], jtl->maxri1[D_KANJI], match);
+ rev_rd_rind2(jtl->ri2, jtl->maxri2, match);
+ return (0);
}
void
-rev_common (jtl, match)
- struct JT *jtl;
- int match;
-{
- if (jtl->hinsi)
- rev_hinsi (jtl->hinsi, jtl->maxserial, match);
- if (jtl->kanji)
- rev_kanji (jtl->kanji, jtl->maxkanji, match);
- if (jtl->comment)
- rev_w_char (jtl->comment, jtl->maxcomment);
- if (jtl->hinsi_list)
- rev_w_char (jtl->hinsi_list, jtl->maxhinsi_list);
+rev_common(struct JT *jtl,
+ int match)
+{
+ if (jtl->hinsi)
+ rev_hinsi(jtl->hinsi, jtl->maxserial, match);
+ if (jtl->kanji)
+ rev_kanji(jtl->kanji, jtl->maxkanji, match);
+ if (jtl->comment)
+ rev_w_char(jtl->comment, jtl->maxcomment);
+ if (jtl->hinsi_list)
+ rev_w_char(jtl->hinsi_list, jtl->maxhinsi_list);
}
/* rev_short is called from atod.c.... kanapiiii */
void
-rev_short_fun (sp)
- w_char *sp;
+rev_short_fun(w_char *sp)
{
- rev_short (sp);
+ rev_short (sp);
}