LLVM 19.0.0git
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
llvm::sys::fs Namespace Reference

Namespaces

namespace  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  FileLocker
 RAII class that facilitates file locking. 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
 

Typedefs

using file_t = int
 

Enumerations

enum class  file_type {
  status_error , file_not_found , regular_file , directory_file ,
  symlink_file , block_file , character_file , fifo_file ,
  socket_file , 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, sys::fs::OpenFlags Flags=sys::fs::OF_None)
 
static std::error_code createTemporaryFile (const Twine &Prefix, StringRef Suffix, int &ResultFD, llvm::SmallVectorImpl< char > &ResultPath, FSEntity Type, sys::fs::OpenFlags Flags=sys::fs::OF_None)
 
static std::error_code copy_file_internal (int ReadFD, int WriteFD)
 
Physical Operators
void make_absolute (const Twine &current_directory, SmallVectorImpl< char > &path)
 Make path an absolute path.
 
std::error_code make_absolute (SmallVectorImpl< char > &path)
 Make path an absolute path.
 
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.
 
std::error_code create_directory (const Twine &path, bool IgnoreExisting=true, perms Perms=owner_all|group_all)
 Create the directory in path.
 
std::error_code create_link (const Twine &to, const Twine &from)
 Create a link from from to to.
 
std::error_code create_hard_link (const Twine &to, const Twine &from)
 Create a hard link from from to to, or return an error.
 
std::error_code real_path (const Twine &path, SmallVectorImpl< char > &output, bool expand_tilde=false)
 Collapse all .
 
void expand_tilde (const Twine &path, SmallVectorImpl< char > &output)
 Expands ~ expressions to the user's home directory.
 
std::error_code current_path (SmallVectorImpl< char > &result)
 Get the current path.
 
std::error_code set_current_path (const Twine &path)
 Set the current path.
 
std::error_code remove (const Twine &path, bool IgnoreNonExisting=true)
 Remove path.
 
std::error_code remove_directories (const Twine &path, bool IgnoreErrors=true)
 Recursively delete a directory.
 
std::error_code rename (const Twine &from, const Twine &to)
 Rename from to to.
 
std::error_code copy_file (const Twine &From, const Twine &To)
 Copy the contents of From to To.
 
std::error_code copy_file (const Twine &From, int ToFD)
 Copy the contents of From to To.
 
std::error_code resize_file (int FD, uint64_t Size)
 Resize path to size.
 
std::error_code resize_file_before_mapping_readwrite (int FD, uint64_t Size)
 Resize FD to Size before mapping mapped_file_region::readwrite.
 
ErrorOr< MD5::MD5Resultmd5_contents (int FD)
 Compute an MD5 hash of a file's contents.
 
ErrorOr< MD5::MD5Resultmd5_contents (const Twine &Path)
 Version of compute_md5 that doesn't require an open file descriptor.
 

Variables

const file_t kInvalidFile
 

Physical Observers

enum class  AccessMode { Exist , Write , Execute }
 
enum  CreationDisposition : unsigned { CD_CreateAlways = 0 , CD_CreateNew = 1 , CD_OpenExisting = 2 , CD_OpenAlways = 3 }
 
enum  FileAccess : unsigned { FA_Read = 1 , FA_Write = 2 }
 
enum  OpenFlags : unsigned {
  OF_None = 0 , OF_Text = 1 , OF_CRLF = 2 , OF_TextWithCRLF = OF_Text | OF_CRLF ,
  OF_Append = 4 , OF_Delete = 8 , OF_ChildInherit = 16 , OF_UpdateAtime = 32
}
 
enum  : size_t { DefaultReadChunkSize = 4 * 4096 }
 Default chunk size for readNativeFileToEOF(). More...
 
bool exists (const basic_file_status &status)
 Does file exist?
 
std::error_code access (const Twine &Path, AccessMode Mode)
 Can the file be accessed?
 
bool exists (const Twine &Path)
 Does file exist?
 
bool can_execute (const Twine &Path)
 Can we execute this file?
 
bool can_write (const Twine &Path)
 Can we write this file?
 
bool equivalent (file_status A, file_status B)
 Do file_status's represent the same thing?
 
std::error_code equivalent (const Twine &A, const Twine &B, bool &result)
 Do paths represent the same thing?
 
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.
 
std::error_code is_local (const Twine &path, bool &result)
 Is the file mounted on a local filesystem?
 
std::error_code is_local (int FD, bool &result)
 Version of is_local accepting an open file descriptor.
 
bool is_local (const Twine &Path)
 Simpler version of is_local for clients that don't need to differentiate between an error and false.
 
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.
 
file_type get_file_type (const Twine &Path, bool Follow=true)
 Does status represent a directory?
 
bool is_directory (const basic_file_status &status)
 Does status represent a directory?
 
std::error_code is_directory (const Twine &path, bool &result)
 Is path a directory?
 
bool is_directory (const Twine &Path)
 Simpler version of is_directory for clients that don't need to differentiate between an error and false.
 
bool is_regular_file (const basic_file_status &status)
 Does status represent a regular file?
 
std::error_code is_regular_file (const Twine &path, bool &result)
 Is path a regular file?
 
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.
 
bool is_symlink_file (const basic_file_status &status)
 Does status represent a symlink file?
 
std::error_code is_symlink_file (const Twine &path, bool &result)
 Is path a symlink file?
 
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.
 
bool is_other (const basic_file_status &status)
 Does this status represent something that exists but is not a directory or regular file?
 
std::error_code is_other (const Twine &path, bool &result)
 Is path something that exists but is not a directory, regular file, or symlink?
 
std::error_code status (const Twine &path, file_status &result, bool follow=true)
 Get file status as if by POSIX stat().
 
std::error_code status (int FD, file_status &Result)
 A version for when a file descriptor is already available.
 
unsigned getUmask ()
 Get file creation mode mask of the process.
 
std::error_code setPermissions (const Twine &Path, perms Permissions)
 Set file permissions.
 
std::error_code setPermissions (int FD, perms Permissions)
 Vesion of setPermissions accepting a file descriptor.
 
ErrorOr< permsgetPermissions (const Twine &Path)
 Get file permissions.
 
std::error_code file_size (const Twine &Path, uint64_t &Result)
 Get file size.
 
std::error_code setLastAccessAndModificationTime (int FD, TimePoint<> AccessTime, TimePoint<> ModificationTime)
 Set the file modification and access time.
 
std::error_code setLastAccessAndModificationTime (int FD, TimePoint<> Time)
 Simpler version that sets both file modification and access time to the same time.
 
bool status_known (const basic_file_status &s)
 Is status available?
 
std::error_code status_known (const Twine &path, bool &result)
 Is status available?
 
void createUniquePath (const Twine &Model, SmallVectorImpl< char > &ResultPath, bool MakeAbsolute)
 Create a potentially unique file name but does not create it.
 
std::error_code createUniqueFile (const Twine &Model, int &ResultFD, SmallVectorImpl< char > &ResultPath, OpenFlags Flags=OF_None, unsigned Mode=all_read|all_write)
 Create a uniquely named file.
 
std::error_code createUniqueFile (const Twine &Model, SmallVectorImpl< char > &ResultPath, unsigned Mode=all_read|all_write)
 Simpler version for clients that don't want an open file.
 
std::error_code createTemporaryFile (const Twine &Prefix, StringRef Suffix, int &ResultFD, SmallVectorImpl< char > &ResultPath, OpenFlags Flags=OF_None)
 Create a file in the system temporary directory.
 
std::error_code createTemporaryFile (const Twine &Prefix, StringRef Suffix, SmallVectorImpl< char > &ResultPath, OpenFlags Flags=OF_None)
 Simpler version for clients that don't want an open file.
 
std::error_code createUniqueDirectory (const Twine &Prefix, SmallVectorImpl< char > &ResultPath)
 
std::error_code getPotentiallyUniqueFileName (const Twine &Model, SmallVectorImpl< char > &ResultPath)
 Get a unique name, not currently exisiting in the filesystem.
 
std::error_code getPotentiallyUniqueTempFileName (const Twine &Prefix, StringRef Suffix, SmallVectorImpl< char > &ResultPath)
 Get a unique temporary file name, not currently exisiting in the filesystem.
 
OpenFlags operator| (OpenFlags A, OpenFlags B)
 
OpenFlagsoperator|= (OpenFlags &A, OpenFlags B)
 
FileAccess operator| (FileAccess A, FileAccess B)
 
FileAccessoperator|= (FileAccess &A, FileAccess B)
 
std::error_code openFile (const Twine &Name, int &ResultFD, CreationDisposition Disp, FileAccess Access, OpenFlags Flags, unsigned Mode=0666)
 Opens a file with the specified creation disposition, access mode, and flags and returns a file descriptor.
 
Expected< file_topenNativeFile (const Twine &Name, CreationDisposition Disp, FileAccess Access, OpenFlags Flags, unsigned Mode=0666)
 Opens a file with the specified creation disposition, access mode, and flags and returns a platform-specific file object.
 
file_t convertFDToNativeFile (int FD)
 Converts from a Posix file descriptor number to a native file handle.
 
file_t getStdinHandle ()
 Return an open handle to standard in.
 
file_t getStdoutHandle ()
 Return an open handle to standard out.
 
file_t getStderrHandle ()
 Return an open handle to standard error.
 
Expected< size_t > readNativeFile (file_t FileHandle, MutableArrayRef< char > Buf)
 Reads Buf.size() bytes from FileHandle into Buf.
 
Error readNativeFileToEOF (file_t FileHandle, SmallVectorImpl< char > &Buffer, ssize_t ChunkSize=DefaultReadChunkSize)
 Reads from FileHandle until EOF, appending to Buffer in chunks of size ChunkSize.
 
Expected< size_t > readNativeFileSlice (file_t FileHandle, MutableArrayRef< char > Buf, uint64_t Offset)
 Reads Buf.size() bytes from FileHandle at offset Offset into Buf.
 
std::error_code openFileForWrite (const Twine &Name, int &ResultFD, CreationDisposition Disp=CD_CreateAlways, OpenFlags Flags=OF_None, unsigned Mode=0666)
 Opens the file with the given name in a write-only or read-write mode, returning its open file descriptor.
 
Expected< file_topenNativeFileForWrite (const Twine &Name, CreationDisposition Disp, OpenFlags Flags, unsigned Mode=0666)
 Opens the file with the given name in a write-only or read-write mode, returning its open file descriptor.
 
std::error_code openFileForReadWrite (const Twine &Name, int &ResultFD, CreationDisposition Disp, OpenFlags Flags, unsigned Mode=0666)
 Opens the file with the given name in a write-only or read-write mode, returning its open file descriptor.
 
Expected< file_topenNativeFileForReadWrite (const Twine &Name, CreationDisposition Disp, OpenFlags Flags, unsigned Mode=0666)
 Opens the file with the given name in a write-only or read-write mode, returning its open file descriptor.
 
std::error_code openFileForRead (const Twine &Name, int &ResultFD, OpenFlags Flags=OF_None, SmallVectorImpl< char > *RealPath=nullptr)
 Opens the file with the given name in a read-only mode, returning its open file descriptor.
 
Expected< file_topenNativeFileForRead (const Twine &Name, OpenFlags Flags=OF_None, SmallVectorImpl< char > *RealPath=nullptr)
 Opens the file with the given name in a read-only mode, returning its open file descriptor.
 
std::error_code tryLockFile (int FD, std::chrono::milliseconds Timeout=std::chrono::milliseconds(0))
 Try to locks the file during the specified time.
 
std::error_code lockFile (int FD)
 Lock the file.
 
std::error_code unlockFile (int FD)
 Unlock the file.
 
std::error_code closeFile (file_t &F)
 Close the file object.
 
std::error_code changeFileOwnership (int FD, uint32_t Owner, uint32_t Group)
 Change ownership of a file.
 
std::error_code getUniqueID (const Twine Path, UniqueID &Result)
 
ErrorOr< space_infodisk_space (const Twine &Path)
 Get disk space usage information.
 
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.
 

Typedef Documentation

◆ file_t

typedef int llvm::sys::fs::file_t

Definition at line 60 of file FileSystem.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum : size_t

Default chunk size for readNativeFileToEOF().

Enumerator
DefaultReadChunkSize 

Definition at line 1016 of file FileSystem.h.

◆ AccessMode

enum class llvm::sys::fs::AccessMode
strong
Enumerator
Exist 
Write 
Execute 

Definition at line 448 of file FileSystem.h.

◆ CreationDisposition

Enumerator
CD_CreateAlways 

CD_CreateAlways - When opening a file:

  • If it already exists, truncate it.
  • If it does not already exist, create a new file.
CD_CreateNew 

CD_CreateNew - When opening a file:

  • If it already exists, fail.
  • If it does not already exist, create a new file.
CD_OpenExisting 

CD_OpenExisting - When opening a file:

  • If it already exists, open the file with the offset set to 0.
  • If it does not already exist, fail.
CD_OpenAlways 

CD_OpenAlways - When opening a file:

  • If it already exists, open the file with the offset set to 0.
  • If it does not already exist, create a new file.

Definition at line 727 of file FileSystem.h.

◆ file_type

enum class llvm::sys::fs::file_type
strong

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 66 of file FileSystem.h.

◆ FileAccess

Enumerator
FA_Read 
FA_Write 

Definition at line 749 of file FileSystem.h.

◆ OpenFlags

Enumerator
OF_None 
OF_Text 

The file should be opened in text mode on platforms like z/OS that make this distinction.

OF_CRLF 

The file should use a carriage linefeed '\r
'.

This flag should only be used with OF_Text. Only makes a difference on Windows.

OF_TextWithCRLF 

The file should be opened in text mode and use a carriage linefeed '\r
'.

This flag has the same functionality as OF_Text on z/OS but adds a carriage linefeed on Windows.

OF_Append 

The file should be opened in append mode.

OF_Delete 

The returned handle can be used for deleting the file.

Only makes a difference on windows.

OF_ChildInherit 

When a child process is launched, this file should remain open in the child process.

OF_UpdateAtime 

Force files Atime to be updated on access.

Only makes a difference on Windows.

Definition at line 754 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 86 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(), 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 llvm::object::writeUniversalBinary().

◆ 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 475 of file FileSystem.h.

References access(), and Write.

◆ changeFileOwnership()

std::error_code llvm::sys::fs::changeFileOwnership ( int  FD,
uint32_t  Owner,
uint32_t  Group 
)

Change ownership of a file.

Parameters
OwnerThe owner of the file to change to.
GroupThe group of the file to change to.
Returns
errc::success if successfully updated file ownership, otherwise an error code is returned.

Referenced by llvm::FilePermissionsApplier::apply().

◆ closeFile()

std::error_code llvm::sys::fs::closeFile ( file_t F)

Close the file object.

This should be used instead of ::close for portability. On error, the caller should assume the file is closed, as is the case for Process::SafelyCloseFileDescriptor

Parameters
FOn input, this is the file to close. On output, the file is set to kInvalidFile.
Returns
An error code if closing the file failed. Typically, an error here means that the filesystem may have failed to perform some buffered writes.

Referenced by llvm::NewArchiveMember::getFile(), llvm::MemoryBuffer::getFileAsStream(), getFileAux(), llvm::xray::loadProfile(), llvm::xray::loadTraceFile(), loadYAML(), llvm::localCache(), llvm::streamFile(), and llvm::InteractiveModelRunner::~InteractiveModelRunner().

◆ convertFDToNativeFile()

file_t llvm::sys::fs::convertFDToNativeFile ( int  FD)
inline

Converts from a Posix file descriptor number to a native file handle.

On Windows, this retreives the underlying handle. On non-Windows, this is a no-op.

Definition at line 991 of file FileSystem.h.

Referenced by llvm::LTOModule::createFromOpenFileSlice(), createOnDiskBuffer(), llvm::localCache(), and llvm::InteractiveModelRunner::~InteractiveModelRunner().

◆ copy_file() [1/2]

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 1017 of file Path.cpp.

References CD_CreateAlways, copy_file_internal(), From, OF_None, openFileForRead(), and openFileForWrite().

Referenced by llvm::FileCollector::copyFiles(), llvm::sys::fs::TempFile::keep(), and llvm::ThinLTOCodeGenerator::writeGeneratedObject().

◆ copy_file() [2/2]

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

Copy the contents of From to To.

Parameters
FromThe path to copy from.
ToFDThe open file descriptor of the destination file.

Definition at line 1036 of file Path.cpp.

References copy_file_internal(), From, OF_None, and openFileForRead().

◆ copy_file_internal()

static std::error_code llvm::sys::fs::copy_file_internal ( int  ReadFD,
int  WriteFD 
)
static

Definition at line 992 of file Path.cpp.

References llvm::errnoAsErrorCode(), llvm::support::endian::read(), and llvm::write().

Referenced by copy_file().

◆ 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 968 of file Path.cpp.

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

Referenced by codegen(), llvm::FileCollector::copyFiles(), create_directories(), llvm::logicalview::LVSplitContext::createSplitFolder(), llvm::lto::getThinLTOOutputFile(), llvm::localCache(), prepareDumpIRFileDescriptor(), 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::unittest::TempDir::TempDir().

◆ 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::ThinLTOCodeGenerator::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::LockFileManager::LockFileManager(), and llvm::unittest::TempLink::TempLink().

◆ createTemporaryFile() [1/4]

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

Definition at line 843 of file Path.cpp.

References all_read, all_write, assert(), createUniqueEntity(), llvm::StringRef::npos, and P.

◆ createTemporaryFile() [2/4]

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

Definition at line 856 of file Path.cpp.

References createTemporaryFile(), and llvm::StringRef::empty().

◆ createTemporaryFile() [3/4]

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

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 864 of file Path.cpp.

References createTemporaryFile(), and FS_File.

Referenced by llvm::createGraphFilename(), createTemporaryFile(), getPotentiallyUniqueTempFileName(), llvm::prepareTempFiles(), printSymbolizedStackTrace(), and llvm::unittest::TempFile::TempFile().

◆ createTemporaryFile() [4/4]

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

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

An empty file will still be created.

Definition at line 872 of file Path.cpp.

References createTemporaryFile().

◆ createUniqueDirectory()

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

Definition at line 886 of file Path.cpp.

References createUniqueEntity(), and FS_Dir.

Referenced by llvm::unittest::TempDir::TempDir().

◆ createUniqueFile() [1/2]

std::error_code llvm::sys::fs::createUniqueFile ( const Twine Model,
int &  ResultFD,
SmallVectorImpl< char > &  ResultPath,
OpenFlags  Flags = OF_None,
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.
FlagsSet to the opened file's flags.
ModeSet to the opened file's permissions.
Returns
errc::success if Result{FD,Path} have been successfully set, otherwise a platform-specific error_code.

Definition at line 823 of file Path.cpp.

References createUniqueEntity(), and FS_File.

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

◆ createUniqueFile() [2/2]

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

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

An empty file will still be created.

Definition at line 830 of file Path.cpp.

References createUniqueFile(), and OF_None.

◆ createUniquePath()

void llvm::sys::fs::createUniquePath ( const Twine Model,
SmallVectorImpl< char > &  ResultPath,
bool  MakeAbsolute 
)

Create a potentially unique file name but does not create it.

Generates a unique path suitable for a temporary file but does not open or create the file. The name is based on Model with '' replaced by a random char in [0-9a-f]. If MakeAbsolute is true then the system's temp directory is prepended first. If MakeAbsolute is false the current directory will be used instead.

This function does not check if the file exists. If you want to be sure that the file does not yet exist, you should use enough '' characters in your model to ensure this. Each '' gives 4-bits of entropy so you can use 32 of them to get 128 bits of entropy.

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

Parameters
ModelName to base unique path off of.
ResultPathSet to the file's path.
MakeAbsoluteWhether to use the system temp directory.

Definition at line 797 of file Path.cpp.

References llvm::sys::path::append(), llvm::sys::Process::GetRandomNumber(), llvm::sys::path::is_absolute(), llvm::SmallVectorTemplateBase< T, bool >::pop_back(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorBase< Size_T >::size(), llvm::SmallVectorImpl< T >::swap(), and llvm::sys::path::system_temp_directory().

Referenced by createUniqueEntity(), and llvm::DotCfgChangeReporter::handleFunctionCompare().

◆ 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 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 llvm::pruneCache().

◆ equivalent() [1/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 504 of file FileSystem.h.

References A, B, and equivalent().

◆ 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 ( 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 equivalent(), llvm::sys::Process::FindInEnvPath(), and llvm::MachO::shouldSkipSymLink().

◆ exists() [1/2]

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

◆ 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 461 of file FileSystem.h.

References access(), and Exist.

◆ expand_tilde()

void llvm::sys::fs::expand_tilde ( const Twine path,
SmallVectorImpl< char > &  output 
)

Expands ~ expressions to the user's home directory.

On Unix ~user directories are resolved as well.

Parameters
pathThe path to resolve.

Referenced by llvm::DotCfgChangeReporter::registerCallbacks().

◆ 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 689 of file FileSystem.h.

References status().

Referenced by llvm::xray::loadInstrumentationMap(), llvm::xray::loadProfile(), 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 1086 of file Path.cpp.

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

◆ 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 printMarkupStackTrace(), and 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 1152 of file Path.cpp.

References status().

Referenced by llvm::FileCollector::copyFiles().

◆ getPotentiallyUniqueFileName()

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

Get a unique name, not currently exisiting in the filesystem.

Subject to race conditions, prefer to use createUniqueFile instead.

Similar to createUniqueFile, but instead of creating a file only checks if it exists. This function is subject to race conditions, if you want to use the returned name to actually create a file, use createUniqueFile instead.

Definition at line 894 of file Path.cpp.

References createUniqueEntity(), and FS_Name.

◆ getPotentiallyUniqueTempFileName()

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

Get a unique temporary file name, not currently exisiting in the filesystem.

Subject to race conditions, prefer to use createTemporaryFile instead.

Similar to createTemporaryFile, but instead of creating a file only checks if it exists. This function is subject to race conditions, if you want to use the returned name to actually create a file, use createTemporaryFile instead.

Definition at line 901 of file Path.cpp.

References createTemporaryFile(), and FS_Name.

◆ getStderrHandle()

file_t llvm::sys::fs::getStderrHandle ( )

Return an open handle to standard error.

On Unix, this is typically FD 2. Returns kInvalidFile when the stream is closed.

◆ getStdinHandle()

file_t llvm::sys::fs::getStdinHandle ( )

Return an open handle to standard in.

On Unix, this is typically FD 0. Returns kInvalidFile when the stream is closed.

Referenced by llvm::MemoryBuffer::getSTDIN().

◆ getStdoutHandle()

file_t llvm::sys::fs::getStdoutHandle ( )

Return an open handle to standard out.

On Unix, this is typically FD 1. Returns kInvalidFile when the stream is closed.

◆ getUmask()

unsigned llvm::sys::fs::getUmask ( )

Get file creation mode mask of the process.

Returns
Mask reported by umask(2)
Note
There is no umask on Windows. This function returns 0 always on Windows. This function does not return an error_code because umask(2) never fails. It is not thread safe.

Referenced by llvm::FilePermissionsApplier::apply().

◆ getUniqueID()

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

Definition at line 788 of file Path.cpp.

References status().

Referenced by llvm::OpenMPIRBuilder::getTargetEntryUniqueInfo().

◆ 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 1093 of file Path.cpp.

References directory_file, and status().

Referenced by llvm::FileCollectorBase::addDirectory(), llvm::object::MachOObjectFile::findDsymObjectMembers(), is_directory(), is_other(), llvm::pruneCache(), and llvm::ThinLTOCodeGenerator::run().

◆ is_directory() [2/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 560 of file FileSystem.h.

References is_directory().

◆ is_directory() [3/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 1097 of file Path.cpp.

References is_directory(), and status().

◆ is_local() [1/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 523 of file FileSystem.h.

References is_local().

◆ is_local() [2/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 is_local().

◆ is_local() [3/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 530 of file FileSystem.h.

References is_local().

◆ is_local() [4/4]

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

Version of is_local accepting an open file descriptor.

◆ 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 1129 of file Path.cpp.

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

Referenced by is_other().

◆ 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 1135 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 1105 of file Path.cpp.

References regular_file, and status().

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

◆ is_regular_file() [2/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 582 of file FileSystem.h.

References is_regular_file().

◆ is_regular_file() [3/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 1109 of file Path.cpp.

References is_regular_file(), and status().

◆ 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 1117 of file Path.cpp.

References status(), and symlink_file.

Referenced by is_symlink_file().

◆ is_symlink_file() [2/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 606 of file FileSystem.h.

References is_symlink_file().

◆ is_symlink_file() [3/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 1121 of file Path.cpp.

References is_symlink_file(), and status().

◆ lockFile()

std::error_code llvm::sys::fs::lockFile ( int  FD)

Lock the file.

This function acts as tryLockFile but it waits infinitely.

Referenced by llvm::raw_fd_ostream::lock().

◆ make_absolute() [1/2]

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

◆ make_absolute() [2/2]

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 956 of file Path.cpp.

References current_path(), llvm::sys::path::is_absolute(), and make_absolute().

◆ md5_contents() [1/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 1068 of file Path.cpp.

References md5_contents(), OF_None, and openFileForRead().

◆ md5_contents() [2/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 1048 of file Path.cpp.

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

Referenced by md5_contents().

◆ openFile()

std::error_code llvm::sys::fs::openFile ( const Twine Name,
int &  ResultFD,
CreationDisposition  Disp,
FileAccess  Access,
OpenFlags  Flags,
unsigned  Mode = 0666 
)

Opens a file with the specified creation disposition, access mode, and flags and returns a file descriptor.

The caller is responsible for closing the file descriptor once they are finished with it.

Parameters
NameThe path of the file to open, relative or absolute.
ResultFDIf the file could be opened successfully, its descriptor is stored in this location. Otherwise, this is set to -1.
DispValue specifying the existing-file behavior.
AccessValue specifying whether to open the file in read, write, or read-write mode.
FlagsAdditional flags.
ModeThe access permissions of the file, represented in octal.
Returns
errc::success if Name has been opened, otherwise a platform-specific error_code.

Referenced by openFileForReadWrite(), openFileForWrite(), and prepareDumpIRFileDescriptor().

◆ openFileForRead()

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

Opens the file with the given name in a read-only mode, returning its open file descriptor.

The caller is responsible for closing the file descriptor once they are finished with it.

Parameters
NameThe path of the file to open, relative or absolute.
ResultFDIf the file could be opened successfully, its descriptor is stored in this location. Otherwise, this is set to -1.
RealPathIf nonnull, extra work is done to determine the real path of the opened file, and that path is stored in this location.
Returns
errc::success if Name has been opened, otherwise a platform-specific error_code.

Referenced by copy_file(), and md5_contents().

◆ openFileForReadWrite()

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

Opens the file with the given name in a write-only or read-write mode, returning its open file descriptor.

If the file does not exist, it is created.

The caller is responsible for closing the file descriptor once they are finished with it.

Parameters
NameThe path of the file to open, relative or absolute.
ResultFDIf the file could be opened successfully, its descriptor is stored in this location. Otherwise, this is set to -1.
FlagsAdditional flags used to determine whether the file should be opened in, for example, read-write or in write-only mode.
ModeThe access permissions of the file, represented in octal.
Returns
errc::success if Name has been opened, otherwise a platform-specific error_code.

Definition at line 1104 of file FileSystem.h.

References FA_Read, FA_Write, Mode, Name, and openFile().

Referenced by createUniqueEntity(), and getFD().

◆ openFileForWrite()

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

Opens the file with the given name in a write-only or read-write mode, returning its open file descriptor.

If the file does not exist, it is created.

The caller is responsible for closing the file descriptor once they are finished with it.

Parameters
NameThe path of the file to open, relative or absolute.
ResultFDIf the file could be opened successfully, its descriptor is stored in this location. Otherwise, this is set to -1.
FlagsAdditional flags used to determine whether the file should be opened in, for example, read-write or in write-only mode.
ModeThe access permissions of the file, represented in octal.
Returns
errc::success if Name has been opened, otherwise a platform-specific error_code.

Definition at line 1063 of file FileSystem.h.

References FA_Write, Mode, Name, and openFile().

Referenced by llvm::FilePermissionsApplier::apply(), copy_file(), copyAccessAndModificationTime(), getFD(), llvm::prepareTempFiles(), llvm::unittest::TempFile::TempFile(), and llvm::WriteGraph().

◆ openNativeFile()

Expected< file_t > llvm::sys::fs::openNativeFile ( const Twine Name,
CreationDisposition  Disp,
FileAccess  Access,
OpenFlags  Flags,
unsigned  Mode = 0666 
)

Opens a file with the specified creation disposition, access mode, and flags and returns a platform-specific file object.

The caller is responsible for closing the file object once they are finished with it.

Parameters
NameThe path of the file to open, relative or absolute.
DispValue specifying the existing-file behavior.
AccessValue specifying whether to open the file in read, write, or read-write mode.
FlagsAdditional flags.
ModeThe access permissions of the file, represented in octal.
Returns
errc::success if Name has been opened, otherwise a platform-specific error_code.

Referenced by openNativeFileForReadWrite(), and openNativeFileForWrite().

◆ openNativeFileForRead()

Expected< file_t > llvm::sys::fs::openNativeFileForRead ( const Twine Name,
OpenFlags  Flags = OF_None,
SmallVectorImpl< char > *  RealPath = nullptr 
)

Opens the file with the given name in a read-only mode, returning its open file descriptor.

The caller is responsible for closing the freeing the file once they are finished with it.

Parameters
NameThe path of the file to open, relative or absolute.
RealPathIf nonnull, extra work is done to determine the real path of the opened file, and that path is stored in this location.
Returns
a platform-specific file descriptor if Name has been opened, otherwise an error object.

Referenced by llvm::NewArchiveMember::getFile(), llvm::MemoryBuffer::getFileAsStream(), getFileAux(), llvm::xray::loadInstrumentationMap(), llvm::xray::loadProfile(), llvm::xray::loadTraceFile(), llvm::localCache(), and llvm::streamFile().

◆ openNativeFileForReadWrite()

Expected< file_t > llvm::sys::fs::openNativeFileForReadWrite ( const Twine Name,
CreationDisposition  Disp,
OpenFlags  Flags,
unsigned  Mode = 0666 
)
inline

Opens the file with the given name in a write-only or read-write mode, returning its open file descriptor.

If the file does not exist, it is created.

The caller is responsible for closing the freeing the file once they are finished with it.

Parameters
NameThe path of the file to open, relative or absolute.
FlagsAdditional flags used to determine whether the file should be opened in, for example, read-write or in write-only mode.
ModeThe access permissions of the file, represented in octal.
Returns
a platform-specific file descriptor if Name has been opened, otherwise an error object.

Definition at line 1124 of file FileSystem.h.

References FA_Read, FA_Write, Mode, Name, and openNativeFile().

Referenced by getReadWriteFile().

◆ openNativeFileForWrite()

Expected< file_t > llvm::sys::fs::openNativeFileForWrite ( const Twine Name,
CreationDisposition  Disp,
OpenFlags  Flags,
unsigned  Mode = 0666 
)
inline

Opens the file with the given name in a write-only or read-write mode, returning its open file descriptor.

If the file does not exist, it is created.

The caller is responsible for closing the freeing the file once they are finished with it.

Parameters
NameThe path of the file to open, relative or absolute.
FlagsAdditional flags used to determine whether the file should be opened in, for example, read-write or in write-only mode.
ModeThe access permissions of the file, represented in octal.
Returns
a platform-specific file descriptor if Name has been opened, otherwise an error object.

Definition at line 1082 of file FileSystem.h.

References FA_Write, Mode, Name, and openNativeFile().

◆ operator&()

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

Definition at line 116 of file FileSystem.h.

◆ operator&=()

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

Definition at line 124 of file FileSystem.h.

◆ operator|() [1/3]

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

Definition at line 938 of file FileSystem.h.

References A, and B.

◆ operator|() [2/3]

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

Definition at line 929 of file FileSystem.h.

References A, and B.

◆ operator|() [3/3]

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

Definition at line 112 of file FileSystem.h.

◆ operator|=() [1/3]

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

Definition at line 942 of file FileSystem.h.

References A, and B.

◆ operator|=() [2/3]

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

Definition at line 933 of file FileSystem.h.

References A, and B.

◆ operator|=() [3/3]

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

Definition at line 120 of file FileSystem.h.

◆ operator~()

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

Definition at line 128 of file FileSystem.h.

◆ readNativeFile()

Expected< size_t > llvm::sys::fs::readNativeFile ( file_t  FileHandle,
MutableArrayRef< char Buf 
)

Reads Buf.size() bytes from FileHandle into Buf.

Returns the number of bytes actually read. On Unix, this is equivalent to return ::read(FD, Buf.data(), Buf.size()), with error reporting. Returns 0 when reaching EOF.

Parameters
FileHandleFile to read from.
BufBuffer to read into.
Returns
The number of bytes read, or error.

Referenced by readNativeFileToEOF().

◆ readNativeFileSlice()

Expected< size_t > llvm::sys::fs::readNativeFileSlice ( file_t  FileHandle,
MutableArrayRef< char Buf,
uint64_t  Offset 
)

Reads Buf.size() bytes from FileHandle at offset Offset into Buf.

If 'pread' is available, this will use that, otherwise it will use 'lseek'. Returns the number of bytes actually read. Returns 0 when reaching EOF.

Parameters
FileHandleFile to read from.
BufBuffer to read into.
OffsetOffset into the file at which the read should occur.
Returns
The number of bytes read, or error.

Referenced by getOpenFileImpl().

◆ readNativeFileToEOF()

Error llvm::sys::fs::readNativeFileToEOF ( file_t  FileHandle,
SmallVectorImpl< char > &  Buffer,
ssize_t  ChunkSize = DefaultReadChunkSize 
)

Reads from FileHandle until EOF, appending to Buffer in chunks of size ChunkSize.

This calls readNativeFile() in a loop. On Error, previous chunks that were read successfully are left in Buffer and returned.

Note: For reading the final chunk at EOF, Buffer's capacity needs extra storage of ChunkSize.

Parameters
FileHandleFile to read from.
BufferWhere to put the file content.
ChunkSizeSize of chunks.
Returns
The error if EOF was not found.

Definition at line 1175 of file Path.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::make_scope_exit(), readNativeFile(), llvm::SmallVectorImpl< T >::resize_for_overwrite(), llvm::SmallVectorBase< Size_T >::size(), Size, llvm::Error::success(), llvm::Expected< T >::takeError(), and llvm::SmallVectorImpl< T >::truncate().

Referenced by getMemoryBufferForStream().

◆ 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::dwarf_linker::parallel::CompileUnit::getFileName(), isCaseSensitivePath(), llvm::dwarf_linker::classic::CachedPathResolver::resolve(), and llvm::unittest::TempDir::TempDir().

◆ 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::unittest::TempDir::~TempDir().

◆ 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::TempFile::keep().

◆ 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 resize_file_before_mapping_readwrite().

◆ resize_file_before_mapping_readwrite()

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

Resize FD to Size before mapping mapped_file_region::readwrite.

On non-Windows, this calls resize_file(). On Windows, this is a no-op, since the subsequent mapping (via CreateFileMapping) automatically extends the file.

Definition at line 416 of file FileSystem.h.

References resize_file(), and Size.

Referenced by createOnDiskBuffer().

◆ 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.

◆ setLastAccessAndModificationTime() [1/2]

std::error_code llvm::sys::fs::setLastAccessAndModificationTime ( int  FD,
TimePoint<>  AccessTime,
TimePoint<>  ModificationTime 
)

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 llvm::FilePermissionsApplier::apply(), copyAccessAndModificationTime(), and setLastAccessAndModificationTime().

◆ setLastAccessAndModificationTime() [2/2]

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

Simpler version that sets both file modification and access time to the same time.

Definition at line 708 of file FileSystem.h.

References setLastAccessAndModificationTime().

◆ setPermissions() [1/2]

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 llvm::FilePermissionsApplier::apply(), and llvm::FileCollector::copyFiles().

◆ setPermissions() [2/2]

std::error_code llvm::sys::fs::setPermissions ( int  FD,
perms  Permissions 
)

Vesion of setPermissions accepting a file descriptor.

TODO Delete the path based overload once we implement the FD based overload on Windows.

◆ 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 1082 of file Path.cpp.

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

Referenced by exists().

◆ 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.

◆ tryLockFile()

std::error_code llvm::sys::fs::tryLockFile ( int  FD,
std::chrono::milliseconds  Timeout = std::chrono::milliseconds(0) 
)

Try to locks the file during the specified time.

This function implements advisory locking on entire file. If it returns errc::success, the file is locked by the calling process. Until the process unlocks the file by calling unlockFile, all attempts to lock the same file will fail/block. The process that locked the file may assume that none of other processes read or write this file, provided that all processes lock the file prior to accessing its content.

Parameters
FDThe descriptor representing the file to lock.
TimeoutTime in milliseconds that the process should wait before reporting lock failure. Zero value means try to get lock only once.
Returns
errc::success if lock is successfully obtained, errc::no_lock_available if the file cannot be locked, or platform-specific error_code otherwise.
Note
Care should be taken when using this function in a multithreaded context, as it may not prevent other threads in the same process from obtaining a lock on the same file, even if they are using a different file descriptor.

Referenced by llvm::raw_fd_ostream::tryLockFor().

◆ unlockFile()

std::error_code llvm::sys::fs::unlockFile ( int  FD)

Unlock the file.

Parameters
FDThe descriptor representing the file to unlock.
Returns
errc::success if lock is successfully released or platform-specific error_code otherwise.

Referenced by llvm::sys::fs::FileLocker::unlock(), and llvm::sys::fs::FileLocker::~FileLocker().

Variable Documentation

◆ kInvalidFile

const file_t llvm::sys::fs::kInvalidFile
extern