人間による入力データは作業性を考えて複数行で1レコードを構成していますが、
minix のコマンドは1行で1つのレコードを構成するものを扱うように設計されて
います。そのための変換を行ない、検索用のデータファイルの更新を行ないます。
このスクリプトは入力用のスクリプト add から呼び出されます。
listingsitem #!/bin/sh
# update cabinet
: ${CABINET?}
RACK=${CABINET}.items
TMP=/tmp/_$$
trap 'rm -f $TMP' 0 2
echo -n "Now, updating $CABINET cabinet. Just a minute, Please!"
lbuf=""
> $TMP
cat $CABINET | while read line; do
if test "$line" = ""; then
if test -n "$lbuf"; then
echo $lbuf >> $TMP
lbuf=""
fi
else
if test "$lbuf" = ""; then
lbuf=$line
else
lbuf="$lbuf:$line"
fi
fi
done
if test -n "$lbuf"; then
echo $lbuf >> $TMP
fi
echo
sort -fut':' +0.0 -2.0 $TMP > $RACK