[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:22790] Re: about dbskkd-cdb



> cdbmake: fatal: unable to rename: Invalid cross-device link
> 
> というエラーが出ました。`tempfile` が /tmp にファイルを作成することが
> 原因と思われましたので、SKK-JISYO.L を /tmp にコピーして /tmp で実行し
> ましたら、SKK-JISYO.L.cdb が出来、これを /usr/share/skk へ mv してテス
> トして、無事動いていることを確認いたしました。

なるほど。一時ファイルは同じディレクトリにないとマズいんです
ね。修正したスクリプトを添付しましたので、御批評ください。>all

dbskkd-cdb -> dbskkd-cdb
              dbskkd-cdb-dic

に分割するつもりですが、修正スクリプトをdbskkd-cdbの
examples/にいれて、README.Debianで説明しておくのでいいですか
ね。それとも、dbskkd-cdb-makedicみたいなパッケージがあった方
がいいでしょうか。makeskkcdbdic(もっといい名前ないですか?) 
とmakeskkcdbdic.1しか含まれないパッケージですけど…。

#!/bin/bash でないとダメかな?
----------
#!/bin/sh

[[ $# == 0 ]] && echo "Usage: ${0##*/} SKK-JISYO [SKK-JISYO-CDB]" 1>&2 && exit 1
[[ ! -f $1 || ! -r $1 ]] && echo "${0##*/}: $1: can't read" 1>&2 && exit 2
[[ $# == 1 ]] && set $1 $1.cdb
dir=`dirname $2`
[[ ! -d $dir || ! -w $dir ]] && echo "${0##*/}: $dir: can't write" 1>&2 && exit 3
tmpf=`tempfile --directory=$dir`
trap "[[ -e $tmpf ]] && rm $tmpf; exit 4" INT TERM
awk '
    /^[^;]/ {
    s = substr($0, index($0, " ") + 1)
    print "+" length($1) "," length(s) ":" $1 "->" s
    }
    END {
        print ""
    }
' $1 | cdbmake $2 $tmpf
chmod 644 $2
----------

-- 
川村 尚生