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

Re: [PATCH/RFC] mingw: rename WIN32 cpp macro to NATIVE_WINDOWS

From
Torsten Bögershausen <tboegi@web.de>
Date
Jan 26, 2013, 17:21 UTC
Message-ID
<5104108C.6070402@web.de>
In-Reply-To
<20130126010359.GH3341@elie.Belkin>
On 26.01.13 02:03, Jonathan Nieder wrote:
Show 206 quoted lines
> Throughout git, it is assumed that the WIN32 preprocessor symbol is
> defined on native Windows setups (mingw and msvc) and not on Cygwin.
> On Cygwin, most of the time git can pretend this is just another Unix
> machine, and Windows-specific magic is generally counterproductive.
>
> Unfortunately Cygwin *does* define the WIN32 symbol in some headers.
> Best to rely on a new git-specific symbol NATIVE_WINDOWS instead,
> defined as follows:
>
> 	#if defined(WIN32) && !defined(__CYGWIN__)
> 	# define NATIVE_WINDOWS
> 	#endif
>
> After this change, it should be possible to drop the
> CYGWIN_V15_WIN32API setting without any negative effect.
>
> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
> ---
> Eric Blake wrote:
>
>> Which is why other projects, like gnulib, have
>>
>> # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
>>
>> all over the place.
> So, how about this?
>
> Completely untested.
>
>  abspath.c         |  2 +-
>  compat/terminal.c |  4 ++--
>  compat/win32.h    |  2 +-
>  diff-no-index.c   |  2 +-
>  git-compat-util.h |  3 ++-
>  help.c            |  2 +-
>  run-command.c     | 10 +++++-----
>  test-chmtime.c    |  2 +-
>  thread-utils.c    |  2 +-
>  9 files changed, 15 insertions(+), 14 deletions(-)
>
> diff --git a/abspath.c b/abspath.c
> index 40cdc462..c7d5458e 100644
> --- a/abspath.c
> +++ b/abspath.c
> @@ -216,7 +216,7 @@ const char *absolute_path(const char *path)
>  const char *prefix_filename(const char *pfx, int pfx_len, const char *arg)
>  {
>  	static char path[PATH_MAX];
> -#ifndef WIN32
> +#ifndef WINDOWS_NATIVE
>  	if (!pfx_len || is_absolute_path(arg))
>  		return arg;
>  	memcpy(path, pfx, pfx_len);
> diff --git a/compat/terminal.c b/compat/terminal.c
> index 9b5e3d1b..136e4a74 100644
> --- a/compat/terminal.c
> +++ b/compat/terminal.c
> @@ -3,7 +3,7 @@
>  #include "sigchain.h"
>  #include "strbuf.h"
>  
> -#if defined(HAVE_DEV_TTY) || defined(WIN32)
> +#if defined(HAVE_DEV_TTY) || defined(WINDOWS_NATIVE)
>  
>  static void restore_term(void);
>  
> @@ -53,7 +53,7 @@ error:
>  	return -1;
>  }
>  
> -#elif defined(WIN32)
> +#elif defined(WINDOWS_NATIVE)
>  
>  #define INPUT_PATH "CONIN$"
>  #define OUTPUT_PATH "CONOUT$"
> diff --git a/compat/win32.h b/compat/win32.h
> index 8ce91048..31dd30f7 100644
> --- a/compat/win32.h
> +++ b/compat/win32.h
> @@ -2,7 +2,7 @@
>  #define WIN32_H
>  
>  /* common Win32 functions for MinGW and Cygwin */
> -#ifndef WIN32         /* Not defined by Cygwin */
> +#ifndef WINDOWS_NATIVE	/* Not defined for Cygwin */
>  #include <windows.h>
>  #endif
>  
> diff --git a/diff-no-index.c b/diff-no-index.c
> index 74da6593..a0bc9c50 100644
> --- a/diff-no-index.c
> +++ b/diff-no-index.c
> @@ -45,7 +45,7 @@ static int get_mode(const char *path, int *mode)
>  
>  	if (!path || !strcmp(path, "/dev/null"))
>  		*mode = 0;
> -#ifdef _WIN32
> +#ifdef WINDOWS_NATIVE
>  	else if (!strcasecmp(path, "nul"))
>  		*mode = 0;
>  #endif
> diff --git a/git-compat-util.h b/git-compat-util.h
> index e5a4b745..ebbdff53 100644
> --- a/git-compat-util.h
> +++ b/git-compat-util.h
> @@ -85,10 +85,11 @@
>  #define _NETBSD_SOURCE 1
>  #define _SGI_SOURCE 1
>  
> -#ifdef WIN32 /* Both MinGW and MSVC */
> +#if defined(WIN32) && !defined(__CYGWIN__) /* Both MinGW and MSVC */
>  #define WIN32_LEAN_AND_MEAN  /* stops windows.h including winsock.h */
>  #include <winsock2.h>
>  #include <windows.h>
> +#define WINDOWS_NATIVE
>  #endif
>  
>  #include <unistd.h>
> diff --git a/help.c b/help.c
> index 2a42ec6d..cc1e63f7 100644
> --- a/help.c
> +++ b/help.c
> @@ -106,7 +106,7 @@ static int is_executable(const char *name)
>  	    !S_ISREG(st.st_mode))
>  		return 0;
>  
> -#if defined(WIN32) || defined(__CYGWIN__)
> +#if defined(WINDOWS_NATIVE) || defined(__CYGWIN__)
>  #if defined(__CYGWIN__)
>  if ((st.st_mode & S_IXUSR) == 0)
>  #endif
> diff --git a/run-command.c b/run-command.c
> index 04712191..04ac6181 100644
> --- a/run-command.c
> +++ b/run-command.c
> @@ -72,7 +72,7 @@ static inline void close_pair(int fd[2])
>  	close(fd[1]);
>  }
>  
> -#ifndef WIN32
> +#ifndef WINDOWS_NATIVE
>  static inline void dup_devnull(int to)
>  {
>  	int fd = open("/dev/null", O_RDWR);
> @@ -159,7 +159,7 @@ static const char **prepare_shell_cmd(const char **argv)
>  		die("BUG: shell command is empty");
>  
>  	if (strcspn(argv[0], "|&;<>()$`\\\"' \t\n*?[#~=%") != strlen(argv[0])) {
> -#ifndef WIN32
> +#ifndef WINDOWS_NATIVE
>  		nargv[nargc++] = SHELL_PATH;
>  #else
>  		nargv[nargc++] = "sh";
> @@ -182,7 +182,7 @@ static const char **prepare_shell_cmd(const char **argv)
>  	return nargv;
>  }
>  
> -#ifndef WIN32
> +#ifndef WINDOWS_NATIVE
>  static int execv_shell_cmd(const char **argv)
>  {
>  	const char **nargv = prepare_shell_cmd(argv);
> @@ -193,7 +193,7 @@ static int execv_shell_cmd(const char **argv)
>  }
>  #endif
>  
> -#ifndef WIN32
> +#ifndef WINDOWS_NATIVE
>  static int child_err = 2;
>  static int child_notifier = -1;
>  
> @@ -330,7 +330,7 @@ fail_pipe:
>  	trace_argv_printf(cmd->argv, "trace: run_command:");
>  	fflush(NULL);
>  
> -#ifndef WIN32
> +#ifndef WINDOWS_NATIVE
>  {
>  	int notify_pipe[2];
>  	if (pipe(notify_pipe))
> diff --git a/test-chmtime.c b/test-chmtime.c
> index 92713d16..803b6055 100644
> --- a/test-chmtime.c
> +++ b/test-chmtime.c
> @@ -87,7 +87,7 @@ int main(int argc, const char *argv[])
>  			return -1;
>  		}
>  
> -#ifdef WIN32
> +#ifdef WINDOWS_NATIVE
>  		if (!(sb.st_mode & S_IWUSR) &&
>  				chmod(argv[i], sb.st_mode | S_IWUSR)) {
>  			fprintf(stderr, "Could not make user-writable %s: %s",
> diff --git a/thread-utils.c b/thread-utils.c
> index 7f4b76a9..4c4cf2fa 100644
> --- a/thread-utils.c
> +++ b/thread-utils.c
> @@ -24,7 +24,7 @@ int online_cpus(void)
>  	long ncpus;
>  #endif
>  
> -#ifdef _WIN32
> +#ifdef WINDOWS_NATIVE
>  	SYSTEM_INFO info;
>  	GetSystemInfo(&info);
>  
Thanks, that looks good.
I run the test suite under XP,  the same test cases are broken as on 1.8.1.1
/Torsten
Previous: Mark LevedahlNext: Ramsay Jones
Message 41 of 45 in “Version 1.8.1 does not compile on Cygwin 1.7.14”
  1. Stephen & Linda SmithJan 6, 2013
  2. Jason PyeronJan 6, 2013
  3. Jason PyeronJan 6, 2013
  4. Stephen & Linda SmithJan 6, 2013
  5. Jason PyeronJan 6, 2013
  6. Torsten BögershausenJan 6, 2013
  7. Jonathan NiederJan 6, 2013
  8. Torsten BögershausenJan 6, 2013
  9. Jonathan NiederJan 6, 2013
  10. Mark LevedahlJan 6, 2013
  11. Jonathan NiederJan 6, 2013
  12. Stephen & Linda SmithJan 6, 2013
  13. Junio C HamanoJan 6, 2013
  14. Torsten BögershausenJan 6, 2013
  15. Mark LevedahlJan 6, 2013
  16. Mark LevedahlJan 6, 2013
  17. Jason PyeronJan 6, 2013
  18. Junio C HamanoJan 6, 2013
  19. Jason PyeronJan 6, 2013
  20. Mark LevedahlJan 6, 2013
  21. Mark LevedahlJan 6, 2013
  22. Jason PyeronJan 7, 2013
  23. Junio C HamanoJan 7, 2013
  24. Pyeron, Jason J CTR (US)Jan 7, 2013
  25. Mark LevedahlJan 8, 2013
  26. Alex RiesenJan 11, 2013
  27. Alex RiesenJan 11, 2013
  28. Mark LevedahlJan 13, 2013
  29. Ramsay JonesJan 15, 2013
  30. Jonathan NiederJan 20, 2013
  31. Torsten BögershausenJan 20, 2013
  32. Jonathan NiederJan 20, 2013
  33. Torsten BögershausenJan 21, 2013
  34. Ramsay JonesJan 22, 2013
  35. Ramsay JonesJan 22, 2013
  36. Mark LevedahlJan 25, 2013
  37. Junio C HamanoJan 26, 2013
  38. Eric BlakeJan 26, 2013
  39. mingw: rename WIN32 cpp macro to NATIVE_WINDOWSJonathan Nieder, Jan 26, 2013
  40. Mark LevedahlJan 26, 2013
  41. Torsten BögershausenJan 26, 2013
  42. Ramsay JonesJan 28, 2013
  43. Junio C HamanoFeb 25, 2013
  44. Mark LevedahlFeb 26, 2013
  45. Torsten BögershausenFeb 26, 2013

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.