From a5d7f4a6de1da386fc8cdd264e5be3cbb0584ecd Mon Sep 17 00:00:00 2001 From: Lars Bilke <lars.bilke@ufz.de> Date: Fri, 20 Mar 2020 17:52:17 +0100 Subject: [PATCH] [FileIO] Write to random files in createSurface. --- Applications/FileIO/Legacy/createSurface.cpp | 8 +++++--- BaseLib/StringTools.cpp | 17 +++++++++++++++++ BaseLib/StringTools.h | 3 +++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Applications/FileIO/Legacy/createSurface.cpp b/Applications/FileIO/Legacy/createSurface.cpp index 380a8ecb09b..f89812667d3 100644 --- a/Applications/FileIO/Legacy/createSurface.cpp +++ b/Applications/FileIO/Legacy/createSurface.cpp @@ -20,6 +20,8 @@ #include "Applications/FileIO/Gmsh/GMSHInterface.h" #include "Applications/FileIO/Gmsh/GmshReader.h" +#include "BaseLib/StringTools.h" + #include "GeoLib/GEOObjects.h" #include "GeoLib/Point.h" #include "GeoLib/Polygon.h" @@ -78,9 +80,9 @@ bool createSurface(GeoLib::Polyline const& ply, 0.0, 0, geo_names, false, false); gmsh_io.setPrecision(std::numeric_limits<double>::digits10); - // fs::path const temp_dir = fs::temp_directory_path(); - auto geo_file = fs::temp_directory_path() /= "createSurface.geo"; - auto msh_file = fs::temp_directory_path() /= "createSurface.msh"; + // write to random file in temp directory + auto geo_file = fs::temp_directory_path() /= BaseLib::random_string(32); + auto msh_file = fs::temp_directory_path() /= BaseLib::random_string(32); gmsh_io.writeToFile(geo_file.string()); // Newer gmsh versions write a newer file format for meshes per default. At diff --git a/BaseLib/StringTools.cpp b/BaseLib/StringTools.cpp index a5ee69ff12f..bc041110854 100644 --- a/BaseLib/StringTools.cpp +++ b/BaseLib/StringTools.cpp @@ -104,4 +104,21 @@ std::string format(const char* format_str, ... ) return std::string(buffer.data()); } +std::string random_string( size_t length ) +{ + auto randchar = []() -> char + { + const char charset[] = + "0123456789" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz"; + const size_t max_index = (sizeof(charset) - 1); + return charset[ rand() % max_index ]; + }; + std::string str(length,0); + std::generate_n( str.begin(), length, randchar ); + + return str; +} + } // end namespace BaseLib diff --git a/BaseLib/StringTools.h b/BaseLib/StringTools.h index 382a65cc3d8..27f6f8a6f32 100644 --- a/BaseLib/StringTools.h +++ b/BaseLib/StringTools.h @@ -83,4 +83,7 @@ std::string const& tostring(std::string const& value); //! returns printf-like formatted string std::string format(const char* format_string, ... ); +//! Returns a random string of the given length containing just a-z,A-Z,0-9 +std::string random_string( size_t length ); + } // end namespace BaseLib -- GitLab