bug-gnulib
[Top][All Lists]
Advanced

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

Re: * NEWS: Mention 2011-02-08 change to stdlib.


From: Simon Josefsson
Subject: Re: * NEWS: Mention 2011-02-08 change to stdlib.
Date: Sat, 19 Feb 2011 17:13:02 +0100
User-agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.2 (gnu/linux)

Eric Blake <address@hidden> writes:

> On 02/19/2011 08:38 AM, Simon Josefsson wrote:
>> Paul Eggert <address@hidden> writes:
>> 
>>> +2011-02-08  stdlib          Unless the random_r module is also used, this
>>> +                            module no longer guarantees that the following 
>>> are
>>> +                            defined: struct random_data, RAND_MAX, 
>>> random_r,
>>> +                            srandom_r, initstate_r, setstate_r.
>>> +
>> 
>> This feels a bit surprising -- usually including a gnulib header module
>> should make it POSIX compliant, but if stdlib.h is missing RAND_MAX it
>> wouldn't be a POSIX compliant header replacer.  Have I missed
>> discussions of changing the gnulib policy here?
>
> Of all of these, RAND_MAX is the only value required by POSIX; it is
> also the value that is easiest to provide without also defining all the
> other structs and interfaces.  Maybe we should tweak things to provide
> RAND_MAX always.

Ah thanks for checking with what POSIX actually says.  Yes, I agree we
should try to make gnulib's stdlib.h set RAND_MAX if it is not available
from the system's stdlib.h.

Looking further, it seems struct random_data and the other functions are
glibc inventions, and they are specified in glibc's stdlib.h.  So
arguable they should be part of gnulib's stdlib replacement?  Or should
we require a 'stdlib-gnu' for that?

There is no doc/glibc-headers/stdlib.texi or any discussion in
doc/posix-headers/stdlib.texi about this, which is a situation that
could probably be improved.

>> (The reason I added struct random_data detection to stdlib.h was IIRC
>> that I only needed the struct and not the functions, so pulling in the
>> entire functions would be wasteful for me.)
>
> However, that won't help with your desire to get struct random_data;
> maybe that means we need an intermediate module for the struct, where
> you could use that module and where random_r could depend on that
> intermediate module.  Conversely, what use do you have for struct
> random_data that does not involve random_r?  Nothing else in the
> standard requires it, and if you aren't using random_r, why can't you
> maintain your own struct for pseudo-random generator state?

I don't recall at this point (this was done in 2008) so probably I can
live with whatever change we do here.  My concern was more on a generic
level.

/Simon



reply via email to

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