[PATCH] Fix "/*" within comment warning

Yaakov Selkowitz yselkowitz@cygwin.com
Wed Mar 23 02:16:00 GMT 2016


On 2016-03-22 16:41, Corinna Vinschen wrote:
> On Mar 22 15:32, Yaakov Selkowitz wrote:
>> On 2016-03-22 15:14, Corinna Vinschen wrote:
>>> On Mar 22 11:10, Yaakov Selkowitz wrote:
>>>> On 2016-03-22 04:49, Corinna Vinschen wrote:
>>>>> On Mar 21 16:27, Corinna Vinschen wrote:
>>>>>> I mean, that was the whole point of asking this question.  If you read
>>>>>> https://sourceware.org/ml/newlib/2016/msg00282.html you see that I
>>>>>> specificially refer to these types, u_char, u_short, etc.  grep for them
>>>>>> on Linux and you'll see more then hundred header files using these
>>>>>> types.  They are guarded with __USE_MISC in sys/types.h and there's no
>>>>>> explicit enabling invocation in any of the files using these types.
>>>>
>>>> Due to the incompatibility in licences between glibc and newlib/cygwin, I
>>>> have been avoiding looking at the headers directly.
>>>>
>>>>> So my proposal is this:
>>>>>
>>>>> diff --git a/newlib/libc/include/sys/types.h b/newlib/libc/include/sys/types.h
>>>>> index 52530c5..8ab8670 100644
>>>>> --- a/newlib/libc/include/sys/types.h
>>>>> +++ b/newlib/libc/include/sys/types.h
>>>>> @@ -90,8 +90,7 @@ typedef	quad_t *	qaddr_t;
>>>>>   #  define	quad		quad_t
>>>>>   #endif
>>>>>
>>>>> -/* These types are required by netinet/*.h on Cygwin */
>>>>> -#if __BSD_VISIBLE || defined(__CYGWIN__)
>>>>> +#if __MISC_VISIBLE
>>>>>   #ifndef _BSDTYPES_DEFINED
>>>>>   /* also defined in mingw/gmon.h and in w32api/winsock[2].h */
>>>>>   #ifndef __u_char_defined
>>>>
>>>> That only works if the parts of our netinet/*.h which use these are
>>>> similarly guarded, or their struct members converted to the u_intN_t types
>>>> (as in netinet/ip6.h).'
>>>
>>> Again, the same headers in Linux use the same types, and these
>>> headers do NOT use similar guards.  They just include sys/types.h
>>> and expect these types to exist.  If that's good enough for glibc...
>>
>> Not sure I understand; `grep -r __USE_ /usr/include/netinet/' shows lots of
>> __USE_MISC and even a __USE_GNU ...
>
> Doh.  How did I miss them?  <checking glasses>
>
> However, I also checked on multiple files outside netinet and there are
> some headers which use u_short etc. without checking for __USE_MISC,
> e.g. fts.h and resolv.h.

These two are not POSIX headers nor are they included by any; by 
including them you must not declare POSIX compliance, e.g. on F23:

$ gcc -D_POSIX_C_SOURCE=200809L -include fts.h -x c - </dev/null
In file included from <command-line>:0:0:
/usr/include/fts.h:81:2: error: unknown type name ‘u_short’
/usr/include/fts.h:82:2: error: unknown type name ‘u_short’
/usr/include/fts.h:106:2: error: unknown type name ‘u_short’
/usr/include/fts.h:110:2: error: unknown type name ‘u_short’
/usr/include/fts.h:116:2: error: unknown type name ‘u_short’

> But, anyway, since Cygwin's netinet headers don't do what glib's do, I
> retract my proposal, at least in terms of __CYGWIN__.

Actually it's the right thing to do, as netinet/in.h and netinet/tcp.h 
are required by POSIX, but the structs in question are not.  I just need 
some help cleanrooming the guards therein (unless such a thing doesn't 
require that, IANAL).

> But shouldn't we still use __MISC_VISIBLE instead of __BSD_VISIBLE in
> sys/type.h to follow glibc more closely?

I do see such types mentioned in SVID, so yeah, that makes sense.

-- 
Yaakov



More information about the Newlib mailing list