Просмотр исходного кода

ENH: Added GetFilenameWithoutLastExtension.

Brad King 23 лет назад
Родитель
Сommit
c5574e096b
2 измененных файлов с 24 добавлено и 0 удалено
  1. 21 0
      Source/cmSystemTools.cxx
  2. 3 0
      Source/cmSystemTools.h

+ 21 - 0
Source/cmSystemTools.cxx

@@ -1880,6 +1880,27 @@ std::string cmSystemTools::GetFilenameWithoutExtension(const std::string& filena
 }
 
 
+/**
+ * Return file name without extension of a full filename (i.e. without path).
+ * Warning: it considers the last extension (for example: removes .gz
+ * from .tar.gz)
+ */
+std::string
+cmSystemTools::GetFilenameWithoutLastExtension(const std::string& filename)
+{
+  std::string name = cmSystemTools::GetFilenameName(filename);
+  std::string::size_type dot_pos = name.rfind(".");
+  if(dot_pos != std::string::npos)
+    {
+    return name.substr(0, dot_pos);
+    }
+  else
+    {
+    return name;
+    }
+}
+
+
 void cmSystemTools::Glob(const char *directory, const char *regexp,
                          std::vector<std::string>& files)
 {

+ 3 - 0
Source/cmSystemTools.h

@@ -255,6 +255,9 @@ public:
   ///! return file name without extension of a full filename.
   static std::string GetFilenameWithoutExtension(const std::string&);
   
+  ///! return file name without its last (shortest) extension.
+  static std::string GetFilenameWithoutLastExtension(const std::string&);
+  
   static long int ModifiedTime(const char* filename);
 
   /**