# [PATCH] Use lowercase includes for some Windows headers

3 messages from 2023-06-04 to 2023-07-14. Participants: Mike Hommey, Junio C Hamano.
Thread: https://gitlist.dev/t/59836

## Mike Hommey, 2023-06-04 21:19

Subject: [PATCH] Use lowercase includes for some Windows headers
Message-ID: <20230604211934.1365289-1-mh@glandium.org>
URL: https://gitlist.dev/e/20230604211934.1365289-1-mh%40glandium.org

```
When cross-compiling with the mingw toolchain on a system with a case
sensitive filesystem, the mixed case (which is technically correct as
per the contents of MS Visual C++) doesn't work (the corresponding mingw
headers are all lowercase for some reason).

Signed-off-by: Mike Hommey <mh@glandium.org>
---
 compat/win32/trace2_win32_process_info.c | 4 ++--
 wrapper.c                                | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/compat/win32/trace2_win32_process_info.c b/compat/win32/trace2_win32_process_info.c
index a4e33768f4..438af8f818 100644
--- a/compat/win32/trace2_win32_process_info.c
+++ b/compat/win32/trace2_win32_process_info.c
@@ -3,8 +3,8 @@
 #include "../../repository.h"
 #include "../../trace2.h"
 #include "lazyload.h"
-#include <Psapi.h>
-#include <tlHelp32.h>
+#include <psapi.h>
+#include <tlhelp32.h>
 
 /*
  * An arbitrarily chosen value to limit the size of the ancestor
diff --git a/wrapper.c b/wrapper.c
index 67f5f5dbe1..5dc48e815a 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -17,7 +17,7 @@ static intmax_t count_fsync_hardware_flush;
 #ifdef HAVE_RTLGENRANDOM
 /* This is required to get access to RtlGenRandom. */
 #define SystemFunction036 NTAPI SystemFunction036
-#include <NTSecAPI.h>
+#include <ntsecapi.h>
 #undef SystemFunction036
 #endif
 
-- 
2.41.0.6.ge371d37104


```

## Junio C Hamano, 2023-06-12 19:30

Subject: Re: [PATCH] Use lowercase includes for some Windows headers
Message-ID: <xmqqmt14a36k.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqqmt14a36k.fsf%40gitster.g
In-Reply-To: <20230604211934.1365289-1-mh@glandium.org>

```
Mike Hommey <mh@glandium.org> writes:

> When cross-compiling with the mingw toolchain on a system with a case
> sensitive filesystem, the mixed case (which is technically correct as
> per the contents of MS Visual C++) doesn't work (the corresponding mingw
> headers are all lowercase for some reason).
>
> Signed-off-by: Mike Hommey <mh@glandium.org>
> ---
>  compat/win32/trace2_win32_process_info.c | 4 ++--
>  wrapper.c                                | 2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)

I can guess that this will not break the primary target audience of
the source, who build from the source on case insensitive
filesystems.  The only possible breakage I can think of is if
different versions of mingw toolchain have these header files in
different cases---those who have been happily using header files
like <tlHelp32.h> on their case sensitive filesystem now will find
their build to fail.  Theoretically, those who _corrected_ their
header files to mixed case themselves (as it is "technically correct
as per the contents of MS Visual C++") will be broken the same way,
but they should be capable of diagnosing and recovering from such a
breakage, so I'm not worried about that.

Appreciate input from those who builds with mingw toolchain, but in
the meantime let me queue it on 'seen' so that we won't forget.

Thanks.





> diff --git a/compat/win32/trace2_win32_process_info.c b/compat/win32/trace2_win32_process_info.c
> index a4e33768f4..438af8f818 100644
> --- a/compat/win32/trace2_win32_process_info.c
> +++ b/compat/win32/trace2_win32_process_info.c
> @@ -3,8 +3,8 @@
>  #include "../../repository.h"
>  #include "../../trace2.h"
>  #include "lazyload.h"
> -#include <Psapi.h>
> -#include <tlHelp32.h>
> +#include <psapi.h>
> +#include <tlhelp32.h>
>  
>  /*
>   * An arbitrarily chosen value to limit the size of the ancestor
> diff --git a/wrapper.c b/wrapper.c
> index 67f5f5dbe1..5dc48e815a 100644
> --- a/wrapper.c
> +++ b/wrapper.c
> @@ -17,7 +17,7 @@ static intmax_t count_fsync_hardware_flush;
>  #ifdef HAVE_RTLGENRANDOM
>  /* This is required to get access to RtlGenRandom. */
>  #define SystemFunction036 NTAPI SystemFunction036
> -#include <NTSecAPI.h>
> +#include <ntsecapi.h>
>  #undef SystemFunction036
>  #endif

```

## Junio C Hamano, 2023-07-14 17:07

Subject: Re: [PATCH] Use lowercase includes for some Windows headers
Message-ID: <xmqqv8empgl4.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqqv8empgl4.fsf%40gitster.g
In-Reply-To: <xmqqmt14a36k.fsf@gitster.g>

```
Junio C Hamano <gitster@pobox.com> writes:

> Mike Hommey <mh@glandium.org> writes:
>
>> When cross-compiling with the mingw toolchain on a system with a case
>> sensitive filesystem, the mixed case (which is technically correct as
>> per the contents of MS Visual C++) doesn't work (the corresponding mingw
>> headers are all lowercase for some reason).
>>
>> Signed-off-by: Mike Hommey <mh@glandium.org>
>> ---
>>  compat/win32/trace2_win32_process_info.c | 4 ++--
>>  wrapper.c                                | 2 +-
>>  2 files changed, 3 insertions(+), 3 deletions(-)
>
> ...  The only possible breakage I can think of is if
> different versions of mingw toolchain have these header files in
> different cases---those who have been happily using header files
> like <tlHelp32.h> on their case sensitive filesystem now will find
> their build to fail.  Theoretically, those who _corrected_ their
> header files to mixed case themselves (as it is "technically correct
> as per the contents of MS Visual C++") will be broken the same way,
> but they should be capable of diagnosing and recovering from such a
> breakage, so I'm not worried about that.
>
> Appreciate input from those who builds with mingw toolchain, but in
> the meantime let me queue it on 'seen' so that we won't forget.

And a month has passed.  Unless I hear objections, I'll merge this
change to 'next' in a few days at most.

Thanks.

>
> Thanks.
>
>
>
>
>
>> diff --git a/compat/win32/trace2_win32_process_info.c b/compat/win32/trace2_win32_process_info.c
>> index a4e33768f4..438af8f818 100644
>> --- a/compat/win32/trace2_win32_process_info.c
>> +++ b/compat/win32/trace2_win32_process_info.c
>> @@ -3,8 +3,8 @@
>>  #include "../../repository.h"
>>  #include "../../trace2.h"
>>  #include "lazyload.h"
>> -#include <Psapi.h>
>> -#include <tlHelp32.h>
>> +#include <psapi.h>
>> +#include <tlhelp32.h>
>>  
>>  /*
>>   * An arbitrarily chosen value to limit the size of the ancestor
>> diff --git a/wrapper.c b/wrapper.c
>> index 67f5f5dbe1..5dc48e815a 100644
>> --- a/wrapper.c
>> +++ b/wrapper.c
>> @@ -17,7 +17,7 @@ static intmax_t count_fsync_hardware_flush;
>>  #ifdef HAVE_RTLGENRANDOM
>>  /* This is required to get access to RtlGenRandom. */
>>  #define SystemFunction036 NTAPI SystemFunction036
>> -#include <NTSecAPI.h>
>> +#include <ntsecapi.h>
>>  #undef SystemFunction036
>>  #endif

```
