Import sj3-patches-20040916

Original description for the changes:

sj3 の patch をまとめました。
基本的に、SUS v2 の範囲に対応しているシステムを考えています。ですので、
autoconf 的な #ifdef はあまり使うつもりはありません。
FreeBSD の ports 向けを第一目的にしているので、strlcpy() のような非標準の
関数も使ってしまっていますが、それについては要望があれば存在しないシステム
でも make できるように対応するつもりです。

この patch set に関する要望がもしもあるようでしたら、
	小野 寛生 (hiroo+sj3 at oikumene.gcd.org)
までご連絡ください。

---- patch 部分の Changelog
2004年 9月16日 木曜日 02時57分06秒 JST
* server/execute.c で malloc が失敗したときに dictlist を消去する処理が
  バグで動かない状態だったのを修正した。ただし、その直後に segfault する
  ようなコードになっているので問題は解消されていない。
  エラー回復時にどのような処理が意図されていたか理解しないと、修正は無理
  なので、そのままにしておく。

2004年 8月28日 土曜日 15時04分33秒 JST
* Move include/sj3lowlib.h and sj3lib/sj3lib_func.h to sj3lib/sj3lib.h.
  It will enable softwares depending on sj3lib.h compile again.

2004年 7月24日 土曜日
* ヘッダの重複 include を許容する。
	include/sj3lowlib.h, sj3lib/sj3lib_func.h
* 必要な型宣言のため、ヘッダを include する。

2004年 7月21日 水曜日 01時00分11秒 JST
* ISO C に適合するよういろいろ修正。(ただし、部分的)。
  修正内容は7/3に準ずる。
  修正したファイル名は省略する。
* dict/tool/makeseg.c の static index[] が <string.h> の index() と衝突
  しないように、segindex[] に改名した。
  (FreeBSD 4-stable/GCC 2.95.4 で compile に失敗していたものの修正)。

2004年 7月 4日 日曜日 17時47分33秒 JST
* ISO C に適合するよういろいろ修正。(ただし、部分的)。
  修正内容は7/3に準ずる。
  FreeBSD/amd64 上の gcc version 3.3.3 [FreeBSD] 20031106 では、致命的と
  思われる error/warning はなくなった。動作確認は sj3serv が起動すること
  のみ。

2004年 7月 3日 土曜日 03時53分23秒 JST
* スタイル修正を以下のファイルについて行なった。
  - 関数宣言を ISO C スタイルにした。
  - register キーワードを削除した。
  - 構造体、配列の初期化に適切な {} をつけた。
  - 条件判定文を if((something) != NULL) のような形式に変更した。
	kanakan/alloc.c,
	server/comuni.c, error.c, execute.c, setup.c
	sj3/funckey.c, sj3.c, sjgetchar.c
	sj3lib/Imakefile, sj.c, sj3lib.h
  - プロトタイプ宣言をいれたヘッダファイルを追加作成。
  	kanakan/kanakan.h, sj3/sj3.h, sj3lib/sj3lib_func.h

2004年 7月 2日 金曜日 01時09分09秒 JST
* FreeBSD の ports にある patch を大部分もってきた。
  注意点:
  - server/execute.c, setup.c
    snprintf と strlcpy を使っているコードがあり、将来は存在しない system の
    ためにコードをもってきて、sj3.tmpl あたりに knob を設けるべきである。
    現時点では、上記関数が存在しないシステムは、単にコンパイルに失敗する。
  - FreeBSD の -lxpg4 は外した。古い release では、有効にする必要あり。(sj3.tmpl)
* dict/tool を ISO C style に変更した。
  - amd64/FreeBSD で build できるようになったのを確認。
    (sporsored by: AMD64JP Project, AMD developer support program).
  - server は起動する。動作確認は未実施。

Signed-off-by: Masanori Ogino <mogino@acm.org>
This commit is contained in:
Hiroo Ono 2023-12-04 14:18:05 +09:00 • committed by Masanori Ogino
commit 4a2d141541
77 changed files with 3421 additions and 3850 deletions

View file

@ -1,198 +1,198 @@
"カ五1", 91,
"カ五2", 101,
"カ五3", 131,
"カ五4", 141,
"カ五5", 111,
"カ五6", 121,
"カ五7", 151,
"カ五8", 161,
"カ五音便", 185,
"カ変仮", 181,
"カ変終体", 180,
"カ変未", 178,
"カ変命", 182,
"カ変用", 179,
"ガ五1", 92,
"ガ五2", 102,
"ガ五3", 132,
"ガ五4", 142,
"ガ五5", 112,
"ガ五6", 122,
"ガ五7", 152,
"ガ五8", 162,
"サ五1", 93,
"サ五2", 103,
"サ五3", 133,
"サ五4", 143,
"サ五5", 113,
"サ五6", 123,
"サ五7", 153,
"サ五8", 163,
"サ変", 80,
"サ変仮", 175,
"サ変終体", 174,
"サ変未1", 171,
"サ変未2", 172,
"サ変未用", 173,
"サ変命1", 176,
"サ変命2", 177,
"ザ変", 81,
"タ五1", 94,
"タ五2", 104,
"タ五3", 134,
"タ五4", 144,
"タ五5", 114,
"タ五6", 124,
"タ五7", 154,
"タ五8", 164,
"ナ五", 95,
"バ五1", 96,
"バ五2", 105,
"バ五3", 135,
"バ五4", 145,
"バ五5", 115,
"バ五6", 125,
"バ五7", 155,
"バ五8", 165,
"マ五1", 97,
"マ五2", 106,
"マ五3", 136,
"マ五4", 146,
"マ五5", 116,
"マ五6", 126,
"マ五7", 156,
"マ五8", 166,
"ラ五1", 98,
"ラ五2", 107,
"ラ五3", 137,
"ラ五4", 147,
"ラ五5", 117,
"ラ五6", 127,
"ラ五7", 157,
"ラ五8", 167,
"ワ五1", 99,
"ワ五2", 108,
"ワ五3", 138,
"ワ五4", 148,
"ワ五5", 118,
"ワ五6", 128,
"ワ五7", 158,
"ワ五8", 168,
"挨拶", 187,
"衣服", -11,
"一括", 200,
"一段1", 90,
"一段2", 100,
"一段3", 130,
"一段4", 140,
"雨", -21,
"音楽", -20,
"海", -31,
"開閉", -4,
"活動", -5,
"感動", 28,
"企業", 23,
"魚", -14,
"形1", 60,
"形10", 69,
"形11", 70,
"形2", 61,
"形3", 62,
"形4", 63,
"形5", 64,
"形6", 65,
"形7", 66,
"形8", 67,
"形9", 68,
"形動1", 71,
"形動2", 72,
"形動3", 73,
"形動4", 74,
"形動5", 75,
"形動6", 76,
"形動7", 77,
"形動8", 78,
"形動9", 79,
"建築", -13,
"県区", 25,
"湖", -33,
"国", -12,
"試合", -10,
"事件", -27,
"時", -25,
"酒", -23,
"州", -29,
"出版", -18,
"所", -2,
"助数", 29,
"助数2", 54,
"乗物", -17,
"植物", -6,
"食物", -16,
"身体", -8,
"人", -1,
"数詞", 30,
"数詞2", 55,
"接続", 27,
"接頭1", 31,
"接頭2", 32,
"接頭3", 33,
"接頭4", 34,
"接頭5", 35,
"接尾1", 36,
"接尾2", 37,
"接尾3", 38,
"接尾4", 39,
"接尾5", 40,
"接尾6", 41,
"接尾7", 42,
"接尾8", 43,
"接尾9", 44,
"川", -30,
"組織", -3,
"贈物", -26,
"代1", 12,
"代2", 13,
"代3", 14,
"代4", 15,
"代5", 16,
"代6", 17,
"単漢", 189,
"地位", -7,
"地名", 24,
"丁寧1", 183,
"丁寧2", 184,
"電車", -34,
"都市", -24,
"島", -32,
"動物", -9,
"特殊形容", 188,
"特殊副", 186,
"病気", -15,
"苗字", 21,
"副1", 45,
"副2", 46,
"副3", 47,
"副4", 48,
"副5", 49,
"副6", 50,
"副7", 51,
"副8", 52,
"副9", 53,
"文字", -19,
"法", -35,
"名1", 1,
"名10", 10,
"名11", 11,
"名2", 2,
"名20", 18,
"名3", 3,
"名4", 4,
"名5", 5,
"名6", 6,
"名7", 7,
"名8", 8,
"名9", 9,
"名前", 22,
"鳴物", -28,
"連体", 26
{"カ五1", 91},
{"カ五2", 101},
{"カ五3", 131},
{"カ五4", 141},
{"カ五5", 111},
{"カ五6", 121},
{"カ五7", 151},
{"カ五8", 161},
{"カ五音便", 185},
{"カ変仮", 181},
{"カ変終体", 180},
{"カ変未", 178},
{"カ変命", 182},
{"カ変用", 179},
{"ガ五1", 92},
{"ガ五2", 102},
{"ガ五3", 132},
{"ガ五4", 142},
{"ガ五5", 112},
{"ガ五6", 122},
{"ガ五7", 152},
{"ガ五8", 162},
{"サ五1", 93},
{"サ五2", 103},
{"サ五3", 133},
{"サ五4", 143},
{"サ五5", 113},
{"サ五6", 123},
{"サ五7", 153},
{"サ五8", 163},
{"サ変", 80},
{"サ変仮", 175},
{"サ変終体", 174},
{"サ変未1", 171},
{"サ変未2", 172},
{"サ変未用", 173},
{"サ変命1", 176},
{"サ変命2", 177},
{"ザ変", 81},
{"タ五1", 94},
{"タ五2", 104},
{"タ五3", 134},
{"タ五4", 144},
{"タ五5", 114},
{"タ五6", 124},
{"タ五7", 154},
{"タ五8", 164},
{"ナ五", 95},
{"バ五1", 96},
{"バ五2", 105},
{"バ五3", 135},
{"バ五4", 145},
{"バ五5", 115},
{"バ五6", 125},
{"バ五7", 155},
{"バ五8", 165},
{"マ五1", 97},
{"マ五2", 106},
{"マ五3", 136},
{"マ五4", 146},
{"マ五5", 116},
{"マ五6", 126},
{"マ五7", 156},
{"マ五8", 166},
{"ラ五1", 98},
{"ラ五2", 107},
{"ラ五3", 137},
{"ラ五4", 147},
{"ラ五5", 117},
{"ラ五6", 127},
{"ラ五7", 157},
{"ラ五8", 167},
{"ワ五1", 99},
{"ワ五2", 108},
{"ワ五3", 138},
{"ワ五4", 148},
{"ワ五5", 118},
{"ワ五6", 128},
{"ワ五7", 158},
{"ワ五8", 168},
{"挨拶", 187},
{"衣服", -11},
{"一括", 200},
{"一段1", 90},
{"一段2", 100},
{"一段3", 130},
{"一段4", 140},
{"雨", -21},
{"音楽", -20},
{"海", -31},
{"開閉", -4},
{"活動", -5},
{"感動", 28},
{"企業", 23},
{"魚", -14},
{"形1", 60},
{"形10", 69},
{"形11", 70},
{"形2", 61},
{"形3", 62},
{"形4", 63},
{"形5", 64},
{"形6", 65},
{"形7", 66},
{"形8", 67},
{"形9", 68},
{"形動1", 71},
{"形動2", 72},
{"形動3", 73},
{"形動4", 74},
{"形動5", 75},
{"形動6", 76},
{"形動7", 77},
{"形動8", 78},
{"形動9", 79},
{"建築", -13},
{"県区", 25},
{"湖", -33},
{"国", -12},
{"試合", -10},
{"事件", -27},
{"時", -25},
{"酒", -23},
{"州", -29},
{"出版", -18},
{"所", -2},
{"助数", 29},
{"助数2", 54},
{"乗物", -17},
{"植物", -6},
{"食物", -16},
{"身体", -8},
{"人", -1},
{"数詞", 30},
{"数詞2", 55},
{"接続", 27},
{"接頭1", 31},
{"接頭2", 32},
{"接頭3", 33},
{"接頭4", 34},
{"接頭5", 35},
{"接尾1", 36},
{"接尾2", 37},
{"接尾3", 38},
{"接尾4", 39},
{"接尾5", 40},
{"接尾6", 41},
{"接尾7", 42},
{"接尾8", 43},
{"接尾9", 44},
{"川", -30},
{"組織", -3},
{"贈物", -26},
{"代1", 12},
{"代2", 13},
{"代3", 14},
{"代4", 15},
{"代5", 16},
{"代6", 17},
{"単漢", 189},
{"地位", -7},
{"地名", 24},
{"丁寧1", 183},
{"丁寧2", 184},
{"電車", -34},
{"都市", -24},
{"島", -32},
{"動物", -9},
{"特殊形容", 188},
{"特殊副", 186},
{"病気", -15},
{"苗字", 21},
{"副1", 45},
{"副2", 46},
{"副3", 47},
{"副4", 48},
{"副5", 49},
{"副6", 50},
{"副7", 51},
{"副8", 52},
{"副9", 53},
{"文字", -19},
{"法", -35},
{"名1", 1},
{"名10", 10},
{"名11", 11},
{"名2", 2},
{"名20", 18},
{"名3", 3},
{"名4", 4},
{"名5", 5},
{"名6", 6},
{"名7", 7},
{"名8", 8},
{"名9", 9},
{"名前", 22},
{"鳴物", -28},
{"連体", 26}

View file

@ -31,6 +31,8 @@
* $SonyRCSfile: char.c,v $
* $SonyRevision: 1.1 $
* $SonyDate: 1994/06/03 08:00:32 $
*
* $Id$
*/
@ -40,13 +42,12 @@
#include "sj_const.h"
cnvyomi(code)
int code;
int
cnvyomi(int code)
{
register u_short hh;
register u_char high;
register u_char low;
u_short hh;
u_char high;
u_char low;
hh = ((code >> 16) & 0xffff);
high = ((code >> 8) & 0xff);
@ -98,13 +99,12 @@ int code;
}
h2kcode(code)
int code;
int
h2kcode(int code)
{
register u_short hh;
register u_char high;
register u_char low;
u_short hh;
u_char high;
u_char low;
hh = ((code >> 16) & 0xffff);
high = ((code >> 8) & 0xff);
@ -116,12 +116,15 @@ int code;
else
return (code + 0x0100);
}
/* XXX: what should we do if we reach here?
* XXX: I do not know if it is correct, but return 0 for now.
* XXX: Hiroo Ono (2004/07/01) */
return (0);
}
codesize(code)
u_char code;
int
codesize(u_char code)
{
switch (code&KanjiModeMask) {
case ZenHiraAssyuku:
@ -139,11 +142,8 @@ u_char code;
}
output_knj(fp, p, l)
FILE *fp;
register u_char *p;
register int l;
void
output_knj(FILE* fp, u_char* p, int l)
{
while (l > 0) {
switch (*p & KanjiModeMask) {
@ -192,19 +192,15 @@ register int l;
}
output_str(fp, p)
FILE *fp;
char *p;
void
output_str(FILE* fp, char* p)
{
while (*p) { fputc(*p, fp); p++; }
}
output_int(fp, p)
FILE *fp;
int *p;
void
output_int(FILE* fp, int* p)
{
while (*p) {
if (*p < 0x100) {
@ -229,9 +225,8 @@ int *p;
}
yomi2zen(code)
int code;
static int
yomi2zen(int code)
{
static char num[] = {
'0', '1', '2', '3', '4', '5', '6', '7',
@ -268,10 +263,8 @@ int code;
}
output_yomi(fp, p)
FILE *fp;
u_char *p;
void
output_yomi(FILE* fp, u_char* p)
{
int i;

View file

@ -36,7 +36,7 @@
#include <stdio.h>
#include <sys/types.h>
#include "dicttool.h"
struct gram_code {
@ -44,15 +44,14 @@ struct gram_code {
int code;
} gramtbl[] = {
#include "GramTable"
};
#define GramMax (sizeof(gramtbl)/sizeof(struct gram_code) - 1)
int u_strcmp(a, b)
u_char *a, *b;
int
u_strcmp(u_char* a, u_char* b)
{
if (!a || !b) return 0;
@ -68,13 +67,13 @@ u_char *a, *b;
}
int cnvhinsi(buf)
u_char *buf;
int
cnvhinsi(u_char *buf)
{
register int min;
register int max;
register int mid;
register int i;
int min;
int max;
int mid;
int i;
min = 0;
max = GramMax;
@ -105,8 +104,8 @@ u_char *buf;
char *hinsi_str(code)
int code;
char*
hinsi_str(int code)
{
int i;

View file

@ -35,10 +35,11 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
char *Malloc();
#include "dicttool.h"
typedef struct filelist {
FILE *fp;
@ -48,8 +49,8 @@ typedef struct filelist {
static FileList *flist = NULL;
static char *get_fname(fp)
FILE *fp;
static char*
get_fname(FILE* fp)
{
FileList *p;
@ -58,11 +59,10 @@ FILE *fp;
return "some file";
}
FILE *Fopen(filename, type)
char *filename, *type;
FILE*
Fopen(char* filename, char* type)
{
FILE *fp;
char *p;
FileList *fl;
if (!(fp = fopen(filename, type))) {
@ -79,8 +79,8 @@ char *filename, *type;
return fp;
}
Fclose(fp)
FILE *fp;
void
Fclose(FILE* fp)
{
FileList *p, *q;
@ -102,10 +102,8 @@ FILE *fp;
}
}
Fseek(fp, ofs, ptr)
FILE *fp;
long ofs;
int ptr;
int
Fseek(FILE* fp, long ofs, int ptr)
{
if (fseek(fp, ofs, ptr) == 0) return 0;
@ -113,14 +111,14 @@ int ptr;
exit(1);
}
Ftell(fp)
FILE *fp;
long
Ftell(FILE* fp)
{
return ftell(fp);
}
Fsize(filename)
char *filename;
off_t /* XXX: just looked in FreeBSD's sys/stat.h, need to check SUS spec. */
Fsize(char* filename)
{
struct stat buf;
@ -134,10 +132,8 @@ char *filename;
exit(1);
}
Fread(p, s, n, fp)
char *p;
int s, n;
FILE *fp;
int
Fread(char* p, int s, int n, FILE* fp)
{
if (fread(p, s, n, fp) == n) return n;
@ -145,10 +141,8 @@ FILE *fp;
exit(1);
}
Fwrite(p, s, n, fp)
char *p;
int s, n;
FILE *fp;
int
Fwrite(char* p, int s, int n, FILE* fp)
{
if (fwrite(p, s, n, fp) == n) return n;
@ -156,14 +150,14 @@ FILE *fp;
exit(1);
}
Fgetc(fp)
FILE *fp;
int
Fgetc(FILE* fp)
{
return fgetc(fp);
}
Fflush(fp)
FILE *fp;
void
Fflush(FILE* fp)
{
fflush(fp);
}

View file

@ -31,15 +31,16 @@
* $SonyRCSfile: hindo.c,v $
* $SonyRevision: 1.2 $
* $SonyDate: 1994/08/17 01:50:26 $
*
* $Id$
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include "sj_struct.h"
#include "dicttool.h"
extern HindoRec *hindo[];
extern int hindo_num;
@ -48,13 +49,9 @@ extern HindoRec *askknj[];
extern int askknj_num;
extern int kanji_num;
OffsetRec *real_ofsrec();
check_hindo(ptr, len)
u_char *ptr;
int len;
int
check_hindo(u_char* ptr, int len)
{
int low, high, mid;
int i;
@ -80,8 +77,8 @@ int len;
static AssyukuRec *makeassyuku(num)
int num;
static AssyukuRec*
makeassyuku (int num)
{
AssyukuRec *arec;
@ -101,9 +98,8 @@ int num;
}
static assyuku_len(hrec)
HindoRec *hrec;
static int
assyuku_len(HindoRec* hrec)
{
int org;
int old;
@ -142,12 +138,12 @@ HindoRec *hrec;
static void set_assyuku(hrec)
HindoRec *hrec;
static void
set_assyuku(HindoRec* hrec)
{
register AssyukuRec *arec;
register AssyukuRec *aprev;
register int len;
AssyukuRec *arec;
AssyukuRec *aprev;
int len;
len = assyuku_len(hrec);
@ -195,8 +191,8 @@ HindoRec *hrec;
static void reset_assyuku(hrec)
HindoRec *hrec;
static void
reset_assyuku(HindoRec* hrec)
{
AssyukuRec *arec;
AssyukuRec *aptr;
@ -265,10 +261,8 @@ HindoRec *hrec;
static HindoRec *makehindo(ptr, len, alen)
u_char *ptr;
int len;
int alen;
static HindoRec*
makehindo(u_char* ptr, int len, int alen)
{
HindoRec *hrec;
u_char *p;
@ -306,10 +300,8 @@ int alen;
static void set_hindo(ptr, len, alen)
u_char *ptr;
int len;
int alen;
static void
set_hindo(u_char* ptr, int len, int alen)
{
HindoRec *hrec;
int low, high, mid;
@ -383,9 +375,8 @@ int alen;
static void reset_hindo(p, l)
u_char *p;
int l;
static void
reset_hindo(u_char* p, int l)
{
HindoRec *hrec;
int low, high, mid;
@ -436,15 +427,13 @@ int l;
}
knjhnd_set(p, l)
u_char *p;
int l;
void
knjhnd_set(u_char* p, int l)
{
register u_char *kp1;
register u_char *kp2;
register int i;
register int kl1;
u_char *kp1;
u_char *kp2;
int i;
int kl1;
u_char tmp[MaxKanjiLength * 2 + MaxAtrNumber * 2 + 1];
for (kp1 = p, kl1 = l ; kl1 > 0 ; ) {
@ -472,15 +461,13 @@ int l;
}
knjhnd_reset(p, l)
u_char *p;
int l;
void
knjhnd_reset(u_char* p, int l)
{
register u_char *kp1;
register u_char *kp2;
register int i;
register int kl1;
u_char *kp1;
u_char *kp2;
int i;
int kl1;
u_char tmp[MaxKanjiLength * 2 + MaxAtrNumber * 2 + 1];
for (kp1 = p, kl1 = l ; kl1 > 0 ; ) {
@ -509,9 +496,8 @@ int l;
static check_assyuku(p, q)
register HindoRec *p;
register HindoRec *q;
static int
check_assyuku(HindoRec* p, HindoRec* q)
{
u_char ptmp[128], qtmp[128];
int plen;
@ -536,8 +522,8 @@ register HindoRec *q;
}
decide_knjask()
int
decide_knjask(void)
{
int i, j;
AssyukuRec *p;
@ -616,10 +602,10 @@ end:
}
clear_hindo()
void
clear_hindo(void)
{
register int i;
int i;
for (i = 0 ; i < hindo_num ; i++) {
Free(hindo[i]->kptr);
@ -630,10 +616,10 @@ clear_hindo()
}
clear_assyuku()
void
clear_assyuku(void)
{
register AssyukuRec *p;
AssyukuRec *p;
while (assyuku) {
p = assyuku;

View file

@ -31,15 +31,19 @@
* $SonyRCSfile: knjcvt.c,v $
* $SonyRevision: 1.1 $
* $SonyDate: 1994/06/03 08:00:37 $
*
* $Id$
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include "sj_const.h"
#include "sj_struct.h"
#include "dicttool.h"
typedef struct div_list {
int len;
@ -52,10 +56,10 @@ extern int askknj_num;
static free_divlist(p)
register DivList *p;
static void
free_divlist(DivList* p)
{
register DivList *q;
DivList *q;
while (p) {
q = p -> child;
@ -66,9 +70,10 @@ register DivList *p;
static DivList *make_divrec()
static DivList*
make_divrec(void)
{
register DivList *p;
DivList *p;
p = (DivList *)Malloc(sizeof(DivList));
if (!p) {
@ -82,10 +87,8 @@ static DivList *make_divrec()
static make_divlist(parent, knj, len)
DivList *parent;
u_char *knj;
int len;
static int
make_divlist(DivList* parent, u_char *knj, int len)
{
int i, j;
int num;
@ -192,10 +195,8 @@ int len;
u_char *knjofscvt(ptr, len, ret)
u_char *ptr;
int len;
int *ret;
u_char*
knjofscvt(u_char* ptr, int len, int* ret)
{
int i;
u_char *p, *q;
@ -233,10 +234,8 @@ int *ret;
u_char *knjcvt(ptr, len, ret)
u_char *ptr;
int len;
int *ret;
u_char*
knjcvt(u_char* ptr, int len, int* ret)
{
int i;
u_char *p, *q;
@ -273,4 +272,3 @@ if (i != q - p) {
return p;
}

View file

@ -31,42 +31,32 @@
* $SonyRCSfile: makedict.c,v $
* $SonyRevision: 1.2 $
* $SonyDate: 1994/12/09 11:27:05 $
*
* $Id$
*/
#include "sj_sysvdef.h"
/* #include "sj_sysvdef.h" */ /* XXX: no more need it? */
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#ifdef SVR4
#include <string.h>
#else
#include <strings.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/param.h>
#include "sj_const.h"
#include "dicttool.h"
FILE *infp = NULL;
FILE *outfp = NULL;
char *Zalloc();
FILE *Fopen();
static char *idxtop = NULL;
main(argc, argv)
int argc;
char **argv;
int
main(int argc, char** argv)
{
int makelist();
parse(argc, argv);
while (readline()) setline(makelist);
@ -77,9 +67,8 @@ char **argv;
}
char *make_idxlist(name)
char *name;
char*
make_idxlist(char* name)
{
int i;
char *p;
@ -89,8 +78,9 @@ char *name;
strcpy(p, name);
return p;
}
char *get_idxlist(name)
char *name;
char*
get_idxlist(char* name)
{
FILE *fp;
int i;
@ -120,7 +110,7 @@ char *name;
i = 0;
for (q = p ; *q ; ) {
if (fp = fopen(q, "r"))
if ((fp = fopen(q, "r"))!=NULL)
fclose(fp);
else {
fprintf(stderr, "Can't open %s mode \"r\"\n", q);
@ -134,18 +124,14 @@ char *name;
}
parse(argc, argv)
int argc;
char **argv;
void
parse(int argc, char** argv)
{
int i;
char *progname = NULL;
char *p;
extern char *strrchr();
if (progname = strrchr(argv[0], '/'))
if ((progname = strrchr(argv[0], '/'))!=NULL)
progname++;
else
progname = argv[0];
@ -161,11 +147,10 @@ char **argv;
}
get_number(ptr)
register char *ptr;
int
get_number(char* ptr)
{
register int i = 0;
int i = 0;
while (*ptr >= '0' && *ptr <= '9') {
i = i * 10 + (*ptr++ - '0');
@ -175,9 +160,8 @@ register char *ptr;
}
usage(name)
char *name;
void
usage(char* name)
{
fprintf(stderr, "Usage: %s text_file binary_file\n",
name ? name : "encode");
@ -185,8 +169,8 @@ char *name;
}
int getch()
int
getch(void)
{
if (infp) {
int c;
@ -212,9 +196,8 @@ int getch()
}
mark_file(out)
FILE *out;
void
mark_file(FILE* out)
{
static char pathname[MAXPATHLEN];
static long pos;

View file

@ -31,12 +31,17 @@
* $SonyRCSfile: makelist.c,v $
* $SonyRevision: 1.1 $
* $SonyDate: 1994/06/03 08:00:39 $
*
* $Id$
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include "sj_struct.h"
#include "dicttool.h"
#ifndef SS2
#define SS2 0x8e
@ -57,10 +62,10 @@ static DouonRec *drectmp = NULL;
static clearklist(krec)
register KanjiRec *krec;
static void
clearklist(KanjiRec* krec)
{
register KanjiRec *p;
KanjiRec *p;
while (krec) {
@ -79,10 +84,10 @@ register KanjiRec *krec;
static clearhlist(hrec)
register HinsiRec *hrec;
static void
clearhlist(HinsiRec* hrec)
{
register HinsiRec *p;
HinsiRec *p;
while (hrec) {
@ -99,11 +104,11 @@ register HinsiRec *hrec;
}
clear_list()
void
clear_list(void)
{
register DouonRec *p;
register DouonRec *drec = douon_ptr;
DouonRec *p;
DouonRec *drec = douon_ptr;
while (drec) {
@ -126,16 +131,13 @@ clear_list()
static u_char *makekanji(yomi, kanji, atr, len)
int *yomi;
int *kanji;
int *atr;
int *len;
static u_char*
makekanji(int *yomi, int* kanji, int* atr, int* len)
{
int kana[MaxYomiLength + 1];
u_char ktmp[MaxKanjiLength * 3 + MaxAtrNumber * 2 + 1];
register int i;
register int pos = 0;
int i;
int pos = 0;
int *p;
u_char *q;
@ -154,12 +156,12 @@ int *len;
}
if (i = top_strcmp(yomi, kanji)) {
if ((i = top_strcmp(yomi, kanji))!=0) {
kanji += i;
ktmp[pos++] = (ZenHiraAssyuku | (i - 1));
}
else if (i = top_strcmp(kana, kanji)) {
else if ((i = top_strcmp(kana, kanji))!=0) {
kanji += i;
ktmp[pos++] = (ZenKataAssyuku | (i - 1));
}
@ -167,12 +169,12 @@ int *len;
while (*kanji) {
if (i = last_strcmp(yomi, kanji)) {
if ((i = last_strcmp(yomi, kanji))!=0) {
kanji += i;
ktmp[pos++] = (ZenHiraAssyuku | (i - 1));
}
else if (i = last_strcmp(kana, kanji)) {
else if ((i = last_strcmp(kana, kanji))!=0) {
kanji += i;
ktmp[pos++] = (ZenKataAssyuku | (i - 1));
}
@ -216,14 +218,14 @@ int *len;
static u_char *makeyomi(yomi)
int *yomi;
static u_char*
makeyomi(int* yomi)
{
u_char tmp[MaxYomiLength + 1];
register int i;
register int j;
register int *y = yomi;
register u_char *p;
int i;
int j;
int *y = yomi;
u_char *p;
for (i = 0 ; *y ; ) {
@ -250,11 +252,10 @@ int *yomi;
static KanjiRec *make_krec(kcode, klen)
u_char *kcode;
int klen;
static KanjiRec*
make_krec(u_char* kcode, int klen)
{
register KanjiRec *krec;
KanjiRec *krec;
krec = (KanjiRec *)Malloc(sizeof(KanjiRec));
@ -275,10 +276,10 @@ int klen;
static HinsiRec *make_hrec(hinsi)
int hinsi;
static HinsiRec*
make_hrec(int hinsi)
{
register HinsiRec *hrec;
HinsiRec *hrec;
hrec = (HinsiRec *)Malloc(sizeof(HinsiRec));
@ -297,10 +298,10 @@ int hinsi;
static DouonRec *make_drec(ycode)
u_char *ycode;
static DouonRec*
make_drec(u_char* ycode)
{
register DouonRec *drec;
DouonRec *drec;
drec = (DouonRec *)Malloc(sizeof(DouonRec));
@ -320,14 +321,14 @@ u_char *ycode;
static diff_ylen(drec)
DouonRec *drec;
static int
diff_ylen(DouonRec *drec)
{
register DouonRec *dptr;
register DouonRec *dprev;
register u_char *p1;
register u_char *p2;
register int ylen = 0;
DouonRec *dptr;
DouonRec *dprev;
u_char *p1;
u_char *p2;
int ylen = 0;
dptr = douon_ptr; dprev = NULL;
@ -364,8 +365,8 @@ DouonRec *drec;
static douon_knj(drec)
DouonRec *drec;
static int
douon_knj(DouonRec* drec)
{
int i;
int len = 0;
@ -402,8 +403,8 @@ DouonRec *drec;
static void make_d_list(drec)
DouonRec *drec;
static void
make_d_list(DouonRec* drec)
{
DouonRec *dptr, *dprev;
HinsiRec *hptr;
@ -528,8 +529,8 @@ start:
}
flush_douon()
void
flush_douon(void)
{
if (drectmp) {
@ -561,11 +562,7 @@ flush_douon()
void
makelist(yomi, kanji, hinsi, atr)
int *yomi;
int *kanji;
int hinsi;
int *atr;
makelist(int* yomi, int* kanji, int hinsi, int* atr)
{
u_char *ycode;
u_char *kcode;

View file

@ -31,13 +31,20 @@
* $SonyRCSfile: makeseg.c,v $
* $SonyRevision: 1.2 $
* $SonyDate: 1994/12/09 11:27:05 $
*
* $Id$
*/
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <time.h>
#include "sj_struct.h"
#include "../../include/Dict.h"
#include "dicttool.h"
extern HindoRec *askknj[];
extern int askknj_num;
@ -45,18 +52,13 @@ extern DouonRec *douon_ptr;
extern FILE *outfp;
extern int douon_num;
static u_char index[MainSegmentLength];
static u_char segindex[MainSegmentLength];
static int idxpos = 0;
static int idxnum = 0;
OffsetRec *real_ofsrec();
u_char *knjcvt();
static u_char *set_ofsask(src, dst)
u_char *src;
u_char *dst;
static u_char*
set_ofsask(u_char* src, u_char* dst)
{
int len;
u_char *ptr;
@ -106,11 +108,8 @@ u_char *dst;
}
make_knjstr(src, len, dst)
u_char *src;
int len;
u_char *dst;
size_t
make_knjstr(u_char* src, int len, u_char* dst)
{
u_char *keep = dst;
@ -157,9 +156,10 @@ u_char *dst;
static make_knjask()
static int
make_knjask(void)
{
int i, j;
int i;
u_char *p;
u_char buf[128];
int len;
@ -195,7 +195,7 @@ static make_knjask()
void
makeseg()
makeseg(void)
{
u_char buf[MainSegmentLength];
DouonRec *drec;
@ -307,7 +307,7 @@ makeseg()
for (p = douon_ptr -> yptr ; ; ) {
if (idxpos < MainIndexLength) {
index[idxpos++] = *p;
segindex[idxpos++] = *p;
}
else {
fprintf(stderr, "\245\244\245\363\245\307\245\303\245\257\245\271\244\254\244\242\244\325\244\354\244\336\244\267\244\277\n");
@ -316,7 +316,7 @@ makeseg()
if (!*p++) break;
}
if (idxpos < MainIndexLength) {
index[idxpos] = 0;
segindex[idxpos] = 0;
}
else {
fprintf(stderr, "\245\244\245\363\245\307\245\303\245\257\245\271\244\254\244\242\244\325\244\354\244\336\244\267\244\277\n");
@ -374,9 +374,8 @@ err:
#undef datset
}
static void put4byte(p, n)
u_char *p;
long n;
static void
put4byte(u_char* p, size_t n)
{
p += 3;
*p-- = n; n >>= 8;
@ -384,27 +383,28 @@ long n;
*p-- = n; n >>= 8;
*p = n;
}
void makehead(dict_name)
u_char *dict_name;
void
makehead(u_char* dict_name)
{
u_char header[HeaderLength + CommentLength];
long i;
u_char *p;
time_t curtime;
#define IndexPos (HeaderLength + CommentLength)
memset(header, '\0', sizeof(header));
put4byte(header + VersionPos, DictVersion);
time(&i);
time(&curtime);
p = header + CommentPos;
sprintf((char *)p, "%s : %s", dict_name, ctime(&i));
while (*p) {
if (*p == '\n') { *p = 0; break; }
p++;
}
sprintf((char *)p, "%s : %s", dict_name, ctime(&curtime));
while (*p) {
if (*p == '\n') { *p = 0; break; }
p++;
}
i = IndexPos;
put4byte(header + DictIdxPos, i);
put4byte(header + DictIdxLen, MainIndexLength);
i += MainIndexLength;
@ -413,7 +413,7 @@ u_char *dict_name;
put4byte(header + DictSegLen, MainSegmentLength);
put4byte(header + DictSegMax, 0);
put4byte(header + DictSegNum, idxnum);
put4byte(header + DictAIdxPos, 0);
put4byte(header + DictAIdxLen, 0);
@ -423,7 +423,7 @@ u_char *dict_name;
Fseek(outfp, (long)HeaderPos, 0);
Fwrite(header, sizeof(header), 1, outfp);
Fseek(outfp, (long)IndexPos, 0);
Fwrite(index, MainIndexLength, 1, outfp);
Fwrite(segindex, MainIndexLength, 1, outfp);
#undef IndexPos
}

View file

@ -31,16 +31,21 @@
* $SonyRCSfile: memory.c,v $
* $SonyRevision: 1.1 $
* $SonyDate: 1994/06/03 08:00:42 $
*
* $Id$
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include "dicttool.h"
char *Malloc(size)
unsigned size;
void*
Malloc(size_t size)
{
char *p;
char *malloc();
void* p;
p = malloc(size);
if (p == NULL) {
@ -50,18 +55,18 @@ unsigned size;
return p;
}
char *Zalloc(size)
int size;
void*
Zalloc (size_t size)
{
char *p;
void* p;
p = Malloc(size);
memset(p, '\0', size);
return p;
}
void Free(p)
char *p;
void
Free(void *p)
{
free(p);
}

View file

@ -37,18 +37,19 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include "sj_struct.h"
#include "dicttool.h"
extern OffsetRec *ofsrec[];
extern int ofsrec_num;
static OffsetRec *makeoffset(ptr, len, ofs)
u_char *ptr;
int len;
int ofs;
static OffsetRec*
makeoffset(u_char* ptr, int len, int ofs)
{
OffsetRec *orec;
u_char *p;
@ -73,10 +74,7 @@ int ofs;
void
set_ofsrec(ptr, len, ofs)
u_char *ptr;
int len;
int ofs;
set_ofsrec(u_char* ptr, int len, int ofs)
{
OffsetRec *orec;
int low, high, mid;
@ -122,10 +120,8 @@ int ofs;
}
isknjexist(knj, len)
u_char *knj;
int len;
int
isknjexist(u_char* knj, int len)
{
int low, high, mid;
int i;
@ -150,8 +146,8 @@ int len;
}
clear_ofsrec()
void
clear_ofsrec(void)
{
int i;
@ -165,8 +161,8 @@ clear_ofsrec()
OffsetRec *real_ofsrec(ptr)
u_char *ptr;
OffsetRec*
real_ofsrec(u_char* ptr)
{
int ofs;
int i;

View file

@ -31,18 +31,20 @@
* $SonyRCSfile: readline.c,v $
* $SonyRevision: 1.1 $
* $SonyDate: 1994/06/03 08:00:44 $
*
* $Id$
*/
#include <stdio.h>
#include <stdlib.h>
#include "sj_euc.h"
#include "sj_const.h"
#include "sj_macro.h"
#include "dicttool.h"
static long lineloc;
/* static long lineloc; */
static int yomi[MaxYomiLength + 1];
static int kanji[MaxKanjiLength + 1];
static int hinsi[MaxHinsiNumber + 1];
@ -50,11 +52,9 @@ static int atr[MaxAtrNumber + 1];
static error(s)
char *s;
static void
error(char *s)
{
register int c;
if (s) fprintf(stderr, "%s\n", s);
mark_file(stderr);
@ -63,10 +63,11 @@ char *s;
static readchar()
static int
readchar(void)
{
register int c1;
register int c2;
int c1;
int c2;
c1 = getch(); if (c1 == EOF) return EOF;
@ -89,9 +90,10 @@ static readchar()
static skip_blank()
static int
skip_blank(void)
{
register int c;
int c;
c = readchar();
while (Isblank(c)) c = readchar();
@ -102,10 +104,11 @@ static skip_blank()
static readhinsi()
static int
readhinsi(void)
{
static int c = 0;
register int i;
int i;
unsigned char hinsi[128];
int flg;
@ -182,11 +185,12 @@ retry:
int *readline()
int*
readline(void)
{
register int c;
register int i;
register int j;
int c;
int i;
int j;
for ( ; ; ) {
@ -243,7 +247,7 @@ int *readline()
i = j = 0;
while (c = readhinsi()) {
while ((c = readhinsi())!=0) {
if (c < 0) {
if (i >= MaxAtrNumber) error(TooManyAtr);
atr[i++] = -c;
@ -262,11 +266,10 @@ int *readline()
}
setline(func)
int (*func)();
void
setline(void (*func)(int*, int*, int, int*))
{
register int i;
int i;
for (i = 0 ; hinsi[i] ; i++) (*func)(yomi, kanji, hinsi[i], atr);
}

View file

@ -31,24 +31,23 @@
* $SonyRCSfile: string.c,v $
* $SonyRevision: 1.1 $
* $SonyDate: 1994/06/03 08:00:45 $
*
* $id$
*/
#include <stdio.h>
#include <sys/types.h>
#include "sj_const.h"
#include "dicttool.h"
bubun_str(p1, l1, p2, l2)
u_char *p1;
int l1;
u_char *p2;
int l2;
int
bubun_str(u_char* p1, int l1, u_char* p2, int l2)
{
register u_char *p;
register int l;
register int i;
u_char *p;
int l;
int i;
for (p = p1, l = l1 ; l > 0 ; ) {
@ -83,16 +82,13 @@ int l2;
overlap_str(p1, l1, p2, l2)
u_char *p1;
u_char *p2;
int l1;
int l2;
int
overlap_str(u_char *p1, int l1, u_char* p2, int l2)
{
register u_char *p;
register int l;
register int i;
register int j;
u_char *p;
int l;
int i;
int j;
u_char tmp[MaxKanjiLength * 2 + MaxAtrNumber * 2];
for (p = p1, l = l1 ; l > 0 ; ) {
@ -150,11 +146,10 @@ int l2;
}
istrlen(s)
int *s;
size_t
istrlen(int* s)
{
register int *p;
int *p;
for (p = s ; *p ; p++) ;
@ -162,10 +157,8 @@ int *s;
}
istrcmp(s, d)
register int *s;
register int *d;
int
istrcmp(int* s, int* d)
{
for ( ; *s && (*s == *d) ; s++, d++) ;
@ -173,12 +166,10 @@ register int *d;
}
top_strcmp(src, dst)
register int *src;
register int *dst;
int
top_strcmp(int* src, int* dst)
{
register int i = 0;
int i = 0;
for (i = 0 ; *src && (*src == *dst) ; src++, dst++)
@ -189,10 +180,8 @@ register int *dst;
}
last_strcmp(src, dst)
int *src;
int *dst;
int
last_strcmp(int* src, int* dst)
{
int slen, dlen;
@ -213,12 +202,8 @@ int *dst;
}
string_cmp(p1, l1, p2, l2)
register u_char *p1;
register u_char *p2;
register int l1;
register int l2;
int
string_cmp(u_char* p1, int l1, u_char* p2, int l2)
{
while (l1 > 0 && l2 > 0) {
if (*p1 != *p2) return (*p1 - *p2);