mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 19:31:58 +00:00
Don't create an archive if, for example, we are asked to print the index.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185697 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
7271ac2c03
commit
61de142984
17
test/Object/ar-create.test
Normal file
17
test/Object/ar-create.test
Normal file
@ -0,0 +1,17 @@
|
||||
Test which operations create an archive and which don't.
|
||||
|
||||
RUN: touch %t
|
||||
RUN: rm -f %t.foo.a
|
||||
RUN: not llvm-ar p %t.foo.a %t 2>&1 | FileCheck %s
|
||||
RUN: not llvm-ar d %t.foo.a %t 2>&1 | FileCheck %s
|
||||
RUN: not llvm-ar m %t.foo.a %t 2>&1 | FileCheck %s
|
||||
RUN: not llvm-ar t %t.foo.a %t 2>&1 | FileCheck %s
|
||||
RUN: not llvm-ar x %t.foo.a %t 2>&1 | FileCheck %s
|
||||
|
||||
RUN: llvm-ar q %t.foo.a %t 2>&1 | FileCheck --check-prefix=CREATE %s
|
||||
RUN: rm -f %t.foo.a
|
||||
RUN: llvm-ar r %t.foo.a %t 2>&1 | FileCheck --check-prefix=CREATE %s
|
||||
RUN: rm -f %t.foo.a
|
||||
|
||||
CHECK: .foo.a': No such file or directory
|
||||
CREATE: creating {{.*}}.foo.a
|
@ -642,6 +642,21 @@ doReplaceOrInsert(std::string* ErrMsg) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool shouldCreateArchive(ArchiveOperation Op) {
|
||||
switch (Op) {
|
||||
case Print:
|
||||
case Delete:
|
||||
case Move:
|
||||
case DisplayTable:
|
||||
case Extract:
|
||||
return false;
|
||||
|
||||
case QuickAppend:
|
||||
case ReplaceOrInsert:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// main - main program for llvm-ar .. see comments in the code
|
||||
int main(int argc, char **argv) {
|
||||
program_name = argv[0];
|
||||
@ -665,13 +680,15 @@ int main(int argc, char **argv) {
|
||||
ArchiveOperation Operation = parseCommandLine();
|
||||
|
||||
// Create or open the archive object.
|
||||
if (!llvm::sys::fs::exists(ArchiveName)) {
|
||||
if (shouldCreateArchive(Operation) && !llvm::sys::fs::exists(ArchiveName)) {
|
||||
// Produce a warning if we should and we're creating the archive
|
||||
if (!Create)
|
||||
errs() << argv[0] << ": creating " << ArchiveName << "\n";
|
||||
TheArchive = Archive::CreateEmpty(ArchiveName, Context);
|
||||
TheArchive->writeToDisk();
|
||||
} else {
|
||||
}
|
||||
|
||||
if (!TheArchive) {
|
||||
std::string Error;
|
||||
TheArchive = Archive::OpenAndLoad(ArchiveName, Context, &Error);
|
||||
if (TheArchive == 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user