On 2016-12-19 16:33-0500 Pedro Vicente wrote:

> Hi Alan
>
>
>> The only trouble with the above fix is not every Unix platform has
>> /dev/urandom (although from the above URL most do).
>> 
>> So I would like to change the above fix to check for /dev/urandom
>> and use it if it exists, but otherwise fall back to using /dev/random.
>> 
>> How do I do that in C++?
>
>
> This is not a C++ (or C) issue.
> This is ideal for cmake to check, the same way it detects for other possible 
> system functions/features availability.
> I never did this before, but I think the way it works it is on the cmake 
> script
> do a small C or C++ program embedded in the script that includes 
> "/dev/urandom" in some way, for example
>
> std::fstream fin( "/dev/urandom", std::ios::in );
>
> and then check if it compiles and pass the result to cmake
>
>> > /dev/urandom (although from the above URL most do).

Hi Pedro:

I agree that is a possible approach, but that would mean
I would need to implement a build-system CMake test, propagate the relevant 
CMake variable from that test
to the C++ level as a macro, and introduce a preprocessor directive into our 
own C++
code based on whether that macro is defined or not.  And I think my
original proposal is simpler than that.

I never stated clearly what my proposed approach
would be, but it is no coincidence that it is C like.  :-)

That is check if

std::fstream fin( "/dev/urandom", std::ios::in );

works (probably by just checking the return code of that call, but I
could not find the documentation of what the return code would be
on failure),

and if that return code indicates a failure, then call

std::fstream fin( "/dev/random", std::ios::in );

instead.  But I assume Phil will do (or has done by now) the
equivalent using C++ exception handling.

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__________________________

Linux-powered Science
__________________________

------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/intel
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to