Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Be more liberal when matching extension for library name.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Fri, 1 Jun 2018 19:56:08 +0000 (21:56 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Fri, 1 Jun 2018 20:39:13 +0000 (22:39 +0200)
Letters are sometimes used in version number (e.g. libcrypto.so.1.1.0h).

src/mc/remote/RemoteClient.cpp

index 521c794..6b8d74b 100644 (file)
@@ -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);
     }