From 061658db2e0523f7326ad8bb9e2073bf011388e4 Mon Sep 17 00:00:00 2001 From: David Barksdale Date: Mon, 13 May 2013 22:44:38 -0500 Subject: llvm-ar doesn't make directories For some reason the hasPath() test is failing on an archive created the libtool where each file starts with ".libs/". Seems safe enough to just always try to create directories. Not tested on any other archives. --- tools/llvm-ar/llvm-ar.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'tools/llvm-ar/llvm-ar.cpp') diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp index 86eb8e272f..477422c7c1 100644 --- a/tools/llvm-ar/llvm-ar.cpp +++ b/tools/llvm-ar/llvm-ar.cpp @@ -461,17 +461,15 @@ doExtract(std::string* ErrMsg) { (std::find(Paths.begin(), Paths.end(), I->getPath()) != Paths.end())) { // Make sure the intervening directories are created - if (I->hasPath()) { - sys::Path dirs(I->getPath()); - dirs.eraseComponent(); - if (dirs.createDirectoryOnDisk(/*create_parents=*/true, ErrMsg)) - return true; - } + sys::Path dirs(I->getPath()); + dirs.eraseComponent(); + if (dirs.createDirectoryOnDisk(/*create_parents=*/true, ErrMsg)) + return true; // Open up a file stream for writing std::ios::openmode io_mode = std::ios::out | std::ios::trunc | std::ios::binary; - std::ofstream file(I->getPath().c_str(), io_mode); + std::ofstream file(I->getPath().c_str(), io_mode); // TODO: Test that file is valid // Get the data and its length const char* data = reinterpret_cast(I->getData()); -- cgit v1.2.3-18-g5258