添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
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 &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::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 Documentation

file_t

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

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

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

    Definition at line 475 of file FileSystem.h .

    References access() , and Write .

    Returns
    errc::success if successfully updated file ownership, otherwise an error code is returned.

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

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

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

    Definition at line 1018 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() .

    Definition at line 993 of file Path.cpp .

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

    Referenced by copy_file() .

    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 969 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() .

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

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

    References createTemporaryFile() , and FS_File .

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

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

    An empty file will still be created.

    Definition at line 873 of file Path.cpp .

    References createTemporaryFile() .

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

    References createUniqueEntity() , and FS_File .

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

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

    An empty file will still be created.

    Definition at line 831 of file Path.cpp .

    References createUniqueFile() , and OF_None .

    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 798 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() .

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

    Referenced by make_absolute() .

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

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

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

    Returns
    True if the file represented by status exists, false if it does not.

    Definition at line 1079 of file Path.cpp .

    References file_not_found , status() , and status_known() .

    Referenced by 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() .

    Expands ~ expressions to the user's home directory.

    On Unix ~user directories are resolved as well.

    Parameters
    pathThe path to resolve.
    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() .

    Returns
    A value from the file_type enumeration indicating the type of file.

    Definition at line 1087 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() .

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

    References status() .

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

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

    References createUniqueEntity() , and FS_Name .

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

    References createTemporaryFile() , and FS_Name .

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

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

    Returns
    status.type() == file_type::directory_file .

    Definition at line 1094 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 560 of file FileSystem.h .

    References is_directory() .

    Returns
    errc::success if result has been successfully set, otherwise a platform-specific error_code.

    Definition at line 1098 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 523 of file FileSystem.h .

    References is_local() .

    Returns
    errc::success if result has been successfully set, otherwise a platform specific error_code.

    Referenced by is_local() .

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

    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 1130 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?

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

    References is_other() , and status() .

    Returns
    status_known(status) && status.type() == file_type::regular_file .

    Definition at line 1106 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 582 of file FileSystem.h .

    References is_regular_file() .

    Returns
    errc::success if result has been successfully set, otherwise a platform-specific error_code.

    Definition at line 1110 of file Path.cpp .

    References is_regular_file() , and status() .

    Returns
    status_known(status) && status.type() == file_type::symlink_file .

    Definition at line 1118 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 606 of file FileSystem.h .

    References is_symlink_file() .

    Returns
    errc::success if result has been successfully set, otherwise a platform-specific error_code.

    Definition at line 1122 of file Path.cpp .

    References is_symlink_file() , and status() .

    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.

    Definition at line 908 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() , makeAbsolute() , llvm::vfs::FileSystem::makeAbsolute() , and llvm::DotCfgChangeReporter::registerCallbacks() .

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

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

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

    Definition at line 1069 of file Path.cpp .

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

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

    Definition at line 1049 of file Path.cpp .

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

    Referenced by md5_contents() .

    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. Disp Value specifying the existing-file behavior. Access Value 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() .

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

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

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

    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. Disp Value specifying the existing-file behavior. Access Value 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() .

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

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

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

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

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

    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 1176 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() .

    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.
    Returns
    errc::success if path has been removed or didn't exist, otherwise a platform-specific error code. If IgnoreNonExisting is false, also returns error if the file didn't exist.

    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::FileRemover::~FileRemover() , llvm::LockFileManager::~LockFileManager() , llvm::unittest::TempFile::~TempFile() , and llvm::unittest::TempLink::~TempLink() .

    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 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.
    Returns
    errc::success if path has been resized to size , otherwise a platform-specific error_code.

    Referenced by resize_file_before_mapping_readwrite() .

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

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

    Definition at line 708 of file FileSystem.h .

    References setLastAccessAndModificationTime() .

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

    Returns
    errc::success if result has been successfully set, otherwise a platform-specific error_code.

    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() , and shouldUseMmap() .

    Definition at line 1083 of file Path.cpp .

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

    Referenced by exists() .

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

    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