1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-24 04:33:24 +00:00

New port, dserver:

A CD-ROM dictionary lookup facility (server and clients).

Submitted by:	Yoshio MITA <mita@jp.freebsd.org>
(Closing PR #2311.)
This commit is contained in:
Masafumi Max NAKANE 1997-01-29 03:56:05 +00:00
parent 75d64b6f76
commit 520b21cc72
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=5459
15 changed files with 1427 additions and 0 deletions

48
japanese/dserver/Makefile Normal file
View File

@ -0,0 +1,48 @@
# New ports collection makefile for: dserver
# Version required: 2.2betapl2
# Date created: 3 Nov 1996
# Whom: Mita Yoshio <mita@jp.FreeBSD.org>
#
# $Id$
#
DISTNAME= dserver2.2betapl2
PKGNAME= jp-dserver-2.2.2
CATEGORIES= japanese
MASTER_SITES= ftp://ftp.pu-toyama.ac.jp/pub/misc/ \
ftp://ports.jp.FreeBSD.org/pub/FreeBSD-jp/ports-jp/LOCAL_PORTS/
DISTFILES= dserver2.2betapl2.tar.gz dserver2.2betapl2.addtable.tar.gz \
diclookup-mule-2.3.0.add.tar.gz
EXTRACT_ONLY= dserver2.2betapl2.tar.gz dserver2.2betapl2.addtable.tar.gz
MAINTAINER= mita@jp.FreeBSD.org
RUN_DEPENDS= jless:${PORTSDIR}/japanese/less \
${X11BASE}/lib/X11/fonts/non-cjk/fonts.dir:${PORTSDIR}/x11/etlfonts
BUILD_DEPENDS= mule:${PORTSDIR}/japanese/mule-wnn
WRKSRC= ${WRKDIR}/dserver
USE_GMAKE= yes
post-extract:
@( \
cd ${WRKSRC}/clients ; \
tar xzf diclookup-mule.tar.gz ; \
tar xzf ${DISTDIR}/diclookup-mule-2.3.0.add.tar.gz \
)
pre-patch:
@( \
cd ${WRKSRC}/clients/diclookup-mule-2.3.0 ; \
${PATCH} --quiet < od-ccl.oxford.patch \
)
post-install:
@${SED} s!PREFIX_DIR!${PREFIX}!g ${WRKSRC}/setup.sh.template \
> ${PREFIX}/lib/dserver/setup.sh
@${SED} s!PREFIX_DIR!${PREFIX}!g ${WRKSRC}/deinstall.sh.template \
> ${PREFIX}/lib/dserver/deinstall.sh
@${INSTALL_DATA} ${FILESDIR}/README.FreeBSD-setup ${PREFIX}/lib/dserver/doc/
@${SETENV} PKG_PREFIX=${PREFIX} /bin/sh ${PKGDIR}/REQ ${PKGNAME} INSTALL
.include <bsd.port.mk>

View File

@ -0,0 +1,3 @@
MD5 (dserver2.2betapl2.tar.gz) = d060ac3965c383a40a7ecfa95470e922
MD5 (dserver2.2betapl2.addtable.tar.gz) = c238b0189ce67b584c04f545cf52b65b
MD5 (diclookup-mule-2.3.0.add.tar.gz) = e66a2e92fc486b9e0534bf036f4a3817

View File

@ -0,0 +1,360 @@
Dserver FreeBSD portセットアップについて
3.Nov.1996
Revised 20.Dec.1996
三田吉郎 <mita@jp.FreeBSD.org>
Special thanks to MIHIRA Yoshiro <sanpei@yy.cs.keio.ac.jp>
目次
I. インストール
I.1. setup.sh の具体的な作業
I.2. 4: 辞書のコピー・マウント
I.3. サーバの動作テスト
II. 使う
II.1. kenjiro
II.2. diclookup-mule
III. 削除(uninstall)
IV. `inetd起動のdserver'を作る方法
IV.1. `inetd起動のdserverとは何か'
IV.2. standaloneとinetdとどちらを選択するか
IV.3. inetd起動のdserverを作る
IV.4. 初期設定スクリプトの違い.
V. エラーとその対策
V.1 muleで辞書を引こうとしたのですが
いつまでたっても切り替わりません.
V.2. muleで`process *ndtp* not running'というエラーが出ます.
V.3. 辞書を10種類以上にしたら途端にBus Errorで落っこちます
※ 文中の${PREFIX}は,/usr/localに読み変えてくださいportsを利用して
コンパイルすると,${PREFIX}を/usr/local以外にも自分の好みの
ディレクトリに設定することができます.
I. インストール
dserver の ports を インストールした後に必要な作業は次の通りで
す.
1: [/etc/services] に ndtp プロトコルのエントリを追加
2: dserver 起動用スクリプトの準備
3: mule クライアント diclookup-mule 用の初期設定
4: 辞書をコピーまたはマウント
これらの作業は, [${PREFIX}/lib/dserver/setup.sh] を起動すると, 1
3 までを自動的に設定してくれます.
※ ${PREFIX}
ここで ${PREFIX} とは ports をコンパイル時の環境変数 PREFIX を
示します. packages では, [/usr/local] となります. 上記の場合,
[/usr/local/lib/dserver/setup.sh] と適時読みかえてください.
I.1. setup.sh の具体的な作業
この setup.sh では, 具体的に次の作業を行います.
1: [/etc/services] の末尾に次の行を追加します.
-----
ndtp 2010/tcp #Network Dictionary Transfer Protocol
-----
2: [${PREFIX}/etc/rc.d/dserver.sh] に次の行を追加します.
これにより, OS ブート時に dserver が自動的に起動します.
-----
# dserver - dictionary server
if [ -f /usr/local/lib/dserver/dserver ] ; then
/usr/local/lib/dserver/dserver&
echo 'dserver'
fi
-----
3: [${PREFIX}/lib/mule/site-lisp/site-start.el] に次の行を追加します.
これにより, mule から特別な設定無しに利用できるようになります.
-----
;;; diclookup-mule: Online dictionary
(autoload 'online-dictionary "diclookup-mule" "Online dictionary." t nil)
(autoload 'od:lookup-pattern-edit "diclookup-mule" "Look up a word." t nil)
(setq od-chujiten-flag t) ; diclookup-mule
(setq od-dictfile-list '("od-chujiten" "od-kojien")) ; diclookup-mule
(setq dserver-server-list '("localhost")) ; diclookup-mule
(setq od-frame-geometry "+0-0" od-hide-frame 'make-invisible) ; diclookup-mule
(add-hook 'od-really-quit-hook 'od-delete-frame) ; diclookup-mule
(define-key-after menu-bar-file-menu [dictionary] ; diclookup-mule
'("Online Dictionary" . online-dictionary) 'calendar) ; diclookup-mule
-----
I.2. 4: 辞書のコピー・マウント
[${PREFIX}/share/dict/cdrom/] に,それぞれの辞書をマウントします.
[${PREFIX}/lib/dserver/dserver_access] のエントリと整合性を持たせる
ようにしてください.
makedic というプログラムを使うと,辞書サイズを概ね 1/3 に圧縮す
ることができます.使い方は簡単で次の通りです.
-----
makedic [オリジナルの辞書ファイル名] [新しい辞書ファイル名]
-----
※: 辞書のライセンスによる圧縮の制限
辞書をハードディスクにコピー,圧縮してよいかどうかの対応ですが,
広辞苑は×,研究社の事典は○であるなどと,各社異なります.
[${PREFIX}/lib/dserver/doc/README.dserver] を御覧下さい.
I.3. サーバの動作テスト
desrver を立ち上げるとdserver が使えるようになるはずです.次の
ように打ち込んで,簡単な接続試験をしてみましょう.
-----
telnet localhost ndtp<リターン>
-----
1: 接続試験その 1, アクセス可能かどうか
接続した上で A<リターン> と打ち込むと,[dserver_access] ファイル
でアクセス許可が出ている場合は $A という返事が帰って来るはずです.
-----
% telnet localhost ndtp
lavender: {1234} telnet localhost ndtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
A
$A
-----
※: アクセス許可ファイルの記述の注意
dserver の仕様として, アクセス許可のチェックは IP アドレスでは
なく, ホストネームで行われています. そのため, 次の場合例のように
localhost とだけ書いてもうまくアクセス許可を得れない場合がありま
す.
0) [/etc/hosts] に次のような行が含まれる.
--------
127.0.0.1 localhost.rad.cc.keio.ac.jp localhost dserver
--------
0-1) DNS が使える環境であるが, [/etc/host.conf] で bind より
host を先に書いている場合.
0-2) DNS を使えず [/etc/hosts] だけを参照する場合.
その場合には, 次のように [dserver_access] に記述するとアクセス
許可を得れます.
例: [/etc/hosts] が上記のような場合. 適時 rad.cc.keio.ac.jp. を追加
してください.
-----
localhost.rad.cc.keio.ac.jp
-----
2: 接続試験その 2, 辞書が使用可能かどうか?
アクセス許可を得た後T<リターン> と打ち込むと,使用可能な辞書の
リストを得ることができます.
辞書リストの例:
-----
T
1 研究社中和英
2 研究社中和英
3 三省堂クラウン仏和
$*
-----
辞書をインストールしたにも関わらず利用可能になっていない場合は,
[dserver_access] ファイルとCDROM のディレクトリ構造を確認してみ
てください辞書ファイルはstart とか hommon とかいう名前になって
いますが,このインストール位置が狂っているばあいがよくあります.
リスト中の漢字はEUC漢字コードを使っていますので
ktermを`kterm -km euc'で立ちあげたりctrl+中ボタンを押して
選択するなどしてEUC漢字コードを表示できるようにしてください
II. 使う
II.1. kenjiro
コマンドラインから引きたい場合は kenjiro<リターン> です.
【指定辞書無し】と出たときに<ESC>キーを押すと辞書が選択できます.
リストに無い辞書を読みたい場合はports を用意して make patch の
後 [${WRKSRC}/clients/kenjiro/config.h] を書き換えてmakeし直します
II.2. diclookup-mule
私はこちらのクライアントを気に入っていますM-x
online-dictionary<リターン>で起動します.
[${PRFIX}/lib/mule/site-lisp/od-***.elc]が,それぞれの辞書に
対応した外字ファイルです,これをハックすれば大抵の辞書を読むことが
できるでしょう.
ハックするときに,外字の形をどうやって調べるかが問題ですが,ひな
がたを適当に作っておいて実際に辞書を読むと
-----
著作権表示
外字1
外字2
-----
などとメニューが表示されます.ここで外字を選択すると,
1. この辞書で登録されている外字の文字コード
2. 外字のビットマップ(;)表示
3. 外字をXウィンドウとテキスト端末とでどう表示しているか
がわかりますので,それに合わせて外字テーブル(とそのコードの上位
8bitの数)を書き換えます.
この ports に入っている od-crown.elc(クラウン仏和,クラウ
ン独和)od-italian.elc(現代イタリア語表現辞典)od-oxford.el
(オクスフォード英英辞典,シソーラス類義語辞典)は,
od-chujiten.el(新英和和英)を上述の方法で私三田が hack
したものです.なれれば一辞書を半日で対応できます.ぜひ対応させて,
本家に contribute しましょう.
III. 削除(uninstall)
削除はインストールの逆を行えばよいわけですが3-1 を自動的に行
うためのシェルスクリプト,[${PREFIX}/lib/dserver/deinstall.sh] を
用意しておきました.
その後でpkg_deleteを行えばOKのはずです
IV. `inetd起動のdserver'を作る
このportsでは特に指定しない限り`standaloneのdserver'を
作るようにしていますが,`inetd起動のdserver'を作ることもできます.
IV.1 `inetd起動のdserver'とは何か?
これまで説明してきた例ではこのportsでの標準設定である
dserverをstandaloneで使用するための設定を紹介してきました
standaloneではプログラムdserverシステムを起動したときから
システムが終了する時までずっと走っていて,「全ての接続要求を
一つのdserverが処理」します
inetdではプログラムdserverは普段は走っておらず接続要求がくるたびに
inetdから起動されます「別々の接続要求は別々のdserverが処理」します
IV.2. standaloneとinetdとどちらを選択するか
ライセンス制限(ファイルdserver_accessで辞書を同時に読めるユーザ数を
制限できる機能です)を使うためには全ての接続要求を一つのdserverが
処理する必要があるのでstandaloneで立ちあげる必要があります
inetdではdserverを使っていないときにCDROMを差し替えることができます
amdと組み合わせるのが便利です
IV.3. inetd起動のdserverを作る
rootになって/usr/ports/japanese/dserverのディレクトリで
-----
make package
-----
と入力すると,ファイルを展開した後に,
standaloneでdserverを動かすように設定するかそれとも
inetdから接続するたびに呼び出すように設定するかの
選択画面になります.
----------------- dserver port configuration -----------------
| How do you want to run dserver, standalone or run by inetd?|
| |
| (*) standalone stanalone |
| ( ) inetd inetd |
| |
| [ OK ] Cancel |
--------------------------------------------------------------
普段はこの画面のようにstandaloneで起動する設定になっていますが
上下カーソルとリターンキーでinetdを選択すると
inetdから呼び出す設定になります(下図はinetdを選択したところ)
----------------- dserver port configuration -----------------
| How do you want to run dserver, standalone or run by inetd?|
| |
| ( ) standalone stanalone |
| (*) inetd inetd |
| |
| [ OK ] Cancel |
--------------------------------------------------------------
IV.4. 初期設定スクリプトの違い.
初期設定スクリプトsetup.sh, deinstall.shは
inetd起動を選択した場合とstandaloneを選択した場合とで違ったものが
インストールされます.
inetd起動用のsetup.shではstandaloneに比べて以下の点が異なっています
* /usr/local/etc/rc.d/dserver.shを作成しない
* /etc/inetd.confへのdserverのエントリを追加する
* inetdを立ちあげ直す(HUPシグナルを送る)
使い方はinetd, standalone用とも一緒です
V. エラーとその対策
V.1. muleで辞書を引こうとしたのですがいつまでたっても切り替わりません
muleで
-----
M-x online-dictionary
-----
と入力すると,辞書用のフレームが新しく作られますが,その後いつまで
経ってもタイトルが表示されない症状です.
接続許可を正しく出しているかを疑ってみます.
I.3. サーバの動作テスト に従って,手動で接続してみます.
接続に失敗している場合は,${PREFIX}/dserver/dserver_accessファイルで
アクセス許可を正しく出します.
-----接続に成功している例:
% telnet localhost ndtp
lavender: {1234} telnet localhost ndtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
A
$A
-----
-----接続に失敗している例:
% telnet localhost ndtp
lavender: {1234} telnet localhost ndtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
A
$N
-----
V.2. muleで`process *ndtp* not running'というエラーが出ます.
standaloneの場合dserverが何かの原因でこけたのでしょう
もう一度dserverを立ちあげ直してみてください
-----
%su root
#/usr/local/lib/dserver/dserver&
-----
V.3. 辞書を10種類以上にしたら途端にBus Errorで落っこちます
server2.2-pl2/config.hのMAXDICTの値を10から増やして
コンパイルし直しましょう.
※dserver_accessファイルの設定を変更している場合バックアップしておきます
-----
% su root
#cp /usr/local/lib/dserver/dserver_access /tmp/dserver_access.orig
# cd /usr/ports/japanese/dserver
# make patch
# vi work/dserver/server2.2-pl2/config.h
# make install
#cp /tmp/dserver_access.orig /usr/local/lib/dserver/dserver_access
-----
質問不平不満など御座いましたらmita@jp.FreeBSD.orgにどうぞ

View File

@ -0,0 +1,10 @@
#!/bin/sh
echo "updating /etc/services"
cp /etc/services /etc/services.bak
(grep -v '\bndtp\b' /etc/services.bak) > /etc/services
echo "updating /etc/inetd.conf"
cp /etc/inetd.conf /etc/inetd.conf.bak
(grep -v '\bndtp\b' /etc/inetd.conf.bak) > /etc/inetd.conf
echo "updating site-start.el"
cp PREFIX_DIR/lib/mule/site-lisp/site-start.el PREFIX_DIR/lib/mule/site-lisp/site-start.el.bak
grep -v diclookup-mule PREFIX_DIR/lib/mule/site-lisp/site-start.el.bak > PREFIX_DIR/lib/mule/site-lisp/site-start.el

View File

@ -0,0 +1,9 @@
#!/bin/sh
echo "updating /etc/services"
cp /etc/services /etc/services.bak
(grep -v '\bndtp\b' /etc/services.bak) > /etc/services
echo "Removing PREFIX_DIR/etc/rc.d/dserver.sh"
rm -f PREFIX_DIR/etc/rc.d/dserver.sh
echo "updating site-start.el"
cp PREFIX_DIR/lib/mule/site-lisp/site-start.el PREFIX_DIR/lib/mule/site-lisp/site-start.el.bak
grep -v diclookup-mule PREFIX_DIR/lib/mule/site-lisp/site-start.el.bak > PREFIX_DIR/lib/mule/site-lisp/site-start.el

View File

@ -0,0 +1,18 @@
--- Makefile.orig Wed Nov 6 13:01:50 1996
+++ Makefile Wed Nov 6 13:02:12 1996
@@ -0,0 +1,15 @@
+PREFIX?=/usr/local
+DOCDIR=${PREFIX}/lib/dserver/doc
+all:
+ (cd server2.2-pl2; ${MAKE} all)
+ (cd clients/kenjiro; ${MAKE} all)
+ (cd clients/diclookup-mule-2.3.0; ${MAKE} all)
+install:
+ if [ ! -d ${DOCDIR} ] ; then mkdir -p ${DOCDIR} ; fi
+ (cd server2.2-pl2; ${MAKE} install)
+ (cd clients/kenjiro; ${MAKE} install)
+ (cd clients/diclookup-mule-2.3.0; ${MAKE} install)
+ cp ACKNOWLEDGMENT DICTIONARIES doc/* ${PREFIX}/lib/dserver/doc
+ cp clients/diclookup-mule-2.3.0/README ${DOCDIR}/README.diclookup-mule
+ cp clients/kenjiro/Copyright ${DOCDIR}/Copyright.kenjiro
+ cp clients/kenjiro/README ${DOCDIR}/README.kenjiro

View File

@ -0,0 +1,412 @@
patches for server2.2-pl2
--- server2.2-pl2/daemon.c.orig Sat Aug 10 02:10:32 1996
+++ server2.2-pl2/daemon.c Tue Jan 28 08:22:42 1997
@@ -13,6 +13,11 @@
#include <sys/time.h>
#include <ctype.h>
+#ifdef __FreeBSD__
+#include <stdlib.h>
+#include <string.h>
+#endif
+
#ifdef linux
#include <string.h>
#include <stdlib.h>
@@ -34,10 +39,11 @@
#include "ndtp.h"
#include "misc.h"
-
+#ifndef __FreeBSD__
#ifdef DEBUG
extern int debug;
#endif
+#endif
ENV env[MAXUSER];
@@ -104,8 +110,11 @@
#endif
exit(1);
}
-
+#ifdef __FreeBSD__
+ if( bind(ls, (struct sockaddr *)&myaddr_in, sizeof(struct sockaddr_in)) == -1) {
+#else
if( bind(ls, &myaddr_in, sizeof(struct sockaddr_in)) == -1) {
+#endif
#ifdef SYSLOG
syslog(LOG_ERR,"Unable to bind address /iserver_init\n");
#endif
--- server2.2-pl2/lookup.c.orig Sat Aug 10 02:10:32 1996
+++ server2.2-pl2/lookup.c Tue Jan 28 08:22:42 1997
@@ -501,6 +501,54 @@
else return q+6;
}
+#ifdef HALF
+reg_jisstrnsub_(s,t,r,n,CODE)
+unsigned char *s, *t;
+int r,n;
+int CODE;
+{
+ unsigned int ss,tt;
+ if (CODE == FULL) {
+ for(; ; s+=2,t+=2,n-=2) {
+ ss = (*s&0x7f)<<8|*(s+1)&0x7f;
+ tt = (*t&0x7f)<<8|*(t+1)&0x7f;
+ if (n <= 0) tt = 0; /* string terminate 95.2.8 by T.Motoda */
+
+ if(r==SHORT && (ss=='*' || ss=='?')) {
+ return 0;
+ }
+ if(r==WHOLE && (ss=='*')) {
+ return 0;
+ }
+ if(!ss || !tt) break;
+ if(r==WHOLE && (ss=='?')) {
+ continue;
+ }
+ if(ss!=tt) break;
+ }
+ } else {
+ for(; ; s++,t++,n--) {
+ ss = (*s);
+ tt = (*t);
+ if (n <= 0) tt = 0; /* string terminate 95.2.8 by T.Motoda */
+
+ if(r==SHORT && (ss=='*' || ss=='?')) {
+ return 0;
+ }
+ if(r==WHOLE && (ss=='*')) {
+ return 0;
+ }
+ if(!ss || !tt) break;
+ if(r==WHOLE && (ss=='?')) {
+ continue;
+ }
+ if(ss!=tt) break;
+ }
+ }
+ return ss-tt;
+}
+#endif
+
findentry_int(key,realkey,frm,env_p)
unsigned char *key,*realkey;
ENV *env_p;
@@ -509,6 +557,9 @@
unsigned char frame[FRAMESIZE+2];
static char msg[32];
Dict *dict;
+#ifdef HALF
+ int CODE=dict_set[env_p->dict_num].code; /* FULL or HALF */
+#endif
dict=env_p->dict;
@@ -542,12 +593,21 @@
putnstr(q,s);
printf("\n");
#endif
+#ifdef HALF
+ if(reg_jisstrnsub_(key,q,SHORT,s,CODE)<=0) {
+ findentry_int(key,realkey,FOURBYTEUINT(q+s),env_p);
+ }
+ if(reg_jisstrnsub_(key,q,SHORT,s,CODE)<0) {
+ return;
+ }
+#else
if(reg_jisstrnsub(key,q,SHORT,s)<=0) {
findentry_int(key,realkey,FOURBYTEUINT(q+s),env_p);
}
if(reg_jisstrnsub(key,q,SHORT,s)<0) {
return;
}
+#endif
}
}
else if(frame[1]==0) {
@@ -625,7 +685,11 @@
putnstr(q,s);
#endif
if(!match) {
+#ifdef HALF
+ match=!reg_jisstrnsub_(realkey,q,WHOLE,s,CODE);
+#else
match=!reg_jisstrnsub(realkey,q,WHOLE,s);
+#endif
}
q+=s;
#ifdef DEBUG
@@ -644,7 +708,11 @@
putnstr(q,s);
#endif
if(!match) {
+#ifdef HALF
+ match=!reg_jisstrnsub_(realkey,q,WHOLE,s,CODE);
+#else
match=!reg_jisstrnsub(realkey,q,WHOLE,s);
+#endif
}
#ifdef DEBUG
putchar('\n');
--- server2.2-pl2/Makefile.orig Sat Aug 10 02:12:05 1996
+++ server2.2-pl2/Makefile Tue Jan 28 08:22:43 1997
@@ -2,33 +2,39 @@
#CC=cc
CC=gcc
-DSERVERTOPDIR=/usr/local/etc/dserverdir
+DSERVERTOPDIR=${PREFIX}/lib/dserver
#DSERVERTOPDIR=/nfs/home40/usui/dserver/server2.2-current/table
-DICTROOT=/usr/local/dict
+DICTROOT=${PREFIX}/share/dict
ACCESSFILE=${DSERVERTOPDIR}/dserver_access
-BINDIR=/usr/local/lib
+BINDIR=${PREFIX}/lib/dserver
+DOCDIR=${DSERVERTOPDIR}/doc
+LISPLIB=${PREFIX}/lib/mule/site-lisp
#LISPLIB=/usr/local/lib/Nemacs/lisp #usui
DEFS=-D'ACCESSFILE="$(ACCESSFILE)"' \
--D'DSERVERTOPDIR="$(DSERVERTOPDIR)"'
+-D'DSERVERTOPDIR="$(DSERVERTOPDIR)"' -DHALF
# define AUTH for auth
# define DICLOOKUPMULE for mule
-OFLAG=
-CFLAGS= $(OFLAG) -DSTANDALONE $(DEFS) -DDEBUG -DSYSLOG
-CFLAGS=-Dsparc $(OFLAG) -DSYSLOG -DSTANDALONE $(DEFS)
+OFLAG= -O -m486
+#CFLAGS= $(OFLAG) -DSTANDALONE $(DEFS) -DDEBUG -DSYSLOG
+#CFLAGS=-Dsparc $(OFLAG) -DSYSLOG -DSTANDALONE $(DEFS)
#CFLAGS=-Dsparc $(OFLAG) -DSYSLOG -DAUTH -DDICLOOKUPMULE -DSTANDALONE $(DEFS)
-CFLAGS=-Dsparc $(OFLAG) -DSYSLOG -DSTANDALONE $(DEFS) -DDEBUG
+#CFLAGS=-Dsparc $(OFLAG) -DSYSLOG -DSTANDALONE $(DEFS) -DDEBUG
+CFLAGS= $(OFRAG) -DSTANDALONE -DSYSLOG $(DEFS)
#for solaris
#CFLAGS=-Dsolaris -Dsparc $(OFLAG) -DSYSLOG -DSTANDALONE $(DEFS)
#DFLAGS =-lsocket -lnsl -R/usr/ucblib -L/usr/ucblib -lucb
-all: dserver
+all: dserver compress/makedic
dserver: $(OBJ)
$(CC) $(CFLAGS) -o dserver $(OBJ)
+compress/makedic:
+ (cd compress ; ${MAKE} all)
+
#dserver: $(OBJ)
# $(CC) $(CFLAGS) -o dserver $(OBJ) $(DFLAGS)
@@ -39,4 +45,12 @@
lint -Dsparc -DSTANDALONE -DSYSLOG $(DEFS) *.c
install:
- install -m 755 dserver $(BINDIR)
+ if [ ! -d ${DOCDIR} ] ; then mkdir -p ${DOCDIR} ; fi
+ if [ ! -d ${DICTROOT}/cdrom ] ; then mkdir -p ${DICTROOT}/cdrom ; fi
+ install -c -s -m 755 dserver $(BINDIR)
+ (cd compress ; ${MAKE} install)
+ cp table/*.tbl table/dserver_access ${DSERVERTOPDIR}
+ cat table/dserver_access | sed -e 's!PREFIX_DIR!${PREFIX}!g' > ${DSERVERTOPDIR}/dserver_access
+ cp CHANGES newfeature.doc ${DOCDIR}
+ cp README ${DOCDIR}/README.dserver
+ cp table/README ${DOCDIR}/README.table
--- server2.2-pl2/subnet.c.orig Sat Aug 10 02:10:30 1996
+++ server2.2-pl2/subnet.c Tue Jan 28 08:22:43 1997
@@ -1,6 +1,7 @@
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
+#include <sys/time.h>
#include <net/if.h>
#include <sys/ioctl.h>
--- server2.2-pl2/table/dserver_access.orig Sat Aug 10 02:10:27 1996
+++ server2.2-pl2/table/dserver_access Tue Jan 28 08:22:43 1997
@@ -1,14 +1,20 @@
-#DICT kojien /usr/local/etc/CDdict/yrrs096/koujien/start. "広辞苑第4版" 1 600
-##DICT eiwa /usr/local/etc/CDdict/yrrs118/chujiten/start. "研究社中英和" 25 600
-##DICT eiwa /usr/local/etc/CDdict/yrrs118/chujiten/start.comp "研究社中英和" 25 600
-##DICT eiwa /usr/local/etc/CDdict/yrrs009/eiwa/start.comp "研究社中英和" 25 600
-##DICT waei /usr/local/etc/CDdict/yrrs118/chujiten/start.comp "研究社中和英" 25 600
-#DICT waei /usr/local/etc/CDdict/cdchujiten/chujiten/data/honmon. "研究社中和英" 25 600
-#DICT eiwa /usr/local/etc/CDdict/cdchujiten/chujiten/data/honmon. "研究社中和英" 25 600
-#DICT CDkojien /usr/local/etc/CDdict/cdkouji/koujien/data/honmon. "広辞苑CD版" 1 600
-#DICT readers /usr/local/etc/CDdict/yrrs172/readers/start. "リーダーズ英和" 1 600
-#DICTROOT /usr/local/etc/CDdict 2 500
+#DICT kojien PREFIX_DIR/share/dict/cdrom/yrrs096/koujien/start "広辞苑第4版" 1 600
+#DICT kojien-furoku PREFIX_DIR/share/dict/cdrom/yrrs096/furoku/start "広辞苑第4版付録" 1 600
+#DICT waei PREFIX_DIR/share/dict/cdrom/cdchujiten/chujiten/data/honmon "研究社中和英" 25 600
+#DICT eiwa PREFIX_DIR/share/dict/cdrom/cdchujiten/chujiten/data/honmon "研究社中和英" 25 600
+#DICT readers PREFIX_DIR/share/dict/cdrom/yrrs172/readers/start "リーダーズ英和" 1 600
+#DICT crfre PREFIX_DIR/share/dict/cdrom/yrrs091/crfre/start "三省堂クラウン仏和" 1 600
+#DICT crger PREFIX_DIR/share/dict/cdrom/yrrs092/crger/start "三省堂クラウン独和" 1 600
+#DICT italian /usr/local/share/dict/cdrom/yrrs214/jiten/start "現代イタリア語表現辞典" 1 600
+#DICT italian-j /usr/local/share/dict/cdrom/yrrs214/jiten/start "現代イタリア語表現辞典" 1 600
+#DICT oxford /usr/local/share/dict/cdrom/san042/oxford/start "OxfordEnglishDictionary" 1 600
+#DICT CDkojien PREFIX_DIR/share/dict/cdrom/cdkouji/koujien/data/honmon "広辞苑CD版" 1 600
+#DICTROOT PREFIX_DIR/share/dict/cdrom 2 500
## access controle
#
-topics
+localhost
#
+##DICT eiwa PREFIX_DIR/share/dict/cdrom/yrrs118/chujiten/start "研究社中英和" 25 600
+##DICT waei PREFIX_DIR/share/dict/cdrom/yrrs118/chujiten/start "研究社中英和" 25 600
+##DICT eiwa PREFIX_DIR/share/dict/cdrom/yrrs118/chujiten/start.comp "研究社中英和" 25 600
+##DICT waei PREFIX_DIR/share/dict/cdrom/yrrs118/chujiten/start.comp "研究社中和英" 25 600
--- server2.2-pl2/compress/Makefile.orig Sat Aug 10 02:10:29 1996
+++ server2.2-pl2/compress/Makefile Tue Jan 28 08:22:43 1997
@@ -11,11 +11,15 @@
CFLAGS = -O -Wall
LFLAGS =
+
OBJ1 = main.o compress.o
OBJS = $(OBJ1)
PROG = makedic
+BINDIR = ${PREFIX}/bin
+
+all: $(PROG)
$(PROG) : $(OBJS)
$(CC) $(OBJS) $(LFLAGS) -o $(PROG)
@@ -26,5 +30,8 @@
main.o : defs.h
comp.o : defs.h
+install: $(PROG)
+ install -s $(PROG) $(BINDIR)
+
clean:
- rm -f *.o core makedic *~
+ rm -f *.o core makedic *~
--- server2.2-pl2/compress/main.c.orig Sat Aug 10 02:10:30 1996
+++ server2.2-pl2/compress/main.c Tue Jan 28 08:22:43 1997
@@ -3,6 +3,21 @@
by toshioji@darkover.iijnet.or.jp
dic version 0.24 cdio.c by kmiya さんを元に作成
+
+========== dic.man より引用開始 ==========
+DIC(1) Dic Users Manual DIC(1)
+
+
+DISTRIBUTION
+ このプログラムの改良 移植 転載 などは、 自由に行っても らっ
+ て結構です。 また、 作者に報告する必要もありません。
+
+ で き れば、改変された物であることの明記(どのバ-ジョンの
+ Dic をどのように変更したか)をしていただければ幸いです。
+
+ さらにソ-スコ-ドも同時に公開していただいてさらなる改良 が
+ 自由に 行われるようにすることを希望します。
+========== dic.man より引用終了 ==========
*/
#include "defs.h"
@@ -36,10 +51,95 @@
return 0;
}
+char ok(char *string)
+{
+ char key_buf[2];
+
+ fputs( string, stdout );
+ fgets( key_buf, 2, stdin );
+ return key_buf[0];
+}
+
+void caution(void)
+{
+
+ puts("<<<<<<<<< makedic を使われる前に※必ず※以下の内容を確認下さい。>>>>>>>>>
+
+これは dserver/server2.1/README「執筆 臼井 義比古@環境システム研究所」
+からライセンス関係の記述を抜きだしたものです。
+
+==================== dserver/server2.1/README ====================
+
+ ライセンスはちゃんと守って下さい,以下に三田吉郎<mita@jp.FreeBSD.org>
+ さんが調べて下さった文章を添付します.
+
+------------------------------------------------------------------------
+" );
+ ok( "<改行キーを押して下さい>" );
+
+ puts("
+ ライセンスについて 三田吉郎 <mita@jp.FreeBSD.org>
+
+ dserverは、8cmCDROM版研究社新英和・和英中辞典、岩波書店広辞苑を
+ 始めとする、電子ブックを読むことが出来ます。使用のたびにCDROMを
+ マウントすればよいのですが、例えばCDROM分離型のートパソコンで
+ 辞書を使いたいなど、ハードディスクにデータをコピーして使いたいと
+ 思うかも知れません。市販の
+ 辞書をハードディスクにコピーすること、または圧縮された辞書としての使用
+ に関して問題があるかどうか、研究社と岩波書店とにお伺いしてみました(平
+ 成8年6月20日)。
+");
+ ok( "<改行キーを押して下さい>" );
+ puts("
+ 研究社の回答(電話03-3288-7777)
+ 個人として使用するかぎりにおいては、ハードディスクへのコピー、また
+ そのデータが圧縮されてたとしても使用して良い。ただし、LAN上で
+ 複数の端末で使用する場合は、別途端末の台数を申告していただき、
+ 端末台数×(CDROM一枚の価格α)の値段を払う契約をしていただく。
+");
+ ok( "<改行キーを押して下さい>" );
+ puts("
+ 岩波書店辞典部の回答 (電話03-5210-4171)
+ CD-ROMドライブから読み出して使用することを前提としている。
+ ハードディスクへのコピーは避けていただきたい。
+ LAN上での使用の場合は、別途契約をしていただき、
+ ハードディスクへのコピーを許可している。ただしUNIX上の
+ サーバソフトに関しては把握していない。
+");
+ ok( "<改行キーを押して下さい>" );
+ puts("
+ dserverは、この他にもOEDや、科学技術用語辞典など、外字テーブルさえ
+ 用意すればほとんどのCDROMを読むことが出来ます。そのとき自分のローカル
+ ディスクにデータをコピーして使用して良いかは、各社対応が異なります。
+ 新しい辞書を使用する場合はまずライセンスを確認した後に使用することを
+ お勧めします。
+
+ ということですので、例えば新英和・和英中辞典に関しては個人のマシンの
+ ハードディスクにコピーすることは可能ですが、広辞苑に関してはLAN契約を
+ 結ばない限りハードディスクへのコピーをさけるのが良いようです。
+");
+ puts("------------------------------------------------------------------------
+以上
+");
+ switch( ok( "辞書を圧縮してハードディスクにコピーすることに
+ライセンス上の問題はありませんね[y/n] " ) ) {
+ case 'y':
+ case 'Y':
+ puts( "\n圧縮を開始します。\n" );
+ break;
+ default:
+ puts( "\nライセンス上の問題があるので中断しました\n" );
+ exit( -1 );
+ break;
+ }
+}
+
int main(int argc, char *argv[])
{
+ caution();
+
if( argc < 3 ) {
- fprintf( stderr, "%s soce_filename dest_filename\n", argv[ 0 ] );
+ fprintf( stderr, "Usage: %s soce_filename dest_filename\n", argv[ 0 ] );
exit( -1 );
}

View File

@ -0,0 +1,188 @@
patch files for kenjiro
--- clients/kenjiro/kenjiro.h.orig Tue Jun 27 01:21:31 1995
+++ clients/kenjiro/kenjiro.h Tue Jan 28 15:39:36 1997
@@ -41,7 +41,7 @@
#define F(n) (1 << n)
typedef struct {
- char name[10];
+ char name[16];
unsigned char prompt[25];
int inputmode;
int filter;
--- clients/kenjiro/sub.c.orig Tue Jun 27 01:21:31 1995
+++ clients/kenjiro/sub.c Tue Jan 28 15:39:36 1997
@@ -1,6 +1,11 @@
#include "kenjiro.h"
static int sttylevel = 0;
+#ifdef TERMIOS
+#include <termios.h>
+#include <unistd.h>
+static struct termios ttyorg, ttynew;
+#else /* TERMIOS */
#ifdef TERMIO
#include <termio.h>
#include <bsdtty.h>
@@ -10,6 +15,7 @@
static struct tchars tcorg, tcnew;
#endif
static struct ltchars ltcorg, ltcnew;
+#endif /* TERMIOS */
int numk;
int mode;
int fd1 = 0;
@@ -31,6 +37,26 @@
ttynew.c_cc[VQUIT] = 0;
if (ioctl(0, TCSETA, &ttynew) < 0) return;
#else
+# ifdef TERMIOS
+ if (tcgetattr(0, &ttyorg) < 0) return;
+ ttynew = ttyorg;
+ ttynew.c_lflag &= ~ECHO;
+ ttynew.c_lflag &= ~ICANON;
+ ttynew.c_cc[VMIN] = 1;
+ ttynew.c_cc[VTIME] = 0;
+ ttynew.c_cc[VQUIT] = 0;
+ ttynew.c_cc[VLNEXT] = _POSIX_VDISABLE;
+#if defined(VDSUSP)
+ ttynew.c_cc[VDSUSP] = _POSIX_VDISABLE;
+#else /* VDSUSP */
+# if defined(VEOL)
+ ttynew.c_cc[VEOL] = _POSIX_VDISABLE;
+# endif /* VEOL */
+#endif /* VDSUSP */
+ sttylevel++;
+ if (tcsetattr(0, TCSANOW, &ttynew) < 0) return;
+ sttylevel++;
+# else /* TERMIOS */
if (ioctl(0, TIOCGETP, &ttyorg) < 0) return;
ttynew = ttyorg;
ttynew.sg_flags |= CBREAK;
@@ -41,7 +67,9 @@
tcnew = tcorg;
tcnew.t_quitc = -1;
if (ioctl(0, TIOCSETC, &tcnew) < 0) return;
+# endif /* TERMIOS */
#endif
+#ifndef TERMIOS
sttylevel++;
if (ioctl(0, TIOCGLTC, &ltcorg) < 0) return;
ltcnew = ltcorg;
@@ -49,6 +77,7 @@
ltcnew.t_dsuspc = -1;
if (ioctl(0, TIOCSLTC, &ltcnew) < 0) return;
sttylevel++;
+#endif /* TERMIOS */
}
void romakana_fixtty()
@@ -60,12 +89,18 @@
case 1:
ioctl(0, TCSETA, &ttyorg);
#else
+# ifdef TERMIOS
+ case 2:
+ case 1:
+ tcsetattr(0, TCSANOW, &ttyorg);
+# else /* TERMIOS */
case 3:
ioctl(0, TIOCSLTC, &ltcorg);
case 2:
ioctl(0, TIOCSETC, &tcorg);
case 1:
ioctl(0, TIOCSETP, &ttyorg);
+# endif /* TERMIOS */
#endif
}
}
@@ -128,7 +163,7 @@
void getttyval()
{
-#ifdef TERMIO
+#if defined(TERMIO) || defined(TERMIOS)
struct winsize ws;
ioctl(0, TIOCGWINSZ, &ws);
--- clients/kenjiro/config.h.orig Tue Jun 27 01:21:34 1995
+++ clients/kenjiro/config.h Tue Jan 28 15:39:36 1997
@@ -1,7 +1,7 @@
-#define PAGER "/usr/local/bin/less" /* pager program */
+#define PAGER "/usr/local/bin/jless" /* pager program */
#define HISTSIZE 20 /* history size */
#define KOUHO 10 /* number of kouho (0 < n <= 10) */
-#define SERVER "dserver" /* hostname with server */
+#define SERVER "localhost" /* hostname with server */
#define SERVICE "ndtp" /* service name */
#define KANJICODE JIS /* default kanji code (JIS,EUC,SJIS)*/
/*#define PORT 2010*/ /* port of service */
@@ -15,6 +15,9 @@
{ "eiwa" , "研究社英和" , ENG , },
{ "waei" , "研究社和英" , JPN , },
{ "kojien" , "広辞苑" , JPN , },
+ { "kojien-furoku" , "広辞苑付録", JPN , },
{ "CDkojien" , "CD広辞苑" , JPN , },
- { "readers" , "リーダーず英和" , ENG , },
+ { "readers" , "リーダーズ英和" , ENG , },
+ { "crfre" , "三省堂クラウン仏和" , ENG , },
+ { "crger" , "三省堂クラウン独和" , ENG , },
};
--- clients/kenjiro/Makefile.orig Tue Jun 27 01:21:31 1995
+++ clients/kenjiro/Makefile Tue Jan 28 15:39:36 1997
@@ -1,5 +1,6 @@
-CFLAGS = -O # for termcap
+#CFLAGS = -O # for termcap
#CFLAGS = -O -DTERMIO # for termio
+CFLAGS = -O -DTERMIOS # for termios
# if you have no bcopy sigmask sigblock (e.g. on Solaris 2.x)
# define NO_BCOPY NO_SIGMASK NO_SIGBLOCK like
@@ -15,6 +16,11 @@
all: kenjiro kenjiro.l
+install: all
+ gzip -9Nf kenjiro.l
+ install -s kenjiro ${PREFIX}/bin/
+ install kenjiro.l.gz ${PREFIX}/man/manl/
+
kenjiro: $(OBJS)
$(CC) $(CFLAGS) -o kenjiro $(OBJS) $(LIBS)
@@ -30,6 +36,6 @@
ln -s filter.c.euc filter.c
clean:
- rm -f *.o *.out kenjiro.l kenjiro core typescript
+ rm -f *.o *.out kenjiro.l* kenjiro core typescript
# DO NOT DELETE
--- clients/diclookup-mule-2.3.0/Makefile.orig Mon Jul 24 16:01:57 1995
+++ clients/diclookup-mule-2.3.0/Makefile Tue Jan 28 15:39:36 1997
@@ -1,13 +1,13 @@
EMACS = mule
-LISPDIR = /usr/local/lib/mule/site-lisp
+LISPDIR = ${PREFIX}/lib/mule/site-lisp
RM = rm -f
UTILS = cclc.elc
ELCS = diclookup-mule.elc \
- od-eiwa.elc od-chujiten.elc od-kojien.elc
+ od-eiwa.elc od-chujiten.elc od-kojien.elc od-crown.elc od-oxford.elc od-italian.elc od-readers.elc
PROGRAMS = $(UTILS) $(ELCS)
@@ -19,7 +19,9 @@
all: $(PROGRAMS)
install: $(ELCS)
+ cp *.el $(LISPDIR)
cp $(ELCS) $(LISPDIR)
+ cp README ${PREFIX}/lib/dserver/doc/README.diclookup-mule
clean:
$(RM) $(PROGRAMS)

View File

@ -0,0 +1,139 @@
#!/bin/sh
echo "You have to do 5 things before using dserver via inetd."
echo "1. Add 'ndtp 2010/tcp' to /etc/services."
echo "2. Add 'ndtp stream tcp nowait root /usr/local/lib/dserver dserver'"
echo " to /etc/inetd.conf"
echo "3. Add startup configration of mule-client to site-start.el."
echo "4. Restart inetd by 'kill -HUP `cat /var/run/inetd.pid`'."
echo "5. Mount cdrom (or copy files) to PREFIX_DIR/dict/dserver/cdrom/."
# Hack /etc/services
echo
echo "Updating /etc/services";
cp /etc/services /etc/services.bak;
(grep -v ndtp /etc/services.bak ; echo "ndtp 2010/tcp # Network Dictionary Transfer Protocol") > /tmp/services
echo "Do you like to update /etc/services automatically? (y/n) [y]" ;
read ans;
case x${ans} in
xn*|xN*)
echo "Do you like to change /etc/services file by yourself? (y/n) [y]" ;
read choice ;
case x${choice} in
xn*|xN*)
echo "Okay, do nothing.";;
*)
echo "Edit /etc/services file by yourself (Press Return)";
read dummy;
vi -c /ndtp /tmp/services;
cp /tmp/services /etc/services; rm /tmp/services ;;
esac ;;
*)
echo "original file is saved in /etc/services.bak" ;
cp /tmp/services /etc/services; rm /tmp/services ;;
esac
# Hack /etc/inetd.conf
echo
echo "Updating /etc/inetd.conf";
cp /etc/inetd.conf /etc/inetd.conf.bak;
(grep -v ndtp /etc/inetd.conf.bak ; echo "ndtp stream tcp nowait root /usr/local/lib/dserver/dserver dserver") > /tmp/inetd.conf
echo "Do you like to update /etc/inetd.conf automatically? (y/n) [y]" ;
read ans;
case x${ans} in
xn*|xN*)
echo "Do you like to change /etc/inetd.conf file by yourself? (y/n) [y]" ;
read choice ;
case x${choice} in
xn*|xN*)
echo "Okay, do nothing.";;
*)
echo "Edit /etc/inetd.conf file by yourself (Press Return)";
read dummy;
vi -c /ndtp /tmp/inetd.conf;
cp /tmp/inetd.conf /etc/inetd.conf; rm /tmp/inetd.conf ;;
esac ;;
*)
echo "original file is saved in /etc/inetd.conf.bak" ;
cp /tmp/inetd.conf /etc/inetd.conf; rm /tmp/inetd.conf ;;
esac
echo "Do you want to restart inetd right now? (y/n) [y]" ;
read ans;
case x${ans} in
xn*|xN*)
echo "Remember to restart inetd (or reboot)."
;;
*)
echo "Restart inetd."
kill -HUP `cat /var/run/inetd.pid`
;;
esac
# Hack PREFIX_DIR/lib/mule/site-lisp/site-start.el
rm -f /tmp/hack-site-start.el
echo "(defun hack-site-start ()" >> /tmp/hack-site-start.el
echo " (interactive)" >> /tmp/hack-site-start.el
echo " (message \"Updating site-start.el. \")" >> /tmp/hack-site-start.el
echo " (let* ((args command-line-args-left)" >> /tmp/hack-site-start.el
echo " (fname (expand-file-name (nth 0 args)))" >> /tmp/hack-site-start.el
echo " (dir (nth 1 args)))" >> /tmp/hack-site-start.el
echo " (setq command-line-args-left (cdr (cdr command-line-args-left)))" >> /tmp/hack-site-start.el
echo " (set-buffer (get-buffer-create \" *x*\"))" >> /tmp/hack-site-start.el
echo " (erase-buffer)" >> /tmp/hack-site-start.el
echo " (if (file-exists-p fname)" >> /tmp/hack-site-start.el
echo " (insert-file-contents fname))" >> /tmp/hack-site-start.el
echo " (goto-char (point-min))" >> /tmp/hack-site-start.el
echo " (if (search-forward \";;; diclookup-mule: Online dictionary\" nil t)" >> /tmp/hack-site-start.el
echo " (message \"No changes made.\")" >> /tmp/hack-site-start.el
echo " (goto-char (point-max))" >> /tmp/hack-site-start.el
echo " (insert \"\n;;; diclookup-mule: Online dictionary\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(autoload 'online-dictionary \\\"diclookup-mule\\\" \")" >> /tmp/hack-site-start.el
echo " (insert \"\\\"Online dictionary.\\\" t nil)\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(autoload 'od:lookup-pattern-edit \\\"diclookup-mule\\\" \")" >> /tmp/hack-site-start.el
echo " (insert \"\\\"Look up a word.\\\" t nil)\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(setq od-chujiten-flag t) ; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(setq od-dictfile-list '(\\\"od-chujiten\\\" \\\"od-kojien\\\" \\\"od-readers\\\" \\\"od-crown\\\")) \")" >> /tmp/hack-site-start.el
echo " (insert \"; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(setq dserver-server-list '(\\\"localhost\\\")) ; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(setq od-frame-geometry \\\"+0-0\\\" od-hide-frame \")" >> /tmp/hack-site-start.el
echo " (insert \"'make-invisible) ; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(add-hook 'od-really-quit-hook 'od-delete-frame) \")" >> /tmp/hack-site-start.el
echo " (insert \"; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(define-key-after menu-bar-file-menu [dictionary] \")" >> /tmp/hack-site-start.el
echo " (insert \"; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (insert \" '(\\\"Online Dictionary\\\" . online-dictionary) 'calendar) \")" >> /tmp/hack-site-start.el
echo " (insert \"; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (write-file fname))))" >> /tmp/hack-site-start.el
# Hack site-start.el
echo
echo "Updating PREFIX_DIR/lib/mule/site-lisp/site-start.el";
cp PREFIX_DIR/lib/mule/site-lisp/site-start.el PREFIX_DIR/lib/mule/site-lisp/site-start.el.bak
echo "Do you like to update site-start.el automatically? (y/n) [y]" ;
read ans;
case x${ans} in
xn*|xN*)
echo "Do you like to change site-start.el file by yourself?(y/n) [y]" ;
read choice ;
case x${choice} in
xn*|xN*)
echo "Okay, Do nothing."
rm -f PREFIX_DIR/lib/mule/site-lisp/site-start.el.bak ;;
*)
mule -batch -q -l /tmp/hack-site-start.el -f hack-site-start \
PREFIX_DIR/lib/mule/site-lisp/site-start.el ;
echo "Edit site-start.el file by yourself (Press Return)";
read dummy;
vi -c /diclookup PREFIX_DIR/lib/mule/site-lisp/site-start.el ;
echo "original file is saved in PREFIX_DIR/lib/mule/site-lisp/site-start.el.bak";;
esac;;
*)
mule -batch -q -l /tmp/hack-site-start.el -f hack-site-start \
PREFIX_DIR/lib/mule/site-lisp/site-start.el ;
echo "original file is saved in PREFIX_DIR/lib/mule/site-lisp/site-start.el.bak" ;;
esac
rm -f /tmp/hack-site-start.el
echo "Now startup configuration is done."
echo "Remember to mount cdrom to PREFIX_DIR/dict/dserver/cdrom."

View File

@ -0,0 +1,136 @@
#!/bin/sh
echo "You have to do 4 things before using dserver."
echo "1. Add 'ndtp 2010/tcp' to /etc/services."
echo "2. Add startup command of dserver to PREFIX_DIR/etc/rc.d/"
echo "3. Add startup configration of mule-client to site-start.el."
echo "4. Mount cdrom (or copy files) to PREFIX_DIR/dict/dserver/cdrom/."
# Hack /etc/services
echo
echo "Updating /etc/services";
cp /etc/services /etc/services.bak;
(grep -v ndtp /etc/services.bak ; echo "ndtp 2010/tcp # Network Dictionary Transfer Protocol") > /tmp/services
echo "Do you like to update /etc/services automatically? (y/n) [y]" ;
read ans;
case x${ans} in
xn*|xN*)
echo "Do you like to change /etc/services file by yourself? (y/n) [y]" ;
read choice ;
case x${choice} in
xn*|xN*)
echo "Okay, do nothing.";;
*)
echo "Edit /etc/services file by yourself (Press Return)";
read dummy;
vi -c /ndtp /tmp/services;
cp /tmp/services /etc/services; rm /tmp/services ;;
esac ;;
*)
echo "original file is saved in /etc/services.bak" ;
cp /tmp/services /etc/services; rm /tmp/services ;;
esac
# Add startup shell script to PREFIX_DIR/etc/rc.d
echo
echo "Adding startup shell script to PREFIX_DIR/etc/rc.d/"
echo "Do you like to add startup shell script automatically? (y/n) [y]" ;
(echo "# dserver - dictionary server" ;
echo "if [ -x PREFIX_DIR/lib/dserver/dserver ] ; then" ;
echo " PREFIX_DIR/lib/dserver/dserver &" ;
echo " echo -n ' dserver'" ;
echo "fi") > /tmp/dserver.sh
read ans;
case x${ans} in
xn*|xN*)
echo "Do you like to edit PREFIX_DIR/etc/rc.d/dserver.sh file by yourself? (y/n) [y]" ;
read choice ;
case x${choice} in
xn*|xN*)
echo "Okay, do nothing."
echo "rm /tmp/dserver.sh"
;;
*)
echo "Edit dserver.sh file by yourself (Press Return)";
read dummy;
vi /tmp/dserver.sh;
cp /tmp/dserver.sh PREFIX_DIR/etc/rc.d/
chmod 755 PREFIX_DIR/etc/rc.d/dserver.sh
rm /tmp/dserver.sh
;;
esac
;;
*)
cp /tmp/dserver.sh PREFIX_DIR/etc/rc.d/
chmod 755 PREFIX_DIR/etc/rc.d/dserver.sh
rm /tmp/dserver.sh
echo "dserver.sh is added to PREFIX_DIR/etc/rc.d/"
esac
# Hack PREFIX_DIR/lib/mule/site-lisp/site-start.el
rm -f /tmp/hack-site-start.el
echo "(defun hack-site-start ()" >> /tmp/hack-site-start.el
echo " (interactive)" >> /tmp/hack-site-start.el
echo " (message \"Updating site-start.el. \")" >> /tmp/hack-site-start.el
echo " (let* ((args command-line-args-left)" >> /tmp/hack-site-start.el
echo " (fname (expand-file-name (nth 0 args)))" >> /tmp/hack-site-start.el
echo " (dir (nth 1 args)))" >> /tmp/hack-site-start.el
echo " (setq command-line-args-left (cdr (cdr command-line-args-left)))" >> /tmp/hack-site-start.el
echo " (set-buffer (get-buffer-create \" *x*\"))" >> /tmp/hack-site-start.el
echo " (erase-buffer)" >> /tmp/hack-site-start.el
echo " (if (file-exists-p fname)" >> /tmp/hack-site-start.el
echo " (insert-file-contents fname))" >> /tmp/hack-site-start.el
echo " (goto-char (point-min))" >> /tmp/hack-site-start.el
echo " (if (search-forward \";;; diclookup-mule: Online dictionary\" nil t)" >> /tmp/hack-site-start.el
echo " (message \"No changes made.\")" >> /tmp/hack-site-start.el
echo " (goto-char (point-max))" >> /tmp/hack-site-start.el
echo " (insert \"\n;;; diclookup-mule: Online dictionary\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(autoload 'online-dictionary \\\"diclookup-mule\\\" \")" >> /tmp/hack-site-start.el
echo " (insert \"\\\"Online dictionary.\\\" t nil)\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(autoload 'od:lookup-pattern-edit \\\"diclookup-mule\\\" \")" >> /tmp/hack-site-start.el
echo " (insert \"\\\"Look up a word.\\\" t nil)\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(setq od-chujiten-flag t) ; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(setq od-dictfile-list '(\\\"od-chujiten\\\" \\\"od-kojien\\\" \\\"od-readers\\\" \\\"od-crown\\\")) \")" >> /tmp/hack-site-start.el
echo " (insert \"; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(setq dserver-server-list '(\\\"localhost\\\")) ; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(setq od-frame-geometry \\\"+0-0\\\" od-hide-frame \")" >> /tmp/hack-site-start.el
echo " (insert \"'make-invisible) ; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(add-hook 'od-really-quit-hook 'od-delete-frame) \")" >> /tmp/hack-site-start.el
echo " (insert \"; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (insert \"(define-key-after menu-bar-file-menu [dictionary] \")" >> /tmp/hack-site-start.el
echo " (insert \"; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (insert \" '(\\\"Online Dictionary\\\" . online-dictionary) 'calendar) \")" >> /tmp/hack-site-start.el
echo " (insert \"; diclookup-mule\n\")" >> /tmp/hack-site-start.el
echo " (write-file fname))))" >> /tmp/hack-site-start.el
# Hack site-start.el
echo
echo "Updating PREFIX_DIR/lib/mule/site-lisp/site-start.el";
cp PREFIX_DIR/lib/mule/site-lisp/site-start.el PREFIX_DIR/lib/mule/site-lisp/site-start.el.bak
echo "Do you like to update site-start.el automatically? (y/n) [y]" ;
read ans;
case x${ans} in
xn*|xN*)
echo "Do you like to change site-start.el file by yourself?(y/n) [y]" ;
read choice ;
case x${choice} in
xn*|xN*)
echo "Okay, Do nothing."
rm -f PREFIX_DIR/lib/mule/site-lisp/site-start.el.bak ;;
*)
mule -batch -q -l /tmp/hack-site-start.el -f hack-site-start \
PREFIX_DIR/lib/mule/site-lisp/site-start.el ;
echo "Edit site-start.el file by yourself (Press Return)";
read dummy;
vi -c /diclookup PREFIX_DIR/lib/mule/site-lisp/site-start.el ;
echo "original file is saved in PREFIX_DIR/lib/mule/site-lisp/site-start.el.bak";;
esac;;
*)
mule -batch -q -l /tmp/hack-site-start.el -f hack-site-start \
PREFIX_DIR/lib/mule/site-lisp/site-start.el ;
echo "original file is saved in PREFIX_DIR/lib/mule/site-lisp/site-start.el.bak" ;;
esac
rm -f /tmp/hack-site-start.el
echo "Now startup configuration is done."
echo "Remember to mount cdrom to PREFIX_DIR/dict/dserver/cdrom."

View File

@ -0,0 +1 @@
CDROM dictionary server & clients

View File

@ -0,0 +1,10 @@
dserver is a CDROM dictionary server program.
You have to install dictionary file to the directory which is
specified in /usr/local/lib/dserver/dserver_access file.
Refer /usr/local/lib/dserver/doc/README.FreeBSD-setup.euc (in Japanese)
for configuration.
'kenjiro', and 'diclookup-mule.el' are installed for client programs.
type 'kenjiro' on command line, or 'ESC-x online-dictionary' on mule.
Look at /usr/local/lib/dserver/doc/* for more information.

View File

@ -0,0 +1,53 @@
bin/kenjiro
bin/makedic
lib/dserver/CDkojien.tbl
lib/dserver/cdchuji.tbl
lib/dserver/chujiten.tbl
lib/dserver/crfre.tbl
lib/dserver/crger.tbl
lib/dserver/deinstall.sh
lib/dserver/dserver
lib/dserver/dserver_access
lib/dserver/eiwa.tbl
lib/dserver/kojien.tbl
lib/dserver/kojien3.tbl
lib/dserver/oxford.tbl
lib/dserver/readers.tbl
lib/dserver/setup.sh
lib/dserver/waei.tbl
lib/dserver/yrrs007.tbl
lib/dserver/yrrs009.tbl
lib/dserver/yrrs096.tbl
lib/dserver/yrrs118.tbl
lib/dserver/yrrs172.tbl
lib/dserver/doc/ACKNOWLEDGMENT
lib/dserver/doc/CHANGES
lib/dserver/doc/Copyright.kenjiro
lib/dserver/doc/DICTIONARIES
lib/dserver/doc/README.FreeBSD-setup
lib/dserver/doc/README.diclookup-mule
lib/dserver/doc/README.dserver
lib/dserver/doc/README.kenjiro
lib/dserver/doc/README.table
lib/dserver/doc/newfeature.doc
lib/dserver/doc/protocol
lib/dserver/doc/protocol2
lib/mule/site-lisp/cclc.el
lib/mule/site-lisp/diclookup-mule.el
lib/mule/site-lisp/diclookup-mule.elc
lib/mule/site-lisp/od-ccl.el
lib/mule/site-lisp/od-chujiten.el
lib/mule/site-lisp/od-chujiten.elc
lib/mule/site-lisp/od-crown.el
lib/mule/site-lisp/od-crown.elc
lib/mule/site-lisp/od-italian.el
lib/mule/site-lisp/od-italian.elc
lib/mule/site-lisp/od-eiwa.el
lib/mule/site-lisp/od-eiwa.elc
lib/mule/site-lisp/od-kojien.el
lib/mule/site-lisp/od-kojien.elc
lib/mule/site-lisp/od-oxford.el
lib/mule/site-lisp/od-oxford.elc
lib/mule/site-lisp/od-readers.el
lib/mule/site-lisp/od-readers.elc
man/manl/kenjiro.l.gz

6
japanese/dserver/pkg-req Normal file
View File

@ -0,0 +1,6 @@
#!/bin/sh
if [ "$2" != "INSTALL" ]
then exit
fi
echo "Consider ${PKG_PREFIX}/lib/dserver/setup.sh for startup configuration."
echo "Documents are put in ${PKG_PREFIX}/lib/dserver/doc/."

34
japanese/dserver/scripts/configure vendored Normal file
View File

@ -0,0 +1,34 @@
#!/bin/sh
# dserver configuration shell script
# usage: /bin/sh configure
if [ X"${BATCH}" != X"yes" ] ; then
/usr/bin/dialog --title "dserver port configuration" --radiolist \
"How do you want to run dserver, standalone or run by inetd?" -1 -1 2 \
"standalone" "standalone" ON \
"inetd" "inetd" OFF 2>/tmp/dserver.ports.selection
if [ X`cat /tmp/dserver.ports.selection` = "Xinetd" ]
then
echo 'Inetd mode is selected'
cp ${FILESDIR}/setup.sh.inetd ${WRKSRC}/setup.sh.template
cp ${FILESDIR}/deinstall.sh.inetd ${WRKSRC}/deinstall.sh.template
cp ${WRKSRC}/server2.2-pl2/Makefile ${WRKSRC}/server2.2-pl2/Makefile.tmp
cat ${WRKSRC}/server2.2-pl2/Makefile.tmp | sed -e "s/-DSTANDALONE//g" \
> ${WRKSRC}/server2.2-pl2/Makefile
else
echo 'Standalone mode is selected'
cp ${FILESDIR}/setup.sh.standalone ${WRKSRC}/setup.sh.template
cp ${FILESDIR}/deinstall.sh.standalone ${WRKSRC}/deinstall.sh.template
fi
rm -f /tmp/dserver.ports.selection
else
echo 'Standalone mode (default) is selected'
cp ${FILESDIR}/setup.sh.standalone ${WRKSRC}/setup.sh.template
cp ${FILESDIR}/deinstall.sh.standalone ${WRKSRC}/deinstall.sh.template
fi