llvm-project/llvm/unittests
James Henderson 566fdf4a2a [Support] Add support for getting file system permissions on Windows and implement sys::fs::set/getPermissions to work with them
This change adds support for functions to set and get file permissions, in a similar manner to the C++17 permissions() function in <filesystem>. The setter uses chmod on Unix systems and SetFileAttributes on Windows, setting the permissions as passed in. The getter simply uses the existing status() function.

Prior to this change, status() would always return an unknown value for the permissions on a Windows file, making it impossible to test the new function on Windows. I have therefore added support for this as well. On Linux, prior to this change, the permissions included the file type, which should actually be accessed via a different member of the file_status class.

Note that on Windows, only the *_write permission bits have any affect - if any are set, the file is writable, and if not, the file is read-only. This is in common with what MSDN describes for their behaviour of std::filesystem::permissions(), and also what boost::filesystem does.

The motivation behind this change is so that we can easily test behaviour on read-only files in LLVM unit tests, but I am sure that others may find it useful in some situations.

Reviewers: zturner, amccarth, aaron.ballman

Differential Revision: https://reviews.llvm.org/D30736

llvm-svn: 297945
2017-03-16 11:22:09 +00:00
..
ADT Fix sign compare warning in unit test by using an explicit unsigned literal suffix 2017-03-13 21:46:12 +00:00
Analysis Fix signed/unsigned comparison warnings 2017-03-11 13:02:31 +00:00
AsmParser Remove every uses of getGlobalContext() in LLVM (but the C API) 2016-04-14 21:59:01 +00:00
Bitcode Reapply "Make BitCodeAbbrev ownership explicit using shared_ptr rather than IntrusiveRefCntPtr"" 2017-01-04 22:36:33 +00:00
CodeGen Recommit: [globalisel] Change LLT constructor string into an LLT-based object that knows how to generate it. 2017-03-07 23:20:35 +00:00
DebugInfo Fix llvm-symbolizer to navigate both DW_AT_abstract_origin and DW_AT_specification in a single chain 2017-03-13 21:46:37 +00:00
ExecutionEngine [Orc][RPC] Accept both const char* and char* arguments for string serialization. 2017-02-24 20:56:43 +00:00
IR [DebugInfo] Emit address space with DW_AT_address_class attribute for pointer and reference types 2017-03-08 23:55:44 +00:00
LineEditor Remove autoconf support 2016-01-26 21:29:08 +00:00
Linker Implement intrinsic mangling for literal struct types. 2017-02-15 23:16:20 +00:00
MC Fix static initialization order fiasco in MCTests 2016-11-11 22:18:42 +00:00
MI Fix subreg value numbers in handleMoveUp 2017-03-11 00:14:52 +00:00
Object Fix unittest for buildbot with mips host (32bit big endian) from r295174 2017-02-15 16:03:22 +00:00
ObjectYAML Move ObjectYAML code to a new library. 2016-03-01 19:15:06 +00:00
Option Option parser: class for consuming a joined arg in addition to all remaining args 2016-04-15 00:23:30 +00:00
ProfileData Fix signed/unsigned comparison warning 2017-03-11 19:38:22 +00:00
Support [Support] Add support for getting file system permissions on Windows and implement sys::fs::set/getPermissions to work with them 2017-03-16 11:22:09 +00:00
Target Remove a FIXME that I forgot about. NFC. 2016-10-13 05:28:55 +00:00
Transforms Move updating functions to MemorySSAUpdater. 2017-02-22 22:19:55 +00:00
XRay [XRay][graph] Disambiguate name of type from member name 2017-02-10 06:59:25 +00:00
CMakeLists.txt [XRay] A graph Class for the llvm-xray graph 2017-02-10 06:36:08 +00:00