From 294aeb9a408d32298fbc18d1d91653cfc954309b Mon Sep 17 00:00:00 2001 From: Vince Harron Date: Tue, 24 Feb 2015 05:14:49 +0000 Subject: [PATCH] Compile fix for FileSystem::IsLocal on Linux llvm-svn: 230311 --- lldb/source/Host/posix/FileSystem.cpp | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/lldb/source/Host/posix/FileSystem.cpp b/lldb/source/Host/posix/FileSystem.cpp index b8a4557..ee41b0c 100644 --- a/lldb/source/Host/posix/FileSystem.cpp +++ b/lldb/source/Host/posix/FileSystem.cpp @@ -14,6 +14,11 @@ #include #include #include +#ifdef __linux__ +#include +#include +#include +#endif // lldb Includes #include "lldb/Core/Error.h" @@ -175,12 +180,30 @@ FileSystem::Readlink(const char *path, char *buf, size_t buf_len) return error; } +static bool IsLocal(const struct statfs& info) +{ +#ifdef __linux__ + #define CIFS_MAGIC_NUMBER 0xFF534D42 + switch (info.f_type) + { + case NFS_SUPER_MAGIC: + case SMB_SUPER_MAGIC: + case CIFS_MAGIC_NUMBER: + return false; + default: + return true; + } +#else + return (info.f_flags & MNT_LOCAL) != 0; +#endif +} + bool FileSystem::IsLocal(const FileSpec &spec) { struct statfs statfs_info; std::string path (spec.GetPath()); - if (statfs(path.c_str(), &statfs_info) == 0) - return (statfs_info.f_flags & MNT_LOCAL) != 0; + if (statfs(path.c_str(), &statfs_info) != 0) + return ::IsLocal(statfs_info); return false; } -- 2.7.4