1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 20:51:52 +01:00

Create files with the correct permission instead of changing it afterwards.

No intended functionality change.

llvm-svn: 185832
This commit is contained in:
Rafael Espindola 2013-07-08 16:16:51 +00:00
parent 3a0476922a
commit 80b3c47cc6

View File

@ -404,7 +404,10 @@ doExtract(std::string* ErrMsg) {
OpenFlags |= O_BINARY;
#endif
int FD = open(I->getPath().str().c_str(), OpenFlags, 0664);
// Retain the original mode.
sys::fs::perms Mode = sys::fs::perms(I->getMode());
int FD = open(I->getPath().str().c_str(), OpenFlags, Mode);
if (FD < 0)
return true;
@ -419,17 +422,11 @@ doExtract(std::string* ErrMsg) {
file.write(data, len);
}
// Retain the original mode.
sys::fs::perms Mode = sys::fs::perms(I->getMode());
// FIXME: at least on posix we should be able to reuse FD (fchmod).
error_code EC = sys::fs::permissions(I->getPath(), Mode);
if (EC)
fail(EC.message());
// If we're supposed to retain the original modification times, etc. do so
// now.
if (OriginalDates) {
EC = sys::fs::setLastModificationAndAccessTime(FD, I->getModTime());
error_code EC =
sys::fs::setLastModificationAndAccessTime(FD, I->getModTime());
if (EC)
fail(EC.message());
}