Masanari Yamamoto
h0131****@ice*****
2005年 10月 1日 (土) 22:19:26 JST
山本です。
manaを2つ起動すると、以下のようなエラーが発生することは先日報告いたし
ましたが、その原因がわかりました。
Fatal error: exception Dbm.Dbm_error("Can't open file /home/yamamoto/.manadic")
manaの個人辞書のファイルは私の環境では以下の2つがあります。
.manadic.dir
.manadic.pag
(FreeBSDでは.manadic.dbになるそうです。)
しかし、personalDict.mlでは.manadicというファイルの存在を確認しており、
その結果個人辞書があるにもかかわらず、新しく個人辞書を作成しようとして
エラーが発生しています。
また、新しく個人辞書を作成するときには、Dbm.Dbm_createフラグに加えて、
Dbm.Dbm_rdwrフラグが必要なようです。
この問題を修正するパッチを添付します。
*** mana-0.1.5.orig/mana/personalDict.ml 2005-10-01 21:17:53.268309869 +0900
--- mana-0.1.5/mana/personalDict.ml 2005-10-01 22:10:17.182105188 +0900
***************
*** 27,39 ****
Unix.close lock_file
let db =
! if not (Sys.file_exists Config.personal_dict_file) then begin
let file =
! Dbm.opendbm Config.personal_dict_file [Dbm.Dbm_create] 0o600 in
! Dbm.close file
! end;
! let flags = [Dbm.Dbm_rdonly] in
! Dbm.opendbm Config.personal_dict_file flags 0o600
let () =
at_exit (fun () -> Dbm.close db)
--- 27,42 ----
Unix.close lock_file
let db =
! try
! let flags = [Dbm.Dbm_rdonly] in
! Dbm.opendbm Config.personal_dict_file flags 0o600
! with Dbm.Dbm_error msg ->
let file =
! Dbm.opendbm Config.personal_dict_file [Dbm.Dbm_create; Dbm.Dbm_rdwr] 0o600 in
! Dbm.close file;
! let flags = [Dbm.Dbm_rdonly] in
! Dbm.opendbm Config.personal_dict_file flags 0o600
!
let () =
at_exit (fun () -> Dbm.close db)
--
山本将也