[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] AC_HEADER_MAJOR: port to glibc 2.25

From: Eric Blake
Subject: Re: [PATCH] AC_HEADER_MAJOR: port to glibc 2.25
Date: Wed, 14 Sep 2016 10:54:48 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0

On 09/14/2016 10:27 AM, Zack Weinberg wrote:
> glibc's sys/sysmacros.h _only_ defines major/minor/makedev.  What I'd
> worry about is whether any other C library has a different header with
> the same name; "sysmacros" is pretty generic.  I don't have any
> evidence either way on that question.

Nor do I; and I also wonder if the fact that we checked mkdev.h first
(which catches BSD systems, if I'm not mistaken) would mask the effect
of a BSD system with both mkdev.h and sysmacros.h.  A quick google found
at least one other vendor with a sysmacros.h, with a lot more contents
than glibc's:

>> @@ -5977,6 +5977,27 @@ Particular Headers
>>  @code{makedev}, but @file{sys/mkdev.h} does, define
>>  @code{MAJOR_IN_MKDEV}; otherwise, if @file{sys/sysmacros.h} does, define
> This part of the description should probably be adjusted to match what
> the code does now.
>> +To properly use any of these three functions, your code should contain
>> +something like:
> Also, I think "three functions" here is meant to refer to
> major/minor/makedev, but it tripped me up the first time I read it.  I
> suggest instead
>    Detect the headers required to use @code{makedev}, @code{major}, and
>    @code{minor}.  These functions may be defined by @file{sys/mkdev.h},
>    @code{sys/sysmacros.h}, or @file{sys/types.h}.
>    @code{AC_HEADER_MAJOR} defines @code{MAJOR_IN_MKDEV} if they are in
>    @file{sys/mkdev.h}, or @code{MAJOR_IN_SYSMACROS} if they are in
>    @file{sys/sysmacros.h.}.  If neither macro is defined, they are either
>    in @file{sys/types.h} or they are unavailable.
>    To portably use these functions, your code should contain something
>    like
> and then your @verbatim block.

Thanks for the wordsmithing help.  I'll post a v2.

> (Should AC_HEADER_MAJOR maybe throw an error if none of the possible
> headers we know about defines major/minor/makedev?  I believe this is
> the case on MinGW, for instance.)

If so, it would be a separate patch, as a change in policy.  For now,
compilation failure on mingw when attempting to use major() is no change
in status quo.

> I think we should check sys/types.h last.  That will future-proof
> against C libraries where these functions are in both sys/mkdev.h and
> sys/types.h deciding to do the same deprecation that glibc has done.

Good idea. Will respin to check mkdev.h first (as before), then
sysmacros.h, and sys/types.h last.

Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library

Attachment: signature.asc
Description: OpenPGP digital signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]