[Mew-Win32 00106] flock on win95 ?
Shirai/ 白井秀行
Shirai at example.com
1998年 1月 20日 (火) 10:58:49 JST
白井です。こんにちは。
imのMsgDBをWin95でも動かそうと思い、いろいろやってみました。
以下、やったこと。
1. 以前、activewareのwebで『SDBMなら動く』という内容を読んだ記憶
があるので、Configで
MsgDBType=SDBM
にした。
2. 今、巷で噂のO_BINARYをIM.in/History.pm.inに加えた。
} elsif ($DBtype eq 'SDBM') {
if (&win95p){
$db = tie %History, 'SDBM_File', $dbfile, O_CREAT|O_RDWR|O_BINARY, &msg_mode(0);
} else {
$db = tie %History, 'SDBM_File', $dbfile, O_CREAT|O_RDWR, &msg_mode(0);
}
}
3. ところが、
flock() unimplemented on this platform at D:\USR\PERL\lib/IM/History.pm line 122.
(line 122はいろいろ試験しているので若干ずれているでしょう)
とエラーメッセージが出てしまうので、めんどくさいから、
History.pm.im の 121行目付近
if (!&win95p){
unless (flock (HIST_FH, LOCK_EX | LOCK_NB)) {
im_warn "history: waiting for write lock ($!)\n";
unless (flock (HIST_FH, LOCK_EX)) {
im_err "history: flock ($!)\n";
return -1;
}
}
}
$locked = 1;
140行目付近
if ($locked) {
if (!&win95p){
flock(HIST_FH, LOCK_UN);
}
}
と誤魔化した(^^;;;
そして、mewはシングルタスク(?)で動作させるようにした。
# バックグラウンドで処理中は何もしないだけ (^^;;;
で、とりあえず、imhistが動作して、Referencesも上にたどれるし、
message/partialも一つにまとめられるようになりました。^^
で、メデタシ、メデタシなのですが、質問/疑問があります。
1. 手元にある『クイックPerl5リファレンス(マイケル オファル著)』に
よるとflockはPerl4、Perl5、(activewareの)Perl-NTで動くと書いてある
のですが、もしかして、私の設定が悪くて動かないだけなのでしょうか?
それとも、Win-NTなら動くのでしょうか?
# 上記リファレンスには『UNIXのflock関数を呼び出す』と書いてある……
2. flockが動かないとすると、本当はどうやって、lockの制御をすれば
良いのでしょうか?
LocalMbox.pm.in のようにロックファイルを作るべきでしょうか?
ちなみにPerlは北口さんビルドのPerl5.004_04です。
# 私も、昨日の夜、Solaris2.4のPerlを5.004→5.004_04にあげました。(^^;
Mew-win32 メーリングリストの案内