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