LLVM 20.0.0git
|
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) |
perms & | operator|= (perms &l, perms r) |
perms & | operator&= (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 ¤t_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::MD5Result > | md5_contents (int FD) |
Compute an MD5 hash of a file's contents. | |
ErrorOr< MD5::MD5Result > | md5_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< perms > | getPermissions (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) |
OpenFlags & | operator|= (OpenFlags &A, OpenFlags B) |
FileAccess | operator| (FileAccess A, FileAccess B) |
FileAccess & | operator|= (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_t > | 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. | |
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_t > | openNativeFileForWrite (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_t > | openNativeFileForReadWrite (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_t > | 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. | |
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_info > | disk_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 int llvm::sys::fs::file_t |
Definition at line 59 of file FileSystem.h.
anonymous enum : size_t |
Default chunk size for readNativeFileToEOF().
Enumerator | |
---|---|
DefaultReadChunkSize |
Definition at line 1015 of file FileSystem.h.
|
strong |
Enumerator | |
---|---|
Exist | |
Write | |
Execute |
Definition at line 447 of file FileSystem.h.
Definition at line 726 of file FileSystem.h.
|
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 65 of file FileSystem.h.
Enumerator | |
---|---|
FA_Read | |
FA_Write |
Definition at line 748 of file FileSystem.h.
enum llvm::sys::fs::OpenFlags : unsigned |
Definition at line 753 of file FileSystem.h.
enum llvm::sys::fs::perms |
Definition at line 85 of file FileSystem.h.
std::error_code llvm::sys::fs::access | ( | const Twine & | Path, |
AccessMode | Mode | ||
) |
Can the file be accessed?
Path | Input path. |
Referenced by can_write(), createUniqueEntity(), exists(), and llvm::LockFileManager::waitForUnlock().
Can we execute this file?
Path | Input path. |
Referenced by llvm::object::writeUniversalBinary().
Can we write this file?
Path | Input path. |
Definition at line 474 of file FileSystem.h.
Change ownership of a file.
Owner | The owner of the file to change to. |
Group | The group of the file to change to. |
Referenced by llvm::FilePermissionsApplier::apply().
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
F | On input, this is the file to close. On output, the file is set to kInvalidFile. |
Referenced by llvm::NewArchiveMember::getFile(), llvm::MemoryBuffer::getFileAsStream(), getFileAux(), llvm::xray::loadProfile(), llvm::xray::loadTraceFile(), loadYAML(), llvm::localCache(), llvm::streamFile(), and llvm::InteractiveModelRunner::~InteractiveModelRunner().
|
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 990 of file FileSystem.h.
Referenced by llvm::LTOModule::createFromOpenFileSlice(), createOnDiskBuffer(), llvm::localCache(), and llvm::InteractiveModelRunner::~InteractiveModelRunner().
Copy the contents of From to To.
From | The path to copy from. |
To | The 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 the contents of From to To.
From | The path to copy from. |
ToFD | The open file descriptor of the destination file. |
Definition at line 1036 of file Path.cpp.
References copy_file_internal(), From, OF_None, and openFileForRead().
|
static |
Definition at line 992 of file Path.cpp.
References llvm::errnoAsErrorCode(), llvm::support::endian::read(), and llvm::write().
Referenced by copy_file().
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.
path | Directories to create. |
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().
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.
path | Directory to create. |
Referenced by create_directories(), createUniqueEntity(), and llvm::unittest::TempDir::TempDir().
Create a hard link from from to to, or return an error.
to | The path to hard link to. |
from | The path to hard link from. This is created. |
Referenced by llvm::ThinLTOCodeGenerator::writeGeneratedObject().
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.
to | The path to hard link to. |
from | The path to hard link from. This is created. |
Referenced by llvm::LockFileManager::LockFileManager(), and llvm::unittest::TempLink::TempLink().
|
static |
Definition at line 843 of file Path.cpp.
References all_read, all_write, assert(), createUniqueEntity(), llvm::StringRef::npos, and P.
|
static |
Definition at line 856 of file Path.cpp.
References createTemporaryFile(), and llvm::StringRef::empty().
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().
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().
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().
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.
Model | Name to base unique path off of. |
ResultFD | Set to the opened file's file descriptor. |
ResultPath | Set to the opened file's absolute path. |
Flags | Set to the opened file's flags. |
Mode | Set to the opened file's permissions. |
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().
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.
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
Model | Name to base unique path off of. |
ResultPath | Set to the file's path. |
MakeAbsolute | Whether 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().
std::error_code llvm::sys::fs::current_path | ( | SmallVectorImpl< char > & | result | ) |
Get the current path.
result | Holds the current path on return. |
Referenced by make_absolute().
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.
Path | Input path. |
Referenced by llvm::pruneCache().
Simpler version of equivalent for clients that don't need to differentiate between an error and false.
Definition at line 503 of file FileSystem.h.
References A, B, and equivalent().
Do paths represent the same thing?
assert(status_known(A) || status_known(B));
A | Input path A. |
B | Input path B. |
result | Set to true if stat(A) and stat(B) have the same device and inode (or equivalent). |
bool llvm::sys::fs::equivalent | ( | file_status | A, |
file_status | B | ||
) |
Do file_status's represent the same thing?
A | Input file_status. |
B | Input file_status. |
assert(status_known(A) || status_known(B));
Referenced by equivalent(), llvm::sys::Process::FindInEnvPath(), and llvm::MachO::shouldSkipSymLink().
bool llvm::sys::fs::exists | ( | const basic_file_status & | status | ) |
Does file exist?
status | A basic_file_status previously returned from stat. |
Definition at line 1078 of file Path.cpp.
References file_not_found, status(), and status_known().
Referenced by llvm::ListeningSocket::createUnix(), llvm::object::BuildIDFetcher::fetch(), llvm::sys::Process::FindInEnvPath(), findInputFile(), getFilename(), is_other(), llvm::LockFileManager::LockFileManager(), llvm::pdb::InputFile::open(), llvm::orc::DumpObjects::operator()(), printMarkupStackTrace(), printSymbolizedStackTrace(), searchForObj(), llvm::LockFileManager::waitForUnlock(), and llvm::ThinLTOCodeGenerator::writeGeneratedObject().
Does file exist?
Path | Input path. |
Definition at line 460 of file FileSystem.h.
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.
path | The path to resolve. |
Referenced by llvm::DotCfgChangeReporter::registerCallbacks().
Get file size.
Path | Input path. |
Result | Set to the size of the file in Path. |
Definition at line 688 of file FileSystem.h.
References status().
Referenced by llvm::xray::loadInstrumentationMap(), llvm::xray::loadProfile(), and llvm::xray::loadTraceFile().
Does status represent a directory?
Path | The path to get the type of. |
Follow | For symbolic links, indicates whether to return the file type of the link itself, or of the target. |
Definition at line 1086 of file Path.cpp.
References status(), status_error, and llvm::sys::fs::basic_file_status::type().
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().
Get file permissions.
Path | File to get permissions from. |
Definition at line 1152 of file Path.cpp.
References status().
Referenced by llvm::FileCollector::copyFiles().
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.
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.
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.
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().
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.
unsigned llvm::sys::fs::getUmask | ( | ) |
Get file creation mode mask of the process.
Referenced by llvm::FilePermissionsApplier::apply().
Definition at line 788 of file Path.cpp.
References status().
Referenced by llvm::OpenMPIRBuilder::getTargetEntryUniqueInfo().
bool llvm::sys::fs::is_directory | ( | const basic_file_status & | status | ) |
Does status represent a directory?
status | A basic_file_status previously returned from status. |
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().
Simpler version of is_directory for clients that don't need to differentiate between an error and false.
Definition at line 559 of file FileSystem.h.
References is_directory().
Is path a directory?
path | Input path. |
result | Set to true if path is a directory (after following symlinks, false if it is not. Undefined otherwise. |
Definition at line 1097 of file Path.cpp.
References is_directory(), and status().
Simpler version of is_local for clients that don't need to differentiate between an error and false.
Definition at line 522 of file FileSystem.h.
References is_local().
Is the file mounted on a local filesystem?
path | Input path. |
result | Set to true if path is on fixed media such as a hard disk, false if it is not. |
Referenced by is_local().
|
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 529 of file FileSystem.h.
References is_local().
std::error_code llvm::sys::fs::is_local | ( | int | FD, |
bool & | result | ||
) |
Version of is_local accepting an open file descriptor.
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?
status | A basic_file_status previously returned from status. |
Definition at line 1129 of file Path.cpp.
References exists(), is_directory(), is_regular_file(), and status().
Referenced by is_other().
Is path something that exists but is not a directory, regular file, or symlink?
path | Input path. |
result | Set to true if path exists, but is not a directory, regular file, or a symlink, false if it does not. Undefined otherwise. |
Definition at line 1135 of file Path.cpp.
References is_other(), and status().
bool llvm::sys::fs::is_regular_file | ( | const basic_file_status & | status | ) |
Does status represent a regular file?
status | A basic_file_status previously returned from status. |
Definition at line 1105 of file Path.cpp.
References regular_file, and status().
Referenced by findSrcDirMap(), is_other(), and is_regular_file().
Simpler version of is_regular_file for clients that don't need to differentiate between an error and false.
Definition at line 581 of file FileSystem.h.
References is_regular_file().
Is path a regular file?
path | Input path. |
result | Set to true if path is a regular file (after following symlinks), false if it is not. Undefined otherwise. |
Definition at line 1109 of file Path.cpp.
References is_regular_file(), and status().
bool llvm::sys::fs::is_symlink_file | ( | const basic_file_status & | status | ) |
Does status represent a symlink file?
status | A basic_file_status previously returned from status. |
Definition at line 1117 of file Path.cpp.
References status(), and symlink_file.
Referenced by is_symlink_file().
Simpler version of is_symlink_file for clients that don't need to differentiate between an error and false.
Definition at line 605 of file FileSystem.h.
References is_symlink_file().
Is path a symlink file?
path | Input path. |
result | Set to true if path is a symlink file, false if it is not. Undefined otherwise. |
Definition at line 1121 of file Path.cpp.
References is_symlink_file(), and status().
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().
void 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
path | A path that is modified to be an absolute path. |
Definition at line 907 of file Path.cpp.
References llvm::sys::path::append(), llvm::StringRef::begin(), llvm::SmallVectorTemplateCommon< T, typename >::data(), llvm::StringRef::end(), llvm::sys::path::has_root_directory(), llvm::sys::path::has_root_name(), llvm_unreachable, llvm::sys::path::relative_path(), llvm::sys::path::root_directory(), llvm::sys::path::root_name(), llvm::SmallVectorBase< Size_T >::size(), llvm::SmallVectorImpl< T >::swap(), and llvm::Twine::toVector().
Referenced by llvm::canonicalizePath(), llvm::vfs::RedirectingFileSystem::create(), emitExternalFile(), llvm::AsmPrinter::emitRemarksSection(), findSrcDirMap(), llvm::LockFileManager::LockFileManager(), make_absolute(), llvm::MachO::make_relative(), makeAbsolute(), llvm::vfs::FileSystem::makeAbsolute(), and llvm::DotCfgChangeReporter::registerCallbacks().
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
path | A path that is modified to be an absolute path. |
Definition at line 956 of file Path.cpp.
References current_path(), llvm::sys::path::is_absolute(), and make_absolute().
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().
ErrorOr< MD5::MD5Result > llvm::sys::fs::md5_contents | ( | int | FD | ) |
Compute an MD5 hash of a file's contents.
FD | Input file descriptor. |
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().
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.
Name | The path of the file to open, relative or absolute. |
ResultFD | If the file could be opened successfully, its descriptor is stored in this location. Otherwise, this is set to -1. |
Disp | Value specifying the existing-file behavior. |
Access | Value specifying whether to open the file in read, write, or read-write mode. |
Flags | Additional flags. |
Mode | The access permissions of the file, represented in octal. |
Referenced by openFileForReadWrite(), openFileForWrite(), and prepareDumpIRFileDescriptor().
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.
Name | The path of the file to open, relative or absolute. |
ResultFD | If the file could be opened successfully, its descriptor is stored in this location. Otherwise, this is set to -1. |
RealPath | If nonnull, extra work is done to determine the real path of the opened file, and that path is stored in this location. |
Referenced by copy_file(), and md5_contents().
|
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.
Name | The path of the file to open, relative or absolute. |
ResultFD | If the file could be opened successfully, its descriptor is stored in this location. Otherwise, this is set to -1. |
Flags | Additional flags used to determine whether the file should be opened in, for example, read-write or in write-only mode. |
Mode | The access permissions of the file, represented in octal. |
Definition at line 1103 of file FileSystem.h.
References FA_Read, FA_Write, Mode, Name, and openFile().
Referenced by createUniqueEntity(), and getFD().
|
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.
Name | The path of the file to open, relative or absolute. |
ResultFD | If the file could be opened successfully, its descriptor is stored in this location. Otherwise, this is set to -1. |
Flags | Additional flags used to determine whether the file should be opened in, for example, read-write or in write-only mode. |
Mode | The access permissions of the file, represented in octal. |
Definition at line 1062 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().
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.
Name | The path of the file to open, relative or absolute. |
Disp | Value specifying the existing-file behavior. |
Access | Value specifying whether to open the file in read, write, or read-write mode. |
Flags | Additional flags. |
Mode | The access permissions of the file, represented in octal. |
Referenced by openNativeFileForReadWrite(), and openNativeFileForWrite().
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.
Name | The path of the file to open, relative or absolute. |
RealPath | If nonnull, extra work is done to determine the real path of the opened file, and that path is stored in this location. |
Referenced by llvm::NewArchiveMember::getFile(), llvm::MemoryBuffer::getFileAsStream(), getFileAux(), llvm::xray::loadInstrumentationMap(), llvm::xray::loadProfile(), llvm::xray::loadTraceFile(), llvm::localCache(), and llvm::streamFile().
|
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.
Name | The path of the file to open, relative or absolute. |
Flags | Additional flags used to determine whether the file should be opened in, for example, read-write or in write-only mode. |
Mode | The access permissions of the file, represented in octal. |
Definition at line 1123 of file FileSystem.h.
References FA_Read, FA_Write, Mode, Name, and openNativeFile().
Referenced by getReadWriteFile().
|
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.
Name | The path of the file to open, relative or absolute. |
Flags | Additional flags used to determine whether the file should be opened in, for example, read-write or in write-only mode. |
Mode | The access permissions of the file, represented in octal. |
Definition at line 1081 of file FileSystem.h.
References FA_Write, Mode, Name, and openNativeFile().
Definition at line 115 of file FileSystem.h.
Definition at line 123 of file FileSystem.h.
|
inline |
Definition at line 937 of file FileSystem.h.
Definition at line 928 of file FileSystem.h.
Definition at line 111 of file FileSystem.h.
|
inline |
Definition at line 941 of file FileSystem.h.
Definition at line 932 of file FileSystem.h.
Definition at line 119 of file FileSystem.h.
Definition at line 127 of file FileSystem.h.
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.
FileHandle | File to read from. |
Buf | Buffer to read into. |
Referenced by readNativeFileToEOF().
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.
FileHandle | File to read from. |
Buf | Buffer to read into. |
Offset | Offset into the file at which the read should occur. |
Referenced by getOpenFileImpl().
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
.
FileHandle | File to read from. |
Buffer | Where to put the file content. |
ChunkSize | Size of chunks. |
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().
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.
path | The path to resolve. |
output | The location to store the resolved path. |
expand_tilde | If 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 path.
Equivalent to POSIX remove().
path | Input path. |
Referenced by cleanUpTempFilesImpl(), llvm::LTOCodeGenerator::compileOptimized(), llvm::sys::fs::TempFile::discard(), ExecGraphViewer(), llvm::DotCfgChangeReporter::handleFunctionCompare(), llvm::sys::fs::TempFile::keep(), llvm::LockFileManager::LockFileManager(), llvm::pruneCache(), llvm::FileRemover::setFile(), llvm::LockFileManager::unsafeRemoveLockFile(), llvm::ThinLTOCodeGenerator::writeGeneratedObject(), llvm::CleanupInstaller::~CleanupInstaller(), llvm::FileRemover::~FileRemover(), llvm::LockFileManager::~LockFileManager(), llvm::unittest::TempFile::~TempFile(), and llvm::unittest::TempLink::~TempLink().
Recursively delete a directory.
path | Input path. |
Referenced by llvm::unittest::TempDir::~TempDir().
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.
from | The path to rename from. |
to | The path to rename to. This is created. |
Referenced by llvm::sys::fs::TempFile::keep().
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().
FD | Input file descriptor. |
Size | Size to resize to. |
Referenced by resize_file_before_mapping_readwrite().
|
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 415 of file FileSystem.h.
References resize_file(), and Size.
Referenced by createOnDiskBuffer().
Set the current path.
path | The path to set. |
std::error_code llvm::sys::fs::setLastAccessAndModificationTime | ( | int | FD, |
TimePoint<> | AccessTime, | ||
TimePoint<> | ModificationTime | ||
) |
Set the file modification and access time.
Referenced by llvm::FilePermissionsApplier::apply(), copyAccessAndModificationTime(), and setLastAccessAndModificationTime().
|
inline |
Simpler version that sets both file modification and access time to the same time.
Definition at line 707 of file FileSystem.h.
References setLastAccessAndModificationTime().
Set file permissions.
Path | File to set permissions on. |
Permissions | New file permissions. |
Referenced by llvm::FilePermissionsApplier::apply(), and llvm::FileCollector::copyFiles().
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.
std::error_code llvm::sys::fs::status | ( | const Twine & | path, |
file_status & | result, | ||
bool | follow = true |
||
) |
Get file status as if by POSIX stat().
path | Input path. |
result | Set to the file status. |
follow | When true, follows symlinks. Otherwise, the symlink itself is statted. |
Referenced by llvm::FilePermissionsApplier::apply(), llvm::FileCollector::copyFiles(), llvm::FileOutputBuffer::create(), llvm::FilePermissionsApplier::create(), exists(), file_size(), llvm::object::MachOObjectFile::findDsymObjectMembers(), get_file_type(), llvm::NewArchiveMember::getFile(), getOpenFileImpl(), getPermissions(), getReadWriteFile(), getUniqueID(), llvm::sys::fs::recursive_directory_iterator::increment(), is_directory(), is_other(), is_regular_file(), is_symlink_file(), llvm::pruneCache(), llvm::MachO::shouldSkipSymLink(), and shouldUseMmap().
std::error_code llvm::sys::fs::status | ( | int | FD, |
file_status & | Result | ||
) |
A version for when a file descriptor is already available.
bool llvm::sys::fs::status_known | ( | const basic_file_status & | s | ) |
Is status available?
s | Input file status. |
Definition at line 1082 of file Path.cpp.
References status_error, and llvm::sys::fs::basic_file_status::type().
Referenced by exists().
Is status available?
path | Input path. |
result | Set to true if status() != status_error. |
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.
FD | The descriptor representing the file to lock. |
Timeout | Time in milliseconds that the process should wait before reporting lock failure. Zero value means try to get lock only once. |
Referenced by llvm::raw_fd_ostream::tryLockFor().
std::error_code llvm::sys::fs::unlockFile | ( | int | FD | ) |
Unlock the file.
FD | The descriptor representing the file to unlock. |
Referenced by llvm::sys::fs::FileLocker::unlock(), and llvm::sys::fs::FileLocker::~FileLocker().
Referenced by llvm::NewArchiveMember::getFile().