git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [msysGit] [PATCH 06/17] mingw.c: Use the O_BINARY flag to open files

From
Alexey Borzenkov <snaury@gmail.com>
Date
Sep 14, 2009, 19:06 UTC
Message-ID
<e2480c70909141206r3618a291l7317696bdc98b4fb@mail.gmail.com>
In-Reply-To
<160ceafba5f58cfcadb13380e3d8ef724009b700.1252925290.git.mstormo@gmail.com>
On Mon, Sep 14, 2009 at 5:11 PM, Marius Storm-Olsen <mstormo@gmail.com> wrote:
> On Windows, binary files must be opened using the O_BINARY flag for
> untranslated mode. MinGW does this for us automatically, but Microsoft
> Visual C++ does not.

Wouldn't it be better to set explicitly set _fmode = _O_BINARY when _MSC_VER is defined? _CRT_fmode is mingw specific, that in addition to setting _fmode also sets mode on stdin/stdout/stderr (see http://www.koders.com/c/fid2B507DE94598397757D615EDF52267578AD838A2.aspx). Current patch will not set binary mode for files opened with fopen, as well as stdin/stdout/stderr. One catch might be that declaring it like "unsigned int _fmode = _O_BINARY" might not work, it seems that you are supposed to set it somewhere in the code (see http://msdn.microsoft.com/en-us/library/ee2849wt(VS.80).aspx). Perhaps implementing a function like _mingw32_init_fmode in crc1.c in mingw-runtime and calling it early in main() would be better?

Thanks, Alexey.

Previous: Marius Storm-OlsenNext: Marius Storm-Olsen
Message 29 of 35 in “Build Git with MSVC”
  1. 00/17 Build Git with MSVCMarius Storm-Olsen, Sep 14, 2009
  2. 01/17 Avoid declaration after statementMarius Storm-Olsen, Sep 14, 2009
  3. 02/17 boolean is a typedef under MSVC, so rename variable to 'i_boolean'Marius Storm-Olsen, Sep 14, 2009
  4. 03/17 Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++Marius Storm-Olsen, Sep 14, 2009
  5. 04/17 Add define guards to compat/win32.hMarius Storm-Olsen, Sep 14, 2009
  6. 05/17 Change regerror() declaration from K&R style to ANSI C (C89)Marius Storm-Olsen, Sep 14, 2009
  7. 06/17 mingw.c: Use the O_BINARY flag to open filesMarius Storm-Olsen, Sep 14, 2009
  8. 07/17 Fix __stdcall/WINAPI placement and function prototypeMarius Storm-Olsen, Sep 14, 2009
  9. 08/17 Test for WIN32 instead of __MINGW32_Marius Storm-Olsen, Sep 14, 2009
  10. 09/17 Add empty header files for MSVC portMarius Storm-Olsen, Sep 14, 2009
  11. 10/17 Add MinGW header files to build git with MSVCMarius Storm-Olsen, Sep 14, 2009
  12. 11/17 Add platform files for MSVC portingMarius Storm-Olsen, Sep 14, 2009
  13. 12/17 Make usage of windows.h lean and meanMarius Storm-Olsen, Sep 14, 2009
  14. 13/17 Define strncasecmp as _strnicmp for MSVCMarius Storm-Olsen, Sep 14, 2009
  15. 14/17 Add ftruncate implementation for MSVCMarius Storm-Olsen, Sep 14, 2009
  16. 15/17 Add MSVC to MakefileMarius Storm-Olsen, Sep 14, 2009
  17. 16/17 Add README for MSVC buildMarius Storm-Olsen, Sep 14, 2009
  18. 17/17 Add scripts to generate projects for other buildsystems (MSVC vcproj, QMake)Marius Storm-Olsen, Sep 14, 2009
  19. Alex RiesenSep 14, 2009
  20. Marius Storm-OlsenSep 14, 2009
  21. Alex RiesenSep 14, 2009
  22. Marius Storm-OlsenSep 14, 2009
  23. Junio C HamanoSep 14, 2009
  24. Junio C HamanoSep 14, 2009
  25. Marius Storm-OlsenSep 14, 2009
  26. Johannes SixtSep 14, 2009
  27. Johannes SchindelinSep 15, 2009
  28. Marius Storm-OlsenSep 15, 2009
  29. Alexey BorzenkovSep 14, 2009
  30. Marius Storm-OlsenSep 14, 2009
  31. Alex RiesenSep 14, 2009
  32. Marius Storm-OlsenSep 14, 2009
  33. Frank LiSep 14, 2009
  34. Alex RiesenSep 14, 2009
  35. Marius Storm-OlsenSep 14, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.