なかだです。

At Mon, 10 Jun 2002 18:46:27 +0900,
小西 弘将 wrote:
> コンパイル、make testのチェックは
>   bccwin32 BCB6, BCC5.5.1 on WinXP Pro
>   mswin32  VC++5.0        on WinXP Home
>   linux    gcc            on Turbolinux7 WS
> でしました。

bcc32.cfgに-tWMが入っていると、win32/win32.cでエラーになってし
まいました。このオプションって具体的にどういう違いがあるんでしょ
う。

# なぜかコマンドラインからオーバーライドできない…。

最初なんでだか分からなかったのでこうしてみましたが、なるべく統
合したほうがいいんじゃないでしょうか。


Index: win32.c =================================================================== RCS file: /cvs/ruby/src/ruby/win32/win32.c,v retrieving revision 1.58 diff -u -2 -p -r1.58 win32.c --- win32.c 2002/06/11 01:27:48 1.58 +++ win32.c 2002/06/12 01:03:18 @@ -1324,5 +1324,5 @@ EXTERN_C void __cdecl _unlock_fhandle(in EXTERN_C void __cdecl _unlock(int); -#if defined _MT || defined __MSVCRT__ +#if (defined _MT || defined __MSVCRT__) && !defined __BORLANDC__ #define MSVCRT_THREADS #endif @@ -1361,4 +1361,13 @@ EXTERN_C _CRTIMP ioinfo * __pioinfo[]; #define _osfile(i) (_pioinfo(i)->osfile) #define _pipech(i) (_pioinfo(i)->pipech) + +#define _set_osfhnd(fh, osfh) (void)(_osfhnd(fh) = osfh) +#define _set_osflags(fh, flags) (_osfile(fh) = (flags)) + +#else + +#define _set_osfhnd(fh, osfh) (void)((fh), (osfh)) +#define _set_osflags(fh, flags) (void)((fh), (flags)) + #endif @@ -1369,6 +1378,4 @@ EXTERN_C _CRTIMP ioinfo * __pioinfo[]; #define FTEXT 0x80 /* file handle is in text mode */ -#define _set_osfhnd(fh, osfh) (void)(_osfhnd(fh) = osfh) - static int rb_w32_open_osfhandle(long osfhandle, int flags) @@ -1389,27 +1396,4 @@ rb_w32_open_osfhandle(long osfhandle, in fileflags |= FNOINHERIT; -#ifdef __BORLANDC__ - { - /* attempt to allocate a C Runtime file handle */ - HANDLE hF = CreateFile("NUL", 0, 0, NULL, OPEN_ALWAYS, 0, NULL); - fh = _open_osfhandle((long)hF, 0); - CloseHandle(hF); - if (fh == -1) { - errno = EMFILE; /* too many open files */ - _doserrno = 0L; /* not an OS error */ - } - else { - - MTHREAD_ONLY(EnterCriticalSection(&(_pioinfo(fh)->lock))); - /* the file is open. now, set the info in _osfhnd array */ - //_set_osfhnd(fh, osfhandle); - - fileflags |= FOPEN; /* mark as open */ - - //_osfile(fh) = fileflags; /* set osfile entry */ - MTHREAD_ONLY(LeaveCriticalSection(&_pioinfo(fh)->lock)); - } - } -#else RUBY_CRITICAL({ /* attempt to allocate a C Runtime file handle */ @@ -1429,9 +1413,8 @@ rb_w32_open_osfhandle(long osfhandle, in fileflags |= FOPEN; /* mark as open */ - _osfile(fh) = fileflags; /* set osfile entry */ + _set_osflags(fh, fileflags); /* set osfile entry */ MTHREAD_ONLY(LeaveCriticalSection(&_pioinfo(fh)->lock)); } }); -#endif return fh; /* return handle */ }
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦