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

Re: [PATCH 04/15] Set _O_BINARY as default fmode for both MinGW and MSVC

From
Johannes Sixt <j.sixt@viscovery.net>
Date
Sep 17, 2009, 07:11 UTC
Message-ID
<4AB1E118.70504@viscovery.net>
In-Reply-To
<e2480c70909161300o3db4b416k8f33ccce2f987c55@mail.gmail.com>
Alexey Borzenkov schrieb:
Show 20 quoted lines
> Searching which executables set _fmode and which don't I found the
> culprit. test-genrandom.c didn't include git-compat-util.h, so mingw.h
> was never included. This caused different random data to be generated,
> and as it seems more importantly, of different sizes. Can be fixed
> with this patch:
> 
> diff --git a/test-genrandom.c b/test-genrandom.c
> index 8ad276d..b3c28d9 100644
> --- a/test-genrandom.c
> +++ b/test-genrandom.c
> @@ -4,8 +4,7 @@
>   * Copyright (C) 2007 by Nicolas Pitre, licensed under the GPL version 2.
>   */
> 
> -#include <stdio.h>
> -#include <stdlib.h>
> +#include "git-compat-util.h"
> 
>  int main(int argc, char *argv[])
>  {
Thanks for digging this out. With this change, the t5302 passes again.

I verified that the SHA1s that are generated with this fix are identical to those that are generated on Linux. (And without this fix they are different.)

Just for the records: The reason why including git-compat-util.h was not necessary before 04/15 is that test-genrandom is linked against libgit.a. This way the startup code had picked up the definition of _CRT_fmode from mingw.c that is initialized to _O_BINARY. After the original 04/15 this symbol was not present anymore in libgit.a, and the default (text mode) was used. And with this fix, main() is overridden to explicitly set the mode of stdout to _O_BINARY.

-- Hannes
Previous: Alexey BorzenkovNext: Junio C Hamano
Message 30 of 50 in “Build Git with MSVC”
  1. 00/15 Build Git with MSVCMarius Storm-Olsen, Sep 16, 2009
  2. 01/15 Avoid declaration after statementMarius Storm-Olsen, Sep 16, 2009
  3. 02/15 Add define guards to compat/win32.hMarius Storm-Olsen, Sep 16, 2009
  4. 03/15 Change regerror() declaration from K&R style to ANSI C (C89)Marius Storm-Olsen, Sep 16, 2009
  5. 04/15 Set _O_BINARY as default fmode for both MinGW and MSVCMarius Storm-Olsen, Sep 16, 2009
  6. 05/15 Fix __stdcall placement and function prototypeMarius Storm-Olsen, Sep 16, 2009
  7. 06/15 Test for WIN32 instead of __MINGW32_Marius Storm-Olsen, Sep 16, 2009
  8. 07/15 Add empty header files for MSVC portMarius Storm-Olsen, Sep 16, 2009
  9. 08/15 Add MinGW header files to build git with MSVCMarius Storm-Olsen, Sep 16, 2009
  10. 09/15 Add platform files for MSVC portingMarius Storm-Olsen, Sep 16, 2009
  11. 10/15 Make usage of windows.h lean and meanMarius Storm-Olsen, Sep 16, 2009
  12. 11/15 Define strncasecmp and ftruncate for MSVCMarius Storm-Olsen, Sep 16, 2009
  13. 12/15 Add MSVC to MakefileMarius Storm-Olsen, Sep 16, 2009
  14. 13/15 Add README for MSVC buildMarius Storm-Olsen, Sep 16, 2009
  15. 14/15 Add scripts to generate projects for other buildsystems (MSVC vcproj, QMake)Marius Storm-Olsen, Sep 16, 2009
  16. 15/15 Tag GIT_VERSION when Git is built with MSVCMarius Storm-Olsen, Sep 16, 2009
  17. Johannes SixtSep 17, 2009
  18. Marius Storm-OlsenSep 18, 2009
  19. Johannes SixtSep 17, 2009
  20. Marius Storm-OlsenSep 18, 2009
  21. Johannes SixtSep 18, 2009
  22. Sebastian SchuberthSep 23, 2009
  23. Johannes SchindelinSep 23, 2009
  24. Marius Storm-OlsenSep 24, 2009
  25. Sebastian SchuberthSep 23, 2009
  26. Marius Storm-OlsenSep 23, 2009
  27. Frank LiSep 25, 2009
  28. Johannes SixtSep 16, 2009
  29. Alexey BorzenkovSep 16, 2009
  30. Johannes SixtSep 17, 2009
  31. Junio C HamanoSep 17, 2009
  32. Marius Storm-OlsenSep 17, 2009
  33. Johannes SixtSep 17, 2009
  34. Marius Storm-OlsenSep 17, 2009
  35. Johannes SixtSep 17, 2009
  36. Marius Storm-OlsenSep 17, 2009
  37. Alexey BorzenkovSep 17, 2009
  38. Marius Storm-OlsenSep 17, 2009
  39. Alexey BorzenkovSep 17, 2009
  40. Johannes SixtSep 17, 2009
  41. Marius Storm-OlsenSep 17, 2009
  42. Alexey BorzenkovSep 17, 2009
  43. Johannes SixtSep 17, 2009
  44. 04/15 Set _O_BINARY as default fmode for both MinGW and MSVCMarius Storm-Olsen, Sep 17, 2009
  45. Johannes SixtSep 17, 2009
  46. Erik Faye-LundSep 16, 2009
  47. Marius Storm-OlsenSep 16, 2009
  48. Sebastian SchuberthSep 23, 2009
  49. Erik Faye-LundSep 25, 2009
  50. 04/15 Set _O_BINARY as default fmode for both MinGW and MSVCMarius Storm-Olsen, Sep 17, 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.