mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-26 07:24:25 +00:00
For new archive member we only need to store the full path.
We were storing both the path and the file name, which was redundant and easy to get confused up with. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242347 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -26,11 +26,9 @@ class NewArchiveIterator {
|
|||||||
|
|
||||||
object::Archive::child_iterator OldI;
|
object::Archive::child_iterator OldI;
|
||||||
|
|
||||||
StringRef NewFilename;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
NewArchiveIterator(object::Archive::child_iterator I, StringRef Name);
|
NewArchiveIterator(object::Archive::child_iterator I, StringRef Name);
|
||||||
NewArchiveIterator(StringRef I, StringRef Name);
|
NewArchiveIterator(StringRef FileName);
|
||||||
bool isNewMember() const;
|
bool isNewMember() const;
|
||||||
StringRef getName() const;
|
StringRef getName() const;
|
||||||
|
|
||||||
|
@ -135,8 +135,7 @@ int llvm::libDriverMain(llvm::ArrayRef<const char*> ArgsArr) {
|
|||||||
llvm::errs() << Arg->getValue() << ": no such file or directory\n";
|
llvm::errs() << Arg->getValue() << ": no such file or directory\n";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
Members.emplace_back(Saver.save(*Path),
|
Members.emplace_back(Saver.save(*Path));
|
||||||
llvm::sys::path::filename(Arg->getValue()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<StringRef, std::error_code> Result =
|
std::pair<StringRef, std::error_code> Result =
|
||||||
|
@ -38,8 +38,8 @@ NewArchiveIterator::NewArchiveIterator(object::Archive::child_iterator I,
|
|||||||
StringRef Name)
|
StringRef Name)
|
||||||
: IsNewMember(false), Name(Name), OldI(I) {}
|
: IsNewMember(false), Name(Name), OldI(I) {}
|
||||||
|
|
||||||
NewArchiveIterator::NewArchiveIterator(StringRef NewFilename, StringRef Name)
|
NewArchiveIterator::NewArchiveIterator(StringRef FileName)
|
||||||
: IsNewMember(true), Name(Name), NewFilename(NewFilename) {}
|
: IsNewMember(true), Name(FileName) {}
|
||||||
|
|
||||||
StringRef NewArchiveIterator::getName() const { return Name; }
|
StringRef NewArchiveIterator::getName() const { return Name; }
|
||||||
|
|
||||||
@ -52,14 +52,14 @@ object::Archive::child_iterator NewArchiveIterator::getOld() const {
|
|||||||
|
|
||||||
StringRef NewArchiveIterator::getNew() const {
|
StringRef NewArchiveIterator::getNew() const {
|
||||||
assert(IsNewMember);
|
assert(IsNewMember);
|
||||||
return NewFilename;
|
return Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
llvm::ErrorOr<int>
|
llvm::ErrorOr<int>
|
||||||
NewArchiveIterator::getFD(sys::fs::file_status &NewStatus) const {
|
NewArchiveIterator::getFD(sys::fs::file_status &NewStatus) const {
|
||||||
assert(IsNewMember);
|
assert(IsNewMember);
|
||||||
int NewFD;
|
int NewFD;
|
||||||
if (auto EC = sys::fs::openFileForRead(NewFilename, NewFD))
|
if (auto EC = sys::fs::openFileForRead(Name, NewFD))
|
||||||
return EC;
|
return EC;
|
||||||
assert(NewFD != -1);
|
assert(NewFD != -1);
|
||||||
|
|
||||||
|
@ -437,8 +437,8 @@ static void performReadOperation(ArchiveOperation Operation,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void addMember(std::vector<NewArchiveIterator> &Members, StringRef FileName,
|
void addMember(std::vector<NewArchiveIterator> &Members, StringRef FileName,
|
||||||
StringRef Name, int Pos = -1) {
|
int Pos = -1) {
|
||||||
NewArchiveIterator NI(FileName, Name);
|
NewArchiveIterator NI(FileName);
|
||||||
if (Pos == -1)
|
if (Pos == -1)
|
||||||
Members.push_back(NI);
|
Members.push_back(NI);
|
||||||
else
|
else
|
||||||
@ -544,7 +544,7 @@ computeNewArchiveMembers(ArchiveOperation Operation,
|
|||||||
addMember(Ret, Child, Name);
|
addMember(Ret, Child, Name);
|
||||||
break;
|
break;
|
||||||
case IA_AddNewMeber:
|
case IA_AddNewMeber:
|
||||||
addMember(Ret, *MemberI, Name);
|
addMember(Ret, *MemberI);
|
||||||
break;
|
break;
|
||||||
case IA_Delete:
|
case IA_Delete:
|
||||||
break;
|
break;
|
||||||
@ -552,7 +552,7 @@ computeNewArchiveMembers(ArchiveOperation Operation,
|
|||||||
addMember(Moved, Child, Name);
|
addMember(Moved, Child, Name);
|
||||||
break;
|
break;
|
||||||
case IA_MoveNewMember:
|
case IA_MoveNewMember:
|
||||||
addMember(Moved, *MemberI, Name);
|
addMember(Moved, *MemberI);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (MemberI != Members.end())
|
if (MemberI != Members.end())
|
||||||
@ -572,12 +572,10 @@ computeNewArchiveMembers(ArchiveOperation Operation,
|
|||||||
assert(unsigned(InsertPos) <= Ret.size());
|
assert(unsigned(InsertPos) <= Ret.size());
|
||||||
Ret.insert(Ret.begin() + InsertPos, Moved.begin(), Moved.end());
|
Ret.insert(Ret.begin() + InsertPos, Moved.begin(), Moved.end());
|
||||||
|
|
||||||
Ret.insert(Ret.begin() + InsertPos, Members.size(),
|
Ret.insert(Ret.begin() + InsertPos, Members.size(), NewArchiveIterator(""));
|
||||||
NewArchiveIterator("", ""));
|
|
||||||
int Pos = InsertPos;
|
int Pos = InsertPos;
|
||||||
for (auto &Member : Members) {
|
for (auto &Member : Members) {
|
||||||
StringRef Name = sys::path::filename(Member);
|
addMember(Ret, Member, Pos);
|
||||||
addMember(Ret, Member, Name, Pos);
|
|
||||||
++Pos;
|
++Pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -736,7 +734,7 @@ static void runMRIScript() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case MRICommand::AddMod:
|
case MRICommand::AddMod:
|
||||||
addMember(NewMembers, Rest, sys::path::filename(Rest));
|
addMember(NewMembers, Rest);
|
||||||
break;
|
break;
|
||||||
case MRICommand::Create:
|
case MRICommand::Create:
|
||||||
Create = true;
|
Create = true;
|
||||||
|
Reference in New Issue
Block a user