diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Support/Unix/Path.inc | 32 | ||||
-rw-r--r-- | lib/Support/Windows/Path.inc | 34 |
2 files changed, 1 insertions, 65 deletions
diff --git a/lib/Support/Unix/Path.inc b/lib/Support/Unix/Path.inc index e23e0bd..433d187 100644 --- a/lib/Support/Unix/Path.inc +++ b/lib/Support/Unix/Path.inc @@ -569,7 +569,7 @@ error_code status(const Twine &path, file_status &result) { return ec; } - perms prms = static_cast<perms>(status.st_mode & perms_mask); + perms prms = static_cast<perms>(status.st_mode); if (S_ISDIR(status.st_mode)) result = file_status(file_type::directory_file, prms); @@ -595,36 +595,6 @@ error_code status(const Twine &path, file_status &result) { return error_code::success(); } -// Modifies permissions on a file. -error_code permissions(const Twine &path, perms prms) { - if ((prms & add_perms) && (prms & remove_perms)) - llvm_unreachable("add_perms and remove_perms are mutually exclusive"); - - // Get current permissions - // FIXME: We only need this stat for add_perms and remove_perms. - file_status info; - if (error_code ec = status(path, info)) { - return ec; - } - - // Set updated permissions. - SmallString<128> path_storage; - StringRef p = path.toNullTerminatedStringRef(path_storage); - perms permsToSet; - if (prms & add_perms) { - permsToSet = (info.permissions() | prms) & perms_mask; - } else if (prms & remove_perms) { - permsToSet = (info.permissions() & ~prms) & perms_mask; - } else { - permsToSet = prms & perms_mask; - } - if (::chmod(p.begin(), static_cast<mode_t>(permsToSet))) { - return error_code(errno, system_category()); - } - - return error_code::success(); -} - error_code setLastModificationAndAccessTime(int FD, TimeValue Time) { #if defined(HAVE_FUTIMENS) timespec Times[2]; diff --git a/lib/Support/Windows/Path.inc b/lib/Support/Windows/Path.inc index ab59fe8..7359994 100644 --- a/lib/Support/Windows/Path.inc +++ b/lib/Support/Windows/Path.inc @@ -692,40 +692,6 @@ handle_status_error: return error_code::success(); } - -// Modifies permissions on a file. -error_code permissions(const Twine &path, perms prms) { -#if 0 // verify code below before enabling: - // If the permissions bits are not trying to modify - // "write" permissions, there is nothing to do. - if (!(prms & (owner_write|group_write|others_write))) - return error_code::success(); - - SmallString<128> path_storage; - SmallVector<wchar_t, 128> path_utf16; - - if (error_code ec = UTF8ToUTF16(path.toStringRef(path_storage), - path_utf16)) - return ec; - - DWORD attributes = ::GetFileAttributesW(path_utf16.begin()); - - if (prms & add_perms) { - attributes &= ~FILE_ATTRIBUTE_READONLY; - } - else if (prms & remove_perms) { - attributes |= FILE_ATTRIBUTE_READONLY; - } - else { - assert(0 && "neither add_perms or remove_perms is set"); - } - - if ( ! ::SetFileAttributesW(path_utf16.begin(), attributes)) - return windows_error(::GetLastError()); -#endif - return error_code::success(); -} - error_code setLastModificationAndAccessTime(int FD, TimeValue Time) { ULARGE_INTEGER UI; UI.QuadPart = Time.toWin32Time(); |