From: KIMURA Koichi Date: 1997-10-14T12:36:15+09:00 Subject: [ruby-list:4949] Re: flock(mswin32) 木村です。お待たせして申し訳ねっす。 In: [ruby-list:4911] >助田です。 >mswin32版の flock 修正しました。 >ruby-1.0-971003にこのパッチをあててください。 >Windows 95 + VisualC++5.0 でコンパイル、確認しています。 >確認できる環境がないので 結局 NTの部分は、前回のものに手を加える >のはやめました。 (snip) >すいませんが、このパッチを当てて確認お願いします>木村さん。 NTの部分でも95と同じく、エラーコードのすり替えが必要でした。その ままだと Windowsのエラーコード (ERROR_LOCKFILEだったかな?)が渡さ れて、これは EDOMに見られちゃいます(要は同じ数値)。 ところで、lockしてないファイルに対して flock(File::LOCK_UN) すると segmentation faultになるのですが、これは他でも同じで すか? ということで、差分です。 --- nt.c.orig Tue Oct 14 11:19:40 1997 +++ nt.c Tue Oct 14 11:23:51 1997 @@ -104,9 +104,11 @@ LK_ERR(LockFileEx(fh, LOCKFILE_EXCLUSIVE_LOCK|LOCKFILE_FAIL_IMMEDIATELY, 0, LK_LEN, 0, &o),i); + if(errno == EDOM) errno = EWOULDBLOCK; break; case LOCK_UN: /* unlock lock */ LK_ERR(UnlockFileEx(fh, 0, LK_LEN, 0, &o),i); + if(errno == EDOM) errno = EWOULDBLOCK; break; default: /* unknown */ errno = EINVAL; -- 木村浩一 e-mail koichi-ki@aix.or.jp kkimura@pure.cpdc.canon.co.jp