From: Arnaud Giersch Date: Fri, 1 Jun 2018 19:56:08 +0000 (+0200) Subject: Be more liberal when matching extension for library name. X-Git-Tag: v3.20~162 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/0a6bff0226c192467acba92b3d502413667788b7 Be more liberal when matching extension for library name. Letters are sometimes used in version number (e.g. libcrypto.so.1.1.0h). --- diff --git a/src/mc/remote/RemoteClient.cpp b/src/mc/remote/RemoteClient.cpp index 521c794ad4..6b8d74bace 100644 --- a/src/mc/remote/RemoteClient.cpp +++ b/src/mc/remote/RemoteClient.cpp @@ -114,19 +114,18 @@ static bool is_filtered_lib(const std::string& libname) static std::string get_lib_name(const std::string& pathname) { - constexpr char digits[] = ".0123456789"; std::string map_basename = simgrid::xbt::Path(pathname).getBasename(); std::string libname; size_t pos = map_basename.rfind(".so"); - if (pos != std::string::npos && map_basename.find_first_not_of(digits, pos + 3) == std::string::npos) { - // strip the extension (matching regex "\.so[.0-9]*$") + if (pos != std::string::npos) { + // strip the extension (matching regex "\.so.*$") libname.assign(map_basename, 0, pos); // strip the version suffix (matching regex "-[.0-9-]*$") while (true) { pos = libname.rfind('-'); - if (pos == std::string::npos || libname.find_first_not_of(digits, pos + 1) != std::string::npos) + if (pos == std::string::npos || libname.find_first_not_of(".0123456789", pos + 1) != std::string::npos) break; libname.erase(pos); }