Missing stdint.h includes?

Garrett Cooper gcooper at FreeBSD.org
Sun Feb 6 00:52:12 UTC 2011


On Sat, Feb 5, 2011 at 3:42 PM, Raphael Kubo da Costa <kubito at gmail.com> wrote:
> Garrett Cooper <yanegomi at gmail.com> writes:
>
>> On Sat, Feb 5, 2011 at 11:27 AM, Raphael Kubo da Costa <kubito at gmail.com> wrote:
>>> Hey there,
>>>
>>> I was working on some code that used devinfo(3). According to devinfo's
>>> man page, #including devinfo.h should be enough to use it. However, a
>>> program which only #includes devinfo.h fails due to stdint.h (or
>>> sys/types.h) not being included, thus giving me some errors about
>>> uint32_t and other types not being defined.
>>>
>>> A few headers in sys/, such as sys/rman.h, have the same problem.
>>>
>>> Is it a bug in the headers themselves or are the man pages just
>>> incorrect?
>>
>>     I'd say it's the manpages probably because a lot of the types were
>> changed to POSIX integral types, and the manpages weren't updated.
>> Thanks!
>
> Hmm. In the case of sys/rman.h, I see that commits using uint32_t and
> other such types are almost 10 years old.

Older versions of those types were u_int, u_long, etc. Those are the
ones that I was referring to in my last reply.

> As for devinfo.h, shouldn't it just include stdint.h, sys/types.h or
> sys/param.h?

sys/types.h should suffice, even though POSIX says it should be in
inttypes.h: http://pubs.opengroup.org/onlinepubs/009695399/basedefs/inttypes.h.html#tag_13_20

Kind of odd why they're redefined there (in sys/types.h) to be honest,
esp because POSIX doesn't say that they should be defined there.
Probably some pollution introduced that would widely break compiles
because sys/types.h is used everywhere, not inttypes.h.

> What's the best way for me to help with this, PR-wise?

I would honestly not go create more PR fodder. Just find a (doc?)
developer with a commit bit who's interested in cleaning up
incorrectness.

Thanks!
-Garrett


More information about the freebsd-hackers mailing list