[llvm-commits] CVS: llvm/tools/llvm-ar/llvm-ar.cpp

Chris Lattner lattner at cs.uiuc.edu
Tue Aug 1 11:10:02 PDT 2006



Changes in directory llvm/tools/llvm-ar:

llvm-ar.cpp updated: 1.33 -> 1.34
---
Log message:

Use Path::getFileStatus


---
Diffs of the changes:  (+10 -7)

 llvm-ar.cpp |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)


Index: llvm/tools/llvm-ar/llvm-ar.cpp
diff -u llvm/tools/llvm-ar/llvm-ar.cpp:1.33 llvm/tools/llvm-ar/llvm-ar.cpp:1.34
--- llvm/tools/llvm-ar/llvm-ar.cpp:1.33	Fri Jul 28 17:03:44 2006
+++ llvm/tools/llvm-ar/llvm-ar.cpp	Tue Aug  1 13:09:46 2006
@@ -270,19 +270,22 @@
 // finds with all the files in that directory (recursively). It uses the
 // sys::Path::getDirectoryContent method to perform the actual directory scans.
 std::set<sys::Path> recurseDirectories(const sys::Path& path) {
-  assert(path.isDirectory() && "Oops, can't recurse a file");
   std::set<sys::Path> result;
   if (RecurseDirectories) {
     std::set<sys::Path> content;
     path.getDirectoryContents(content);
     for (std::set<sys::Path>::iterator I = content.begin(), E = content.end();
          I != E; ++I) {
-      if (I->isDirectory()) {
-        std::set<sys::Path> moreResults = recurseDirectories(*I);
-        result.insert(moreResults.begin(), moreResults.end());
-      } else {
-        result.insert(*I);
-      }
+       // Make sure it exists and is a directory
+       sys::FileStatus Status;
+       if (!I->getFileStatus(Status)) {
+         if (Status.isDir) {
+           std::set<sys::Path> moreResults = recurseDirectories(*I);
+           result.insert(moreResults.begin(), moreResults.end());
+         } else {
+           result.insert(*I);
+         }
+       }
     }
   }
   return result;






More information about the llvm-commits mailing list