Changes in directory llvm/tools/llvm-ar:
llvm-ar.cpp updated: 1.34 -> 1.35 --- Log message: For PR797: http://llvm.org/PR797 : Remove exceptions from the Path::create*OnDisk methods. Update their users to handle error messages via arguments and result codes. --- Diffs of the changes: (+12 -4) llvm-ar.cpp | 16 ++++++++++++---- 1 files changed, 12 insertions(+), 4 deletions(-) Index: llvm/tools/llvm-ar/llvm-ar.cpp diff -u llvm/tools/llvm-ar/llvm-ar.cpp:1.34 llvm/tools/llvm-ar/llvm-ar.cpp:1.35 --- llvm/tools/llvm-ar/llvm-ar.cpp:1.34 Tue Aug 1 13:09:46 2006 +++ llvm/tools/llvm-ar/llvm-ar.cpp Tue Aug 22 19:39:35 2006 @@ -425,8 +425,8 @@ } // doExtract - Implement the 'x' operation. This function extracts files back to -// the file system, making sure to uncompress any that were compressed. -void doExtract() { +// the file system, making sure to uncompress any that were compressed +bool doExtract(std::string* ErrMsg) { buildPaths(false); unsigned countDown = Count; for (Archive::iterator I = TheArchive->begin(), E = TheArchive->end(); @@ -438,7 +438,8 @@ if (I->hasPath()) { sys::Path dirs(I->getPath()); dirs.eraseComponent(); - dirs.createDirectoryOnDisk(/*create_parents=*/true); + if (dirs.createDirectoryOnDisk(/*create_parents=*/true, ErrMsg)) + return true; } // Open up a file stream for writing @@ -464,6 +465,7 @@ I->getPath().setStatusInfoOnDisk(I->getFileStatus()); } } + return false; } // doDelete - Implement the delete operation. This function deletes zero or more @@ -711,6 +713,7 @@ std::auto_ptr<Archive> AutoArchive(TheArchive); // Perform the operation + std::string ErrMsg; switch (Operation) { case Print: doPrint(); break; case Delete: doDelete(); break; @@ -718,7 +721,12 @@ case QuickAppend: /* FALL THROUGH */ case ReplaceOrInsert: doReplaceOrInsert(); break; case DisplayTable: doDisplayTable(); break; - case Extract: doExtract(); break; + case Extract: + if (doExtract(&ErrMsg)) { + std::cerr << argv[0] << ": " << ErrMsg << "\n"; + return 1; + } + break; case NoOperation: std::cerr << argv[0] << ": No operation was selected.\n"; break; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits