multiskkserv -- simple skk multi-dictionary server
(C)Copyright 2001-2010 by Hiroshi Takekawa <sian@big.or.jp>
Last Modified: Wed Jan 27 10:10:02 2010.

If you think my English is too bad to read, please correct.

multiskkserv is a skk server which can use multiple dictionaries.
This server uses cdb format as the dictionary format.  cdb is the
efficient and constant (i.e. cannot add, delete, modify) database
format by Dan J. Bernstein, which I think is the appropriate format
for the system-wide constant dictionary storage.

This software has been tested for at least 9 years.  But if you find
any bugs, or have any suggestions, please send me an e-mail to report.


1. Requirements

pthread:
 Modern systems have libpthread.  Whether nptl or linuxthreads will
 probably work.

cdb-0.75 (optional):
 tinycdb is included and used by default.  If you'd like to use the original
 cdb package, pass --with-cdb argument to configure script.  But note that I
 cannot use it properly with 64 bit system.

 Grab http://cr.yp.to/cdb/cdb-0.75.tar.gz
 Unpack, change directory, and run 'make it' to compile.
 Optionally, do 'make setup check' to install.
 Installing is not required, though it may be useful.


2. Build and install

Specify the full path of the directory where you unpacked cdb
distribution by --with-cdb when you choose not to use tinycdb.

% tar xvzf multiskkserv-200xxxxx.tar.gz
% mkdir multiskkserv.build && cd multiskkserv.build
% ../multiskkserv-200xxxxx/configure --with-cdb=/usr/src/cdb-0.75 && make
% su
# make install
# exit
% cd ..
% rm -rf multiskkserv.build

'make install' installs three binaries: multiskkserv, multiskkserv-ctl
in sbin, and skkdic-p2cdb in bin.


3. Convert dictionary

skkdic-p2cdb converts plain text dictionary(such as SKK-JISYO.L) into
cdb format.  From now on, prefix is assumed to be '/usr/local'.  Usage
is simple:

% cd /usr/local/share/skk
% skkdic-p2cdb SKK-JISYO.L.cdb < SKK-JISYO.L

Moreover, you can convert multiple dictionaries with supplementary
script 'tools/convert.sh'.  Copy it into /usr/local/share/skk and
execute it.

# cp multiskkserv-200xxxxx/tools/convert.sh /usr/local/share/skk
# cd /usr/local/share/skk
# ./convert.sh


4. Invoke server

Server usage is also simple:

# /usr/local/sbin/multiskkserv /usr/local/share/skk/SKK-JISYO.L.cdb &

NOTE: multiskkserv won't auto-detach itself, use &. 

You can specify two or more dictionaries:

# /usr/local/sbin/multiskkserv /usr/local/share/skk/SKK-JISYO.L.cdb /usr/local/share/skk/SKK-JISYO.zipcode.cdb &

For more security, invoke as non-root, and use -r to chroot().

% /usr/local/sbin/multiskkserv -r /usr/local/share/skk SKK-JISYO.L.cdb &

You can use this server from inetd or tcpserver. Use -n. (Sorry, untested.)

inetd.conf:
skkserv stream  tcp     nowait  nobody  /usr/sbin/tcpd /usr/local/sbin/multiskkserv -n /usr/local/share/skk/SKK-JISYO.L.cdb

tcpserver:
tcpserver -v -R 0 skkserv /usr/local/sbin/multiskkserv -n /usr/local/share/skk/SKK-JISYO.L.cdb

For more options, try:

% /usr/local/sbin/multiskkserv -h


5. Statistics

Run:

% /usr/local/sbin/multiskkserv-ctl -s hostname stat

You'll get the numbers of total connections and active connections.


6. License

This software is distributed under GPL2.  See COPYING for more detail.


7. Contact

E-mail: Hiroshi Takekawa <sian@big.or.jp>


8. Acknowledgement

Thanks to Mr. Eiji Obata:

 He informed me that some header files are missing.  He also informed
 me that the same yomi entries from different dictionaries are not
 merged.


Thanks to Mr. UTUMI Hirosi:

 He was the first person to tell me that the latest SKK-JISYO.L cannot
 be converted with skkdic-p2cdb, since some entries are too long.  He
 also kindly created a package for Mandriva Cooker.
