int FD;
failIfError(
- sys::fs::openFileForWrite(Storage.c_str(), FD, sys::fs::F_Binary, Mode),
+ sys::fs::openFileForWrite(Storage.c_str(), FD, sys::fs::F_None, Mode),
Storage.c_str());
{
// Linux cannot open directories with open(2), although
// cygwin and *bsd can.
if (NewStatus.type() == sys::fs::file_type::directory_file)
- failIfError(error_code(errc::is_a_directory, posix_category()),
- NewFilename);
+ failIfError(make_error_code(errc::is_a_directory), NewFilename);
return NewFD;
}
Members[Pos] = NI;
}
-namespace {
-class HasName {
- StringRef Name;
-
-public:
- HasName(StringRef Name) : Name(Name) {}
- bool operator()(StringRef Path) { return Name == sys::path::filename(Path); }
-};
-}
-
enum InsertAction {
IA_AddOldMember,
IA_AddNewMeber,
if (Operation == QuickAppend || Members.empty())
return IA_AddOldMember;
- std::vector<std::string>::iterator MI =
- std::find_if(Members.begin(), Members.end(), HasName(Name));
+ std::vector<std::string>::iterator MI = std::find_if(
+ Members.begin(), Members.end(),
+ [Name](StringRef Path) { return Name == sys::path::filename(Path); });
if (MI == Members.end())
return IA_AddOldMember;
// We could try to optimize this to a fstat, but it is not a common
// operation.
sys::fs::file_status Status;
- failIfError(sys::fs::status(*MI, Status));
+ failIfError(sys::fs::status(*MI, Status), *MI);
if (Status.getLastModificationTime() < I->getLastModified()) {
if (PosName.empty())
return IA_AddOldMember;
MemberBuffers.resize(NewMembers.size());
for (unsigned I = 0, N = NewMembers.size(); I < N; ++I) {
- OwningPtr<MemoryBuffer> MemberBuffer;
+ std::unique_ptr<MemoryBuffer> MemberBuffer;
NewArchiveIterator &Member = NewMembers[I];
if (Member.isNewMember()) {
object::Archive::child_iterator OldMember = Member.getOld();
failIfError(OldMember->getMemoryBuffer(MemberBuffer));
}
- MemberBuffers[I] = MemberBuffer.take();
+ MemberBuffers[I] = MemberBuffer.release();
}
if (Symtab) {
Output.keep();
Out.close();
sys::fs::rename(TemporaryOutput, ArchiveName);
- TemporaryOutput = NULL;
+ TemporaryOutput = nullptr;
}
static void createSymbolTable(object::Archive *OldArchive) {
static int performOperation(ArchiveOperation Operation) {
// Create or open the archive object.
- OwningPtr<MemoryBuffer> Buf;
+ std::unique_ptr<MemoryBuffer> Buf;
error_code EC = MemoryBuffer::getFile(ArchiveName, Buf, -1, false);
if (EC && EC != llvm::errc::no_such_file_or_directory) {
errs() << ToolName << ": error opening '" << ArchiveName
}
if (!EC) {
- object::Archive Archive(Buf.take(), EC);
+ object::Archive Archive(Buf.release(), EC);
if (EC) {
errs() << ToolName << ": error loading '" << ArchiveName
}
}
- performOperation(Operation, NULL);
+ performOperation(Operation, nullptr);
return 0;
}