From c68a6edd75b8948b050dff506d820a55f1d6a682 Mon Sep 17 00:00:00 2001 From: Nishi Date: Sun, 21 Jun 2026 00:13:23 +0900 Subject: [PATCH] Fix segment generation --- doc/doc/hinsi.html | 2 +- doc/doc/makedict.html | 2 +- src/sj4mkdic/makelist.c | 11 ++++++++++- src/sj4mkdic/makeseg.c | 2 +- src/sj4mkdic/sj4_dict_const.h | 14 +++++++++++++- 5 files changed, 26 insertions(+), 5 deletions(-) diff --git a/doc/doc/hinsi.html b/doc/doc/hinsi.html index 1e01843..e055657 100644 --- a/doc/doc/hinsi.html +++ b/doc/doc/hinsi.html @@ -1,5 +1,5 @@ - + diff --git a/doc/doc/makedict.html b/doc/doc/makedict.html index b7a42d1..60c3c8a 100644 --- a/doc/doc/makedict.html +++ b/doc/doc/makedict.html @@ -1,5 +1,5 @@ - + diff --git a/src/sj4mkdic/makelist.c b/src/sj4mkdic/makelist.c index 755d90c..97a3a65 100644 --- a/src/sj4mkdic/makelist.c +++ b/src/sj4mkdic/makelist.c @@ -280,7 +280,11 @@ diff_ylen(DouonRec* drec) { output_yomi(stderr, dprev->yptr); fputc('\n', stderr); exit(1); - } else if(*p1 > *p2) { + } + + /* XXX: this does not always work... */ +#if 0 + else if(*p1 > *p2) { fprintf(stderr, WRONGREADORDER); output_yomi(stderr, dprev->yptr); fputc('\n', stderr); @@ -288,6 +292,7 @@ diff_ylen(DouonRec* drec) { fputc('\n', stderr); exit(1); } +#endif while(*p2++) ylen++; } @@ -348,8 +353,12 @@ start: hnum = drec->hrec_num; +#if 1 + i = 0x100 + /* knjask can go up to 255 */ +#else i = 1 + MAXKNJASKNUMBER + +#endif douon_num * DOUONBLKSIZENUMBER + DOUONBLKSIZENUMBER + yomi_len + ylen + hinsi_num + hnum + diff --git a/src/sj4mkdic/makeseg.c b/src/sj4mkdic/makeseg.c index ddea03e..74147ee 100644 --- a/src/sj4mkdic/makeseg.c +++ b/src/sj4mkdic/makeseg.c @@ -38,7 +38,7 @@ #include "sj4mkdic.h" -static u_char mindex[MAINSEGMENTLENGTH]; +static u_char mindex[MAININDEXLENGTH]; static int idxpos = 0; static int idxnum = 0; diff --git a/src/sj4mkdic/sj4_dict_const.h b/src/sj4mkdic/sj4_dict_const.h index e27e7b6..f6b3209 100644 --- a/src/sj4mkdic/sj4_dict_const.h +++ b/src/sj4mkdic/sj4_dict_const.h @@ -36,9 +36,16 @@ #ifndef SJ4_DICT_CONST_H #define SJ4_DICT_CONST_H +#define HUGE + +#ifdef HUGE +#define MAINSEGMENTLENGTH 2048 +#define MAININDEXLENGTH 32768 +#else #define MAINSEGMENTLENGTH 2048 #define MAININDEXLENGTH 2048 -#define MAININDEXNUMBER 512 +#endif +#define MAININDEXNUMBER 256 #define MAXYOMILENGTH 32 #define MAXKANJILENGTH 32 @@ -70,8 +77,13 @@ #define KANJIMODEMASK 0xf0 #define ATRMSKANJIOFS 0xc0c0 +#ifdef HUGE +#define MAXHINDONUMBER 8000 +#define MAXOFFSETNUMBER 2000 +#else #define MAXHINDONUMBER 2000 #define MAXOFFSETNUMBER 1000 +#endif #ifdef ENGLISH #define ILLEGALFORMAT "Illegal format"