summaryrefslogtreecommitdiffstats
path: root/lldb/source/Host/common/FileSpec.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Host/common/FileSpec.cpp')
-rw-r--r--lldb/source/Host/common/FileSpec.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/lldb/source/Host/common/FileSpec.cpp b/lldb/source/Host/common/FileSpec.cpp
index 36fddc170fe..062cdcd98b4 100644
--- a/lldb/source/Host/common/FileSpec.cpp
+++ b/lldb/source/Host/common/FileSpec.cpp
@@ -27,6 +27,7 @@
#include <pwd.h>
#endif
+#include "lldb/Core/ArchSpec.h"
#include "lldb/Core/DataBufferHeap.h"
#include "lldb/Core/DataBufferMemoryMap.h"
#include "lldb/Core/RegularExpression.h"
@@ -201,6 +202,11 @@ FileSpec::FileSpec(const char *pathname, bool resolve_path, PathSyntax syntax) :
SetFile(pathname, resolve_path, syntax);
}
+FileSpec::FileSpec(const char *pathname, bool resolve_path, ArchSpec arch) :
+ FileSpec(pathname, resolve_path, arch.GetTriple().isOSWindows() ? ePathSyntaxWindows : ePathSyntaxPosix)
+{
+}
+
//------------------------------------------------------------------
// Copy constructor
//------------------------------------------------------------------
@@ -605,11 +611,10 @@ FileSpec::RemoveBackupDots (const ConstString &input_const_str, ConstString &res
void
FileSpec::Dump(Stream *s) const
{
- static ConstString g_slash_only ("/");
if (s)
{
m_directory.Dump(s);
- if (m_directory && m_directory != g_slash_only)
+ if (m_directory && m_directory.GetStringRef().back() != '/')
s->PutChar('/');
m_filename.Dump(s);
}
@@ -810,10 +815,9 @@ FileSpec::GetPath(bool denormalize) const
void
FileSpec::GetPath(llvm::SmallVectorImpl<char> &path, bool denormalize) const
{
- if (m_directory)
- path.append(m_directory.GetCString(), m_directory.GetCString() + m_directory.GetLength());
- if (m_filename)
- llvm::sys::path::append(path, m_filename.GetCString());
+ StreamString stream;
+ Dump(&stream);
+ path.append(stream.GetString().begin(), stream.GetString().end());
Normalize(path, m_syntax);
if (denormalize && !path.empty())
DeNormalize(path, m_syntax);
OpenPOWER on IntegriCloud