LLVM  6.0.0svn
Namespaces | Classes | Enumerations | Functions
llvm::sys::fs Namespace Reference

Namespaces

 detail
 

Classes

class  basic_file_status
 Represents the result of a call to directory_iterator::status(). More...
 
class  directory_entry
 directory_entry - A single entry in a directory. More...
 
class  directory_iterator
 directory_iterator - Iterates through the entries in path. More...
 
class  file_status
 Represents the result of a call to sys::fs::status(). More...
 
class  mapped_file_region
 This class represents a memory mapped file. More...
 
class  recursive_directory_iterator
 recursive_directory_iterator - Same as directory_iterator except for it recurses down into child directories. More...
 
struct  space_info
 space_info - Self explanatory. More...
 
class  TempFile
 Represents a temporary file. More...
 
class  UniqueID
 

Enumerations

enum  file_type {
  file_type::status_error, file_type::file_not_found, file_type::regular_file, file_type::directory_file,
  file_type::symlink_file, file_type::block_file, file_type::character_file, file_type::fifo_file,
  file_type::socket_file, file_type::type_unknown
}
 An enumeration for the file system's view of the type. More...
 
enum  perms {
  no_perms = 0, owner_read = 0400, owner_write = 0200, owner_exe = 0100,
  owner_all = owner_read | owner_write | owner_exe, group_read = 040, group_write = 020, group_exe = 010,
  group_all = group_read | group_write | group_exe, others_read = 04, others_write = 02, others_exe = 01,
  others_all = others_read | others_write | others_exe, all_read = owner_read | group_read | others_read, all_write = owner_write | group_write | others_write, all_exe = owner_exe | group_exe | others_exe,
  all_all = owner_all | group_all | others_all, set_uid_on_exe = 04000, set_gid_on_exe = 02000, sticky_bit = 01000,
  all_perms = all_all | set_uid_on_exe | set_gid_on_exe | sticky_bit, perms_not_known = 0xFFFF
}
 

Functions

perms operator| (perms l, perms r)
 
perms operator & (perms l, perms r)
 
permsoperator|= (perms &l, perms r)
 
permsoperator &= (perms &l, perms r)
 
perms operator~ (perms x)
 
static std::error_code createTemporaryFile (const Twine &Model, int &ResultFD, llvm::SmallVectorImpl< char > &ResultPath, FSEntity Type)
 
static std::error_code createTemporaryFile (const Twine &Prefix, StringRef Suffix, int &ResultFD, llvm::SmallVectorImpl< char > &ResultPath, FSEntity Type)
 
static std::error_code make_absolute (const Twine &current_directory, SmallVectorImpl< char > &path, bool use_current_directory)
 
Physical Operators
std::error_code make_absolute (const Twine &current_directory, SmallVectorImpl< char > &path)
 Make path an absolute path. More...
 
std::error_code make_absolute (SmallVectorImpl< char > &path)
 Make path an absolute path. More...
 
std::error_code create_directories (const Twine &path, bool IgnoreExisting=true, perms Perms=owner_all|group_all)
 Create all the non-existent directories in path. More...
 
std::error_code create_directory (const Twine &path, bool IgnoreExisting=true, perms Perms=owner_all|group_all)
 Create the directory in path. More...
 
std::error_code create_link (const Twine &to, const Twine &from)
 Create a link from from to to. More...
 
std::error_code create_hard_link (const Twine &to, const Twine &from)
 Create a hard link from from to to, or return an error. More...
 
std::error_code real_path (const Twine &path, SmallVectorImpl< char > &output, bool expand_tilde=false)
 Collapse all . More...
 
std::error_code current_path (SmallVectorImpl< char > &result)
 Get the current path. More...
 
std::error_code set_current_path (const Twine &path)
 Set the current path. More...
 
std::error_code remove (const Twine &path, bool IgnoreNonExisting=true)
 Remove path. More...
 
std::error_code remove_directories (const Twine &path, bool IgnoreErrors=true)
 Recursively delete a directory. More...
 
std::error_code rename (const Twine &from, const Twine &to)
 Rename from to to. More...
 
std::error_code copy_file (const Twine &From, const Twine &To)
 Copy the contents of From to To. More...
 
std::error_code resize_file (int FD, uint64_t Size)
 Resize path to size. More...
 
ErrorOr< MD5::MD5Resultmd5_contents (int FD)
 Compute an MD5 hash of a file's contents. More...
 
ErrorOr< MD5::MD5Resultmd5_contents (const Twine &Path)
 Version of compute_md5 that doesn't require an open file descriptor. More...
 

Physical Observers

enum  AccessMode { AccessMode::Exist, AccessMode::Write, AccessMode::Execute }
 
enum  OpenFlags : unsigned {
  F_None = 0, F_Excl = 1, F_Append = 2, F_Text = 4,
  F_RW = 8
}
 
bool exists (const basic_file_status &status)
 Does file exist? More...
 
std::error_code access (const Twine &Path, AccessMode Mode)
 Can the file be accessed? More...
 
bool exists (const Twine &Path)
 Does file exist? More...
 
bool can_execute (const Twine &Path)
 Can we execute this file? More...
 
bool can_write (const Twine &Path)
 Can we write this file? More...
 
bool equivalent (file_status A, file_status B)
 Do file_status's represent the same thing? More...
 
std::error_code equivalent (const Twine &A, const Twine &B, bool &result)
 Do paths represent the same thing? More...
 
bool equivalent (const Twine &A, const Twine &B)
 Simpler version of equivalent for clients that don't need to differentiate between an error and false. More...
 
std::error_code is_local (const Twine &path, bool &result)
 Is the file mounted on a local filesystem? More...
 
std::error_code is_local (int FD, bool &result)
 Version of is_local accepting an open file descriptor. More...
 
bool is_local (const Twine &Path)
 Simpler version of is_local for clients that don't need to differentiate between an error and false. More...
 
bool is_local (int FD)
 Simpler version of is_local accepting an open file descriptor for clients that don't need to differentiate between an error and false. More...
 
file_type get_file_type (const Twine &Path, bool Follow=true)
 Does status represent a directory? More...
 
bool is_directory (const basic_file_status &status)
 Does status represent a directory? More...
 
std::error_code is_directory (const Twine &path, bool &result)
 Is path a directory? More...
 
bool is_directory (const Twine &Path)
 Simpler version of is_directory for clients that don't need to differentiate between an error and false. More...
 
bool is_regular_file (const basic_file_status &status)
 Does status represent a regular file? More...
 
std::error_code is_regular_file (const Twine &path, bool &result)
 Is path a regular file? More...
 
bool is_regular_file (const Twine &Path)
 Simpler version of is_regular_file for clients that don't need to differentiate between an error and false. More...
 
bool is_symlink_file (const basic_file_status &status)
 Does status represent a symlink file? More...
 
std::error_code is_symlink_file (const Twine &path, bool &result)
 Is path a symlink file? More...
 
bool is_symlink_file (const Twine &Path)
 Simpler version of is_symlink_file for clients that don't need to differentiate between an error and false. More...
 
bool is_other (const basic_file_status &status)
 Does this status represent something that exists but is not a directory or regular file? More...
 
std::error_code is_other (const Twine &path, bool &result)
 Is path something that exists but is not a directory, regular file, or symlink? More...
 
std::error_code status (const Twine &path, file_status &result, bool follow=true)
 Get file status as if by POSIX stat(). More...
 
std::error_code status (int FD, file_status &Result)
 A version for when a file descriptor is already available. More...
 
std::error_code setPermissions (const Twine &Path, perms Permissions)
 Set file permissions. More...
 
ErrorOr< permsgetPermissions (const Twine &Path)
 Get file permissions. More...
 
std::error_code file_size (const Twine &Path, uint64_t &Result)
 Get file size. More...
 
std::error_code setLastModificationAndAccessTime (int FD, TimePoint<> Time)
 Set the file modification and access time. More...
 
bool status_known (const basic_file_status &s)
 Is status available? More...
 
std::error_code status_known (const Twine &path, bool &result)
 Is status available? More...
 
std::error_code createUniqueFile (const Twine &Model, int &ResultFD, SmallVectorImpl< char > &ResultPath, unsigned Mode=all_read|all_write)
 Create a uniquely named file. More...
 
std::error_code createUniqueFile (const Twine &Model, SmallVectorImpl< char > &ResultPath)
 Simpler version for clients that don't want an open file. More...
 
std::error_code createTemporaryFile (const Twine &Prefix, StringRef Suffix, int &ResultFD, SmallVectorImpl< char > &ResultPath)
 Create a file in the system temporary directory. More...
 
std::error_code createTemporaryFile (const Twine &Prefix, StringRef Suffix, SmallVectorImpl< char > &ResultPath)
 Simpler version for clients that don't want an open file. More...
 
std::error_code createUniqueDirectory (const Twine &Prefix, SmallVectorImpl< char > &ResultPath)
 
OpenFlags operator| (OpenFlags A, OpenFlags B)
 
OpenFlagsoperator|= (OpenFlags &A, OpenFlags B)
 
std::error_code openFileForWrite (const Twine &Name, int &ResultFD, OpenFlags Flags, unsigned Mode=0666)
 
std::error_code openFileForRead (const Twine &Name, int &ResultFD, SmallVectorImpl< char > *RealPath=nullptr)
 
std::error_code getUniqueID (const Twine Path, UniqueID &Result)
 
ErrorOr< space_infodisk_space (const Twine &Path)
 Get disk space usage information. More...
 
std::string getMainExecutable (const char *argv0, void *MainExecAddr)
 Return the path to the main executable, given the value of argv[0] from program startup and the address of main itself. More...
 

Enumeration Type Documentation

◆ AccessMode

Enumerator
Exist 
Write 
Execute 

Definition at line 416 of file FileSystem.h.

◆ file_type

An enumeration for the file system's view of the type.

Enumerator
status_error 
file_not_found 
regular_file 
directory_file 
symlink_file 
block_file 
character_file 
fifo_file 
socket_file 
type_unknown 

Definition at line 57 of file FileSystem.h.

◆ OpenFlags

Enumerator
F_None 
F_Excl 

F_Excl - When opening a file, this flag makes raw_fd_ostream report an error if the file already exists.

F_Append 

F_Append - When opening a file, if it already exists append to the existing file instead of returning an error.

This may not be specified with F_Excl.

F_Text 

The file should be opened in text mode on platforms that make this distinction.

F_RW 

Open the file for read and write.

Definition at line 755 of file FileSystem.h.

◆ perms

Enumerator
no_perms 
owner_read 
owner_write 
owner_exe 
owner_all 
group_read 
group_write 
group_exe 
group_all 
others_read 
others_write 
others_exe 
others_all 
all_read 
all_write 
all_exe 
all_all 
set_uid_on_exe 
set_gid_on_exe 
sticky_bit 
all_perms 
perms_not_known 

Definition at line 77 of file FileSystem.h.

Function Documentation

◆ access()

std::error_code llvm::sys::fs::access ( const Twine Path,
AccessMode  Mode 
)

Can the file be accessed?

Parameters
PathInput path.
Returns
errc::success if the path can be accessed, otherwise a platform-specific error_code.

Referenced by can_write(), createUniqueEntity(), exists(), GetSymbolRef(), and llvm::LockFileManager::waitForUnlock().

◆ can_execute()

bool llvm::sys::fs::can_execute ( const Twine Path)

Can we execute this file?

Parameters
PathInput path.
Returns
True if we can execute it, false otherwise.

Referenced by exists().

◆ can_write()

bool llvm::sys::fs::can_write ( const Twine Path)
inline

Can we write this file?

Parameters
PathInput path.
Returns
True if we can write to it, false otherwise.

Definition at line 443 of file FileSystem.h.

References access(), B, equivalent(), and Write.

◆ copy_file()

std::error_code llvm::sys::fs::copy_file ( const Twine From,
const Twine To 
)

Copy the contents of From to To.

Parameters
FromThe path to copy from.
ToThe path to copy to. This is created.

Definition at line 975 of file Path.cpp.

References F_None, openFileForRead(), openFileForWrite(), llvm::support::endian::read(), and llvm::support::endian::write().

Referenced by llvm::sys::fs::file_status::file_status(), and writeGeneratedObject().

◆ create_directories()

std::error_code llvm::sys::fs::create_directories ( const Twine path,
bool  IgnoreExisting = true,
perms  Perms = owner_all | group_all 
)

Create all the non-existent directories in path.

Parameters
pathDirectories to create.
Returns
errc::success if is_directory(path), otherwise a platform specific error_code. If IgnoreExisting is false, also returns error if the directory already existed.

Definition at line 951 of file Path.cpp.

References create_directory(), llvm::StringRef::empty(), llvm::no_such_file_or_directory, P, llvm::sys::path::parent_path(), and llvm::Twine::toStringRef().

Referenced by llvm::sys::fs::file_status::file_status(), llvm::lto::getThinLTOOutputFile(), llvm::lto::localCache(), and llvm::ThinLTOCodeGenerator::run().

◆ create_directory()

std::error_code llvm::sys::fs::create_directory ( const Twine path,
bool  IgnoreExisting = true,
perms  Perms = owner_all|group_all 
)

Create the directory in path.

Parameters
pathDirectory to create.
Returns
errc::success if is_directory(path), otherwise a platform specific error_code. If IgnoreExisting is false, also returns error if the directory already existed.

Referenced by create_directories(), createUniqueEntity(), and llvm::sys::fs::file_status::file_status().

◆ create_hard_link()

std::error_code llvm::sys::fs::create_hard_link ( const Twine to,
const Twine from 
)

Create a hard link from from to to, or return an error.

Parameters
toThe path to hard link to.
fromThe path to hard link from. This is created.
Returns
errc::success if the link was created, otherwise a platform specific error_code.

Referenced by llvm::sys::fs::file_status::file_status(), and writeGeneratedObject().

◆ create_link()

std::error_code llvm::sys::fs::create_link ( const Twine to,
const Twine from 
)

Create a link from from to to.

The link may be a soft or a hard link, depending on the platform. The caller may not assume which one. Currently on windows it creates a hard link since soft links require extra privileges. On unix, it creates a soft link since hard links don't work on SMB file systems.

Parameters
toThe path to hard link to.
fromThe path to hard link from. This is created.
Returns
errc::success if the link was created, otherwise a platform specific error_code.

Referenced by llvm::sys::fs::file_status::file_status(), and llvm::LockFileManager::LockFileManager().

◆ createTemporaryFile() [1/4]

std::error_code llvm::sys::fs::createTemporaryFile ( const Twine Prefix,
StringRef  Suffix,
int &  ResultFD,
SmallVectorImpl< char > &  ResultPath 
)

Create a file in the system temporary directory.

The filename is of the form prefix-random_chars.suffix. Since the directory is not know to the caller, Prefix and Suffix cannot have path separators. The files are created with mode 0600.

This should be used for things like a temporary .s that is removed after running the assembler.

Definition at line 866 of file Path.cpp.

References createTemporaryFile(), and FS_File.

Referenced by llvm::createGraphFilename(), printSymbolizedStackTrace(), and llvm::LTOCodeGenerator::writeMergedModules().

◆ createTemporaryFile() [2/4]

std::error_code llvm::sys::fs::createTemporaryFile ( const Twine Prefix,
StringRef  Suffix,
SmallVectorImpl< char > &  ResultPath 
)

Simpler version for clients that don't want an open file.

Definition at line 872 of file Path.cpp.

References createTemporaryFile(), llvm::NVPTXISD::Dummy, and FS_Name.

◆ createTemporaryFile() [3/4]

static std::error_code llvm::sys::fs::createTemporaryFile ( const Twine Model,
int &  ResultFD,
llvm::SmallVectorImpl< char > &  ResultPath,
FSEntity  Type 
)
static

◆ createTemporaryFile() [4/4]

static std::error_code llvm::sys::fs::createTemporaryFile ( const Twine Prefix,
StringRef  Suffix,
int &  ResultFD,
llvm::SmallVectorImpl< char > &  ResultPath,
FSEntity  Type 
)
static

Definition at line 859 of file Path.cpp.

References llvm::StringRef::empty().

Referenced by createTemporaryFile().

◆ createUniqueDirectory()

std::error_code llvm::sys::fs::createUniqueDirectory ( const Twine Prefix,
SmallVectorImpl< char > &  ResultPath 
)

Definition at line 881 of file Path.cpp.

References createUniqueEntity(), llvm::NVPTXISD::Dummy, and FS_Dir.

◆ createUniqueFile() [1/2]

std::error_code llvm::sys::fs::createUniqueFile ( const Twine Model,
int &  ResultFD,
SmallVectorImpl< char > &  ResultPath,
unsigned  Mode = all_read | all_write 
)

Create a uniquely named file.

Generates a unique path suitable for a temporary file and then opens it as a file. The name is based on model with '' replaced by a random char in [0-9a-f]. If model is not an absolute path, the temporary file will be created in the current directory.

Example: clang-%%-%%-%%-%%-%%.s => clang-a0-b1-c2-d3-e4.s

This is an atomic operation. Either the file is created and opened, or the file system is left untouched.

The intended use is for files that are to be kept, possibly after renaming them. For example, when running 'clang -c foo.o', the file can be first created as foo-abc123.o and then renamed.

Parameters
ModelName to base unique path off of.
ResultFDSet to the opened file's file descriptor.
ResultPathSet to the opened file's absolute path.
Returns
errc::success if Result{FD,Path} have been successfully set, otherwise a platform-specific error_code.

Definition at line 751 of file Path.cpp.

References createUniqueEntity(), and FS_File.

Referenced by llvm::sys::fs::TempFile::create(), and file_size().

◆ createUniqueFile() [2/2]

std::error_code llvm::sys::fs::createUniqueFile ( const Twine Model,
SmallVectorImpl< char > &  ResultPath 
)

Simpler version for clients that don't want an open file.

Definition at line 757 of file Path.cpp.

References createUniqueEntity(), llvm::NVPTXISD::Dummy, and FS_Name.

◆ current_path()

std::error_code llvm::sys::fs::current_path ( SmallVectorImpl< char > &  result)

Get the current path.

Parameters
resultHolds the current path on return.
Returns
errc::success if the current path has been stored in result, otherwise a platform-specific error_code.

Referenced by ExpandResponseFile(), llvm::sys::fs::file_status::file_status(), getFunctionName(), and make_absolute().

◆ disk_space()

ErrorOr<space_info> llvm::sys::fs::disk_space ( const Twine Path)

Get disk space usage information.

Note: Users must be careful about "Time Of Check, Time Of Use" kind of bug. Note: Windows reports results according to the quota allocated to the user.

Parameters
PathInput path.
Returns
a space_info structure filled with the capacity, free, and available space on the device Path is on. A platform specific error_code is returned on error.

Referenced by operator|=(), and llvm::pruneCache().

◆ equivalent() [1/3]

bool llvm::sys::fs::equivalent ( file_status  A,
file_status  B 
)

Do file_status's represent the same thing?

Parameters
AInput file_status.
BInput file_status.

assert(status_known(A) || status_known(B));

Returns
True if A and B both represent the same file system entity, false otherwise.

Referenced by can_write(), equivalent(), and llvm::sys::Process::FindInEnvPath().

◆ equivalent() [2/3]

std::error_code llvm::sys::fs::equivalent ( const Twine A,
const Twine B,
bool result 
)

Do paths represent the same thing?

assert(status_known(A) || status_known(B));

Parameters
AInput path A.
BInput path B.
resultSet to true if stat(A) and stat(B) have the same device and inode (or equivalent).
Returns
errc::success if result has been successfully set, otherwise a platform-specific error_code.

◆ equivalent() [3/3]

bool llvm::sys::fs::equivalent ( const Twine A,
const Twine B 
)
inline

Simpler version of equivalent for clients that don't need to differentiate between an error and false.

Definition at line 472 of file FileSystem.h.

References equivalent(), and is_local().

◆ exists() [1/2]

bool llvm::sys::fs::exists ( const basic_file_status status)

Does file exist?

Parameters
statusA basic_file_status previously returned from stat.
Returns
True if the file represented by status exists, false if it does not.

Definition at line 1039 of file Path.cpp.

References status_known(), and llvm::sys::fs::basic_file_status::type().

Referenced by llvm::sys::fs::file_status::file_status(), llvm::sys::Process::FindInEnvPath(), findInputFile(), is_other(), llvm::LockFileManager::LockFileManager(), llvm::LockFileManager::waitForUnlock(), and writeGeneratedObject().

◆ exists() [2/2]

bool llvm::sys::fs::exists ( const Twine Path)
inline

Does file exist?

Parameters
PathInput path.
Returns
True if it exists, false otherwise.

Definition at line 429 of file FileSystem.h.

References access(), can_execute(), and Exist.

◆ file_size()

std::error_code llvm::sys::fs::file_size ( const Twine Path,
uint64_t &  Result 
)
inline

Get file size.

Parameters
PathInput path.
ResultSet to the size of the file in Path.
Returns
errc::success if result has been successfully set, otherwise a platform-specific error_code.

Definition at line 639 of file FileSystem.h.

References all_read, all_write, createUniqueFile(), setLastModificationAndAccessTime(), status(), and status_known().

Referenced by llvm::xray::loadInstrumentationMap(), and llvm::xray::loadTraceFile().

◆ get_file_type()

file_type llvm::sys::fs::get_file_type ( const Twine Path,
bool  Follow = true 
)

Does status represent a directory?

Parameters
PathThe path to get the type of.
FollowFor symbolic links, indicates whether to return the file type of the link itself, or of the target.
Returns
A value from the file_type enumeration indicating the type of file.

Definition at line 1047 of file Path.cpp.

References status(), and llvm::sys::fs::basic_file_status::type().

Referenced by is_local().

◆ getMainExecutable()

std::string llvm::sys::fs::getMainExecutable ( const char argv0,
void *  MainExecAddr 
)

Return the path to the main executable, given the value of argv[0] from program startup and the address of main itself.

In extremis, this function may fail and return an empty path.

Referenced by printSymbolizedStackTrace().

◆ getPermissions()

ErrorOr< perms > llvm::sys::fs::getPermissions ( const Twine Path)

Get file permissions.

Parameters
PathFile to get permissions from.
Returns
the permissions if they were successfully retrieved, otherwise a platform-specific error_code.
Note
On Windows, if the file does not have the FILE_ATTRIBUTE_READONLY attribute, all_all will be returned. Otherwise, all_read | all_exe will be returned.

Definition at line 1112 of file Path.cpp.

References llvm::sys::fs::basic_file_status::permissions(), and status().

Referenced by is_symlink_file().

◆ getUniqueID()

std::error_code llvm::sys::fs::getUniqueID ( const Twine  Path,
UniqueID Result 
)

◆ is_directory() [1/3]

bool llvm::sys::fs::is_directory ( const basic_file_status status)

Does status represent a directory?

Parameters
statusA basic_file_status previously returned from status.
Returns
status.type() == file_type::directory_file.

Definition at line 1054 of file Path.cpp.

References llvm::sys::fs::basic_file_status::type().

Referenced by llvm::sys::fs::recursive_directory_iterator::increment(), is_directory(), is_local(), is_other(), llvm::pruneCache(), and llvm::ThinLTOCodeGenerator::run().

◆ is_directory() [2/3]

std::error_code llvm::sys::fs::is_directory ( const Twine path,
bool result 
)

Is path a directory?

Parameters
pathInput path.
resultSet to true if path is a directory (after following symlinks, false if it is not. Undefined otherwise.
Returns
errc::success if result has been successfully set, otherwise a platform-specific error_code.

Definition at line 1058 of file Path.cpp.

References is_directory(), and status().

◆ is_directory() [3/3]

bool llvm::sys::fs::is_directory ( const Twine Path)
inline

Simpler version of is_directory for clients that don't need to differentiate between an error and false.

Definition at line 528 of file FileSystem.h.

References is_directory(), and is_regular_file().

◆ is_local() [1/4]

std::error_code llvm::sys::fs::is_local ( const Twine path,
bool result 
)

Is the file mounted on a local filesystem?

Parameters
pathInput path.
resultSet to true if path is on fixed media such as a hard disk, false if it is not.
Returns
errc::success if result has been successfully set, otherwise a platform specific error_code.

Referenced by equivalent(), and is_local().

◆ is_local() [2/4]

std::error_code llvm::sys::fs::is_local ( int  FD,
bool result 
)

Version of is_local accepting an open file descriptor.

◆ is_local() [3/4]

bool llvm::sys::fs::is_local ( const Twine Path)
inline

Simpler version of is_local for clients that don't need to differentiate between an error and false.

Definition at line 491 of file FileSystem.h.

References is_local().

◆ is_local() [4/4]

bool llvm::sys::fs::is_local ( int  FD)
inline

Simpler version of is_local accepting an open file descriptor for clients that don't need to differentiate between an error and false.

Definition at line 498 of file FileSystem.h.

References get_file_type(), is_directory(), and is_local().

◆ is_other() [1/2]

bool llvm::sys::fs::is_other ( const basic_file_status status)

Does this status represent something that exists but is not a directory or regular file?

Parameters
statusA basic_file_status previously returned from status.
Returns
exists(s) && !is_regular_file(s) && !is_directory(s)

Definition at line 1090 of file Path.cpp.

References exists(), is_directory(), and is_regular_file().

Referenced by is_other(), and is_symlink_file().

◆ is_other() [2/2]

std::error_code llvm::sys::fs::is_other ( const Twine path,
bool result 
)

Is path something that exists but is not a directory, regular file, or symlink?

Parameters
pathInput path.
resultSet to true if path exists, but is not a directory, regular file, or a symlink, false if it does not. Undefined otherwise.
Returns
errc::success if result has been successfully set, otherwise a platform-specific error_code.

Definition at line 1096 of file Path.cpp.

References is_other(), and status().

◆ is_regular_file() [1/3]

bool llvm::sys::fs::is_regular_file ( const basic_file_status status)

Does status represent a regular file?

Parameters
statusA basic_file_status previously returned from status.
Returns
status_known(status) && status.type() == file_type::regular_file.

Definition at line 1066 of file Path.cpp.

References llvm::sys::fs::basic_file_status::type().

Referenced by is_directory(), is_other(), and is_regular_file().

◆ is_regular_file() [2/3]

std::error_code llvm::sys::fs::is_regular_file ( const Twine path,
bool result 
)

Is path a regular file?

Parameters
pathInput path.
resultSet to true if path is a regular file (after following symlinks), false if it is not. Undefined otherwise.
Returns
errc::success if result has been successfully set, otherwise a platform-specific error_code.

Definition at line 1070 of file Path.cpp.

References is_regular_file(), and status().

◆ is_regular_file() [3/3]

bool llvm::sys::fs::is_regular_file ( const Twine Path)
inline

Simpler version of is_regular_file for clients that don't need to differentiate between an error and false.

Definition at line 550 of file FileSystem.h.

References is_regular_file(), and is_symlink_file().

◆ is_symlink_file() [1/3]

bool llvm::sys::fs::is_symlink_file ( const basic_file_status status)

Does status represent a symlink file?

Parameters
statusA basic_file_status previously returned from status.
Returns
status_known(status) && status.type() == file_type::symlink_file.

Definition at line 1078 of file Path.cpp.

References llvm::sys::fs::basic_file_status::type().

Referenced by is_regular_file(), and is_symlink_file().

◆ is_symlink_file() [2/3]

std::error_code llvm::sys::fs::is_symlink_file ( const Twine path,
bool result 
)

Is path a symlink file?

Parameters
pathInput path.
resultSet to true if path is a symlink file, false if it is not. Undefined otherwise.
Returns
errc::success if result has been successfully set, otherwise a platform-specific error_code.

Definition at line 1082 of file Path.cpp.

References is_symlink_file(), and status().

◆ is_symlink_file() [3/3]

bool llvm::sys::fs::is_symlink_file ( const Twine Path)
inline

Simpler version of is_symlink_file for clients that don't need to differentiate between an error and false.

Definition at line 574 of file FileSystem.h.

References getPermissions(), is_other(), is_symlink_file(), setPermissions(), and status().

◆ make_absolute() [1/3]

std::error_code llvm::sys::fs::make_absolute ( const Twine current_directory,
SmallVectorImpl< char > &  path 
)

Make path an absolute path.

Makes path absolute using the current_directory if it is not already. An empty path will result in the current_directory.

/absolute/path => /absolute/path relative/../path => <current-directory>/relative/../path

Parameters
pathA path that is modified to be an absolute path.
Returns
errc::success if path has been made absolute, otherwise a platform-specific error_code.

Definition at line 942 of file Path.cpp.

References make_absolute().

Referenced by llvm::sys::fs::file_status::file_status(), and llvm::LockFileManager::LockFileManager().

◆ make_absolute() [2/3]

std::error_code llvm::sys::fs::make_absolute ( SmallVectorImpl< char > &  path)

Make path an absolute path.

Makes path absolute using the current directory if it is not already. An empty path will result in the current directory.

/absolute/path => /absolute/path relative/../path => <current-directory>/relative/../path

Parameters
pathA path that is modified to be an absolute path.
Returns
errc::success if path has been made absolute, otherwise a platform-specific error_code.

Definition at line 947 of file Path.cpp.

References make_absolute().

◆ make_absolute() [3/3]

static std::error_code llvm::sys::fs::make_absolute ( const Twine current_directory,
SmallVectorImpl< char > &  path,
bool  use_current_directory 
)
static

◆ md5_contents() [1/2]

ErrorOr< MD5::MD5Result > llvm::sys::fs::md5_contents ( int  FD)

Compute an MD5 hash of a file's contents.

Parameters
FDInput file descriptor.
Returns
An MD5Result with the hash computed, if successful, otherwise a std::error_code.

Definition at line 1009 of file Path.cpp.

References llvm::MD5::final(), llvm::makeArrayRef(), llvm::support::endian::read(), and llvm::MD5::update().

Referenced by llvm::sys::fs::file_status::file_status(), and md5_contents().

◆ md5_contents() [2/2]

ErrorOr< MD5::MD5Result > llvm::sys::fs::md5_contents ( const Twine Path)

Version of compute_md5 that doesn't require an open file descriptor.

Definition at line 1029 of file Path.cpp.

References md5_contents(), and openFileForRead().

◆ openFileForRead()

std::error_code llvm::sys::fs::openFileForRead ( const Twine Name,
int &  ResultFD,
SmallVectorImpl< char > *  RealPath = nullptr 
)

◆ openFileForWrite()

std::error_code llvm::sys::fs::openFileForWrite ( const Twine Name,
int &  ResultFD,
OpenFlags  Flags,
unsigned  Mode = 0666 
)

◆ operator &()

perms llvm::sys::fs::operator& ( perms  l,
perms  r 
)
inline

Definition at line 107 of file FileSystem.h.

◆ operator &=()

perms& llvm::sys::fs::operator&= ( perms l,
perms  r 
)
inline

Definition at line 115 of file FileSystem.h.

◆ operator|() [1/2]

perms llvm::sys::fs::operator| ( perms  l,
perms  r 
)
inline

Definition at line 103 of file FileSystem.h.

◆ operator|() [2/2]

OpenFlags llvm::sys::fs::operator| ( OpenFlags  A,
OpenFlags  B 
)
inline

Definition at line 775 of file FileSystem.h.

◆ operator|=() [1/2]

perms& llvm::sys::fs::operator|= ( perms l,
perms  r 
)
inline

Definition at line 111 of file FileSystem.h.

◆ operator|=() [2/2]

OpenFlags& llvm::sys::fs::operator|= ( OpenFlags A,
OpenFlags  B 
)
inline

Definition at line 779 of file FileSystem.h.

References B, disk_space(), getUniqueID(), openFileForRead(), and openFileForWrite().

◆ operator~()

perms llvm::sys::fs::operator~ ( perms  x)
inline

Definition at line 119 of file FileSystem.h.

◆ real_path()

std::error_code llvm::sys::fs::real_path ( const Twine path,
SmallVectorImpl< char > &  output,
bool  expand_tilde = false 
)

Collapse all .

and .. patterns, resolve all symlinks, and optionally expand ~ expressions to the user's home directory.

Parameters
pathThe path to resolve.
outputThe location to store the resolved path.
expand_tildeIf true, resolves ~ expressions to the user's home directory.

Referenced by llvm::sys::fs::file_status::file_status().

◆ remove()

std::error_code llvm::sys::fs::remove ( const Twine path,
bool  IgnoreNonExisting = true 
)

◆ remove_directories()

std::error_code llvm::sys::fs::remove_directories ( const Twine path,
bool  IgnoreErrors = true 
)

Recursively delete a directory.

Parameters
pathInput path.
Returns
errc::success if path has been removed or didn't exist, otherwise a platform-specific error code.

Referenced by llvm::sys::fs::file_status::file_status().

◆ rename()

std::error_code llvm::sys::fs::rename ( const Twine from,
const Twine to 
)

Rename from to to.

Files are renamed as if by POSIX rename(), except that on Windows there may be a short interval of time during which the destination file does not exist.

Parameters
fromThe path to rename from.
toThe path to rename to. This is created.

Referenced by llvm::sys::fs::file_status::file_status().

◆ resize_file()

std::error_code llvm::sys::fs::resize_file ( int  FD,
uint64_t  Size 
)

Resize path to size.

File is resized as if by POSIX truncate().

Parameters
FDInput file descriptor.
SizeSize to resize to.
Returns
errc::success if path has been resized to size, otherwise a platform-specific error_code.

Referenced by createOnDiskBuffer(), and llvm::sys::fs::file_status::file_status().

◆ set_current_path()

std::error_code llvm::sys::fs::set_current_path ( const Twine path)

Set the current path.

Parameters
pathThe path to set.
Returns
errc::success if the current path was successfully set, otherwise a platform-specific error_code.

Referenced by llvm::sys::fs::file_status::file_status().

◆ setLastModificationAndAccessTime()

std::error_code llvm::sys::fs::setLastModificationAndAccessTime ( int  FD,
TimePoint<>  Time 
)

Set the file modification and access time.

Returns
errc::success if the file times were successfully set, otherwise a platform-specific error_code or errc::function_not_supported on platforms where the functionality isn't available.

Referenced by file_size().

◆ setPermissions()

std::error_code llvm::sys::fs::setPermissions ( const Twine Path,
perms  Permissions 
)

Set file permissions.

Parameters
PathFile to set permissions on.
PermissionsNew file permissions.
Returns
errc::success if the permissions were successfully set, otherwise a platform-specific error_code.
Note
On Windows, all permissions except *_write are ignored. Using any of owner_write, group_write, or all_write will make the file writable. Otherwise, the file will be marked as read-only.

Referenced by is_symlink_file().

◆ status() [1/2]

std::error_code llvm::sys::fs::status ( const Twine path,
file_status result,
bool  follow = true 
)

◆ status() [2/2]

std::error_code llvm::sys::fs::status ( int  FD,
file_status Result 
)

A version for when a file descriptor is already available.

◆ status_known() [1/2]

bool llvm::sys::fs::status_known ( const basic_file_status s)

Is status available?

Parameters
sInput file status.
Returns
True if status() != status_error.

Definition at line 1043 of file Path.cpp.

References llvm::sys::fs::basic_file_status::type().

Referenced by exists(), and file_size().

◆ status_known() [2/2]

std::error_code llvm::sys::fs::status_known ( const Twine path,
bool result 
)

Is status available?

Parameters
pathInput path.
resultSet to true if status() != status_error.
Returns
errc::success if result has been successfully set, otherwise a platform-specific error_code.