[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: [MD:4174] Do NOT update mingw-runtime, w32api!!



>>>>> [meadow-develop : No.4183] にて
>>>>> "藤井" = "M.Fujii" <boochang@xxxxxxxxxxxx> さんは書きました:
藤井> とりあえず、エラーの原因は分かりました。改行コードの問題のようです。

藤井> mw32_start@xxxxxxxxx で変数 _fmode を設定してバイナリモードをデフォル
藤井> トに変更していますが、どうも mingw-runtime 2.3-1 におけるモード設定の
藤井> 変更によって、これがうまくいかなくなったようです。このため、テキストモー
藤井> ドで Meadow.dmp を書き込むことによりデータのサイズが LF -> CRLF の分だ
藤井> け大きくなり、ヘッダの情報とデータがずれてしまうことで portable dumper 
藤井> でエラーが発生します。

すばらしい。よく分かりましたね。

mingw-runtime のソースを眺めてみたところ、_CRT_fmode で制御するの
がよさそうなことが分かりました。

以下のパッチで、mingw-runtime-2.4 でビルドできました。後ほど
commit しておきます。


--- ./mw32mem.c.orig	2003-02-13 00:32:16.000000000 +0900
+++ ./mw32mem.c	2003-02-13 01:08:14.000000000 +0900
@@ -113,6 +113,15 @@
      text files appropriately, in accordance with the MSDOS code.  */
   _fmode = O_BINARY;
 
+#if defined (__MINGW32__)
+#if __MINGW32_MAJOR_VERSION >= 2 && __MINGW32_MINOR_VERSION >= 3
+ {
+   extern int _CRT_fmode;
+   _CRT_fmode = _O_BINARY;
+ }
+#endif /* __MINGW32_MAJOR_VERSION >= 2 && __MINGW32_MINOR_VERSION >= 3 */
+#endif /* __MINGW32__ */
+
   /* This prevents ctrl-c's in shells running while we're suspended from
      having us exit.  */
   SetConsoleCtrlHandler ((PHANDLER_ROUTINE) ctrl_c_handler, TRUE);

--
三好 雅則 mailto:miyoshi@xxxxxxxxxxxxxxxx
          http://www.boreas.dti.ne.jp/~miyoshi/ (Meadow2 のページ始めました)