[PATCH] Add simple versions of random() and srandom()

Joel Sherrill joel.sherrill@oarcorp.com
Wed Mar 23 15:23:00 GMT 2016



On 3/22/2016 6:59 PM, Craig Howland wrote:
> On 03/22/2016 06:51 PM, Joel Sherrill wrote:
>> Prototypes also added for initstate() and setstate() but they
>> were not implemented.
> If they were not implemented, the prototypes should not be there. Or if they
> are, commented out as TDB or not supplied as an explicit reminder that they are
> not real.

Cygwin will be using the prototypes now.

>> ---
>>    newlib/libc/include/stdlib.h                  |  6 ++
>>    ... [snip]
>>
>> diff --git a/newlib/libc/stdlib/random.c b/newlib/libc/stdlib/random.c
>> new file mode 100644
>> index 0000000..27ee5af
>> --- /dev/null
>> +++ b/newlib/libc/stdlib/random.c
>> @@ -0,0 +1,86 @@
>> +/*
>> +FUNCTION
>> +<<random>>, <<srandom>>---pseudo-random numbers
>> +
>> +INDEX
>> +	random
>> +INDEX
>> +	srandom
>> +
>> +ANSI_SYNOPSIS
>> +	#include <stdlib.h>
>> +	long int random(void);
>> +	void srandom(unsigned int <[seed]>);
> The needed '#define _XOPEN_SOURCE 500 /* or any value > 500*/' before the

This results in nested comments and the file doesn't compile. I added
this information as a second note.

> #include is missing.  (Since the portability section quotes POSIX, I chose a
> POSIX gate.)  Unless we want to show them in the manner of GLIBC man pages.
> Their presentation for random(3):
>    "Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
>
>          random(), srandom(), initstate(), setstate(): _SVID_SOURCE ||
>          _BSD_SOURCE || _XOPEN_SOURCE >= 500".
> Put another way, now that Yaakov cleaned up all the gating, we really should
> also clean up the documentation, too, and we need to decide on the approach
> which should be taken, since there is not one approach currently.

This is yet another pass. :)

>> +
>> +TRAD_SYNOPSIS
>> +	#include <stdlib.h>
>> +	long int rand();
>> +
>> +	void srandon(<[seed]>)
>> +	unsigned int <[seed]>;
> Get rid of the traditional synopsis.  It is ignored by the document generation
> stuff, so it's better not to have it, to avoid maintaining something that is not
> used.
>

Deleted.

Also added to CHEWOUT_FILES and stdlib.tex.

A v2 should be coming soon. There were lots of comments and I may have
missed something.

--joel



More information about the Newlib mailing list