From 0ff2d31766209ce1a69d4d2c5d35761ef57362aa Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Thu, 24 Aug 2006 23:45:08 +0000 Subject: For PR797: Remove exception handling from the bytecode archiver and adjust the llvm-ar tool to accommodate the new interfaces. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29866 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-ar/llvm-ar.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'tools/llvm-ar') diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp index f266e1f..55a60a3 100644 --- a/tools/llvm-ar/llvm-ar.cpp +++ b/tools/llvm-ar/llvm-ar.cpp @@ -586,7 +586,8 @@ doQuickAppend(std::string* ErrMsg) { // Append them quickly. for (std::set::iterator PI = Paths.begin(), PE = Paths.end(); PI != PE; ++PI) { - TheArchive->addFileBefore(*PI,TheArchive->end()); + if (TheArchive->addFileBefore(*PI,TheArchive->end(),ErrMsg)) + return true; } // We're done editting, reconstruct the archive. @@ -647,15 +648,17 @@ doReplaceOrInsert(std::string* ErrMsg) { sys::FileStatus si; std::string Err; if (found->getFileStatus(si, &Err)) - throw Err; + return true; if (si.isDir) { if (OnlyUpdate) { // Replace the item only if it is newer. if (si.modTime > I->getModTime()) - I->replaceWith(*found); + if (I->replaceWith(*found, ErrMsg)) + return true; } else { // Replace the item regardless of time stamp - I->replaceWith(*found); + if (I->replaceWith(*found, ErrMsg)) + return true; } } else { // We purposefully ignore directories. @@ -679,7 +682,8 @@ doReplaceOrInsert(std::string* ErrMsg) { if (!remaining.empty()) { for (std::set::iterator PI = remaining.begin(), PE = remaining.end(); PI != PE; ++PI) { - TheArchive->addFileBefore(*PI,insert_spot); + if (TheArchive->addFileBefore(*PI,insert_spot, ErrMsg)) + return true; } } -- cgit v1.1