[mew-dist 24266] incm: PATCH for spool on read-only filesystem

Yousuke HARADA harada at example.com
2003年 12月 21日 (日) 19:56:06 JST


初めまして。原田と申します。

mail spool(/var/spool/mail)がNFS read-onlyマウントされている
環境でmew-3.3を使用しています。
MTAがqmailで、/var/spool/mail/harada はホームディレクトリの
Mailboxファイルを指しています。

incmを実行すると、
incm: open(/var/spool/mail/harada.lock)

と出力されてspoolから取りこめません。
incm.c 内のlock_mbox()でlockfileのopenに失敗した時のerrnoをEACCES
しか見ていないのが原因のようです。

とりあえず、read-onlyなfilesystem上でも動作するように、
errnoをEROFSも見るようにした簡単なパッチを当てて使っています。

以下に示しておきます。
手元では、うまく動いているようです。
取り込んでいただければ幸いです。

diff -u mew-3.3/bin.org/incm.c mew-3.3/bin/incm.c
--- mew-3.3/bin.org/incm.c	2003-05-23 12:17:52.000000000 +0900
+++ mew-3.3/bin/incm.c	2003-12-21 18:52:23.000000000 +0900
@@ -607,7 +607,7 @@
 
 	while (TRUE) {
 		if ((fd = open(lockfile, O_WRONLY | O_CREAT | O_EXCL)) < 0) {
-			if (errno == EACCES)
+			if ((errno == EACCES) || (errno == EROFS))
 				return 1; /* doesn't need a lockfile, maybe. */
 			else if (errno != EEXIST)
 				error("open(%s)", lockfile);

--
Yousuke Harada



Mew-dist メーリングリストの案内