Remove trailing slash from dumping directory FileSpec.
authorChaoren Lin <chaorenl@google.com>
Tue, 19 May 2015 23:11:58 +0000 (23:11 +0000)
committerChaoren Lin <chaorenl@google.com>
Tue, 19 May 2015 23:11:58 +0000 (23:11 +0000)
Reviewers: domipheus, ovyalov

Reviewed By: ovyalov

Subscribers: lldb-commits

Differential Revision: http://reviews.llvm.org/D9862

llvm-svn: 237741

lldb/include/lldb/Host/FileSpec.h
lldb/source/Host/common/FileSpec.cpp

index 891a6e4..89a8b20 100644 (file)
@@ -259,9 +259,13 @@ public:
     ///
     /// @param[in] s
     ///     The stream to which to dump the object description.
+    ///
+    /// @param[in] trailing_slash
+    ///     If true and the file is a non root directory, then a trailing slash
+    ///     will be added.
     //------------------------------------------------------------------
     void
-    Dump (Stream *s) const;
+    Dump(Stream *s, bool trailing_slash = true) const;
 
     //------------------------------------------------------------------
     /// Existence test.
index 062cdcd..7f04075 100644 (file)
@@ -609,12 +609,13 @@ FileSpec::RemoveBackupDots (const ConstString &input_const_str, ConstString &res
 // directory delimiter, and the filename.
 //------------------------------------------------------------------
 void
-FileSpec::Dump(Stream *s) const
+FileSpec::Dump(Stream *s, bool trailing_slash) const
 {
     if (s)
     {
         m_directory.Dump(s);
-        if (m_directory && m_directory.GetStringRef().back() != '/')
+        if ((m_filename || trailing_slash) && m_directory &&
+                !m_directory.GetStringRef().endswith("/"))
             s->PutChar('/');
         m_filename.Dump(s);
     }
@@ -816,7 +817,7 @@ void
 FileSpec::GetPath(llvm::SmallVectorImpl<char> &path, bool denormalize) const
 {
     StreamString stream;
-    Dump(&stream);
+    Dump(&stream, false);
     path.append(stream.GetString().begin(), stream.GetString().end());
     Normalize(path, m_syntax);
     if (denormalize && !path.empty())