forked from OSchip/llvm-project
Pull support for the shared and exclusive lock since this wasn't available
on linux. And conditionalize the availablility of the fcntl() command F_GETPATH. llvm-svn: 125152
This commit is contained in:
parent
1305bc0a65
commit
925137cf84
|
@ -35,9 +35,7 @@ public:
|
|||
eOpenOptionAppend = (1u << 2), // Don't truncate file when opening, append to end of file
|
||||
eOpenOptionNonBlocking = (1u << 3), // File reads
|
||||
eOpenOptionCanCreate = (1u << 4), // Create file if doesn't already exist
|
||||
eOpenOptionCanCreateNewOnly = (1u << 5), // Can create file only if it doesn't already exist
|
||||
eOpenOptionSharedLock = (1u << 6), // Open file and get shared lock
|
||||
eOpenOptionExclusiveLock = (1u << 7) // Open file and get exclusive lock
|
||||
eOpenOptionCanCreateNewOnly = (1u << 5) // Can create file only if it doesn't already exist
|
||||
};
|
||||
|
||||
enum Permissions
|
||||
|
|
|
@ -25,4 +25,6 @@
|
|||
|
||||
//#define LLDB_CONFIG_DLOPEN_RTLD_FIRST_SUPPORTED 1
|
||||
|
||||
//#define LLDB_CONFIG_FCNTL_GETPATH_SUPPORTED 1
|
||||
|
||||
#endif // #ifndef liblldb_Platform_Config_h_
|
|
@ -25,4 +25,6 @@
|
|||
|
||||
//#define LLDB_CONFIG_DLOPEN_RTLD_FIRST_SUPPORTED 1
|
||||
|
||||
//#define LLDB_CONFIG_FCNTL_GETPATH_SUPPORTED 1
|
||||
|
||||
#endif // #ifndef liblldb_Platform_Config_h_
|
||||
|
|
|
@ -25,4 +25,6 @@
|
|||
|
||||
#define LLDB_CONFIG_DLOPEN_RTLD_FIRST_SUPPORTED 1
|
||||
|
||||
#define LLDB_CONFIG_FCNTL_GETPATH_SUPPORTED 1
|
||||
|
||||
#endif // #ifndef liblldb_Platform_Config_h_
|
||||
|
|
|
@ -25,4 +25,6 @@
|
|||
|
||||
//#define LLDB_CONFIG_DLOPEN_RTLD_FIRST_SUPPORTED 1
|
||||
|
||||
//#define LLDB_CONFIG_FCNTL_GETPATH_SUPPORTED 1
|
||||
|
||||
#endif // #ifndef liblldb_Platform_Config_h_
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include <fcntl.h>
|
||||
|
||||
#include "lldb/Core/Error.h"
|
||||
#include "lldb/Host/Config.h"
|
||||
#include "lldb/Host/FileSpec.h"
|
||||
|
||||
using namespace lldb;
|
||||
|
@ -202,13 +203,6 @@ File::Open (const char *path, uint32_t options, uint32_t permissions)
|
|||
if (options & eOpenOptionCanCreateNewOnly)
|
||||
oflag |= O_CREAT | O_EXCL;
|
||||
|
||||
|
||||
if (options & eOpenOptionSharedLock)
|
||||
oflag |= O_SHLOCK;
|
||||
|
||||
if (options & eOpenOptionExclusiveLock)
|
||||
oflag |= O_EXLOCK;
|
||||
|
||||
mode_t mode = 0;
|
||||
if (permissions & ePermissionsUserRead) mode |= S_IRUSR;
|
||||
if (permissions & ePermissionsUserWrite) mode |= S_IWUSR;
|
||||
|
@ -262,6 +256,7 @@ Error
|
|||
File::GetFileSpec (FileSpec &file_spec) const
|
||||
{
|
||||
Error error;
|
||||
#ifdef LLDB_CONFIG_FCNTL_GETPATH_SUPPORTED
|
||||
if (IsValid ())
|
||||
{
|
||||
char path[PATH_MAX];
|
||||
|
@ -271,7 +266,12 @@ File::GetFileSpec (FileSpec &file_spec) const
|
|||
file_spec.SetFile (path, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
error.SetErrorString("invalid file handle");
|
||||
}
|
||||
#else
|
||||
error.SetErrorString ("fcntl (fd, F_GETPATH, ...) is not supported on this platform");
|
||||
#endif
|
||||
|
||||
if (error.Fail())
|
||||
file_spec.Clear();
|
||||
|
|
Loading…
Reference in New Issue