]> git.saurik.com Git - android/aapt.git/blobdiff - FileFinder.cpp
Fix aapt -G to properly support class attr in fragment.
[android/aapt.git] / FileFinder.cpp
index a1f64d017bb0ae19097a65502d8168d4542b7456..18775c06863f3ccefb8775a8b11ab44738b6b610 100644 (file)
@@ -9,8 +9,8 @@
 #include <utils/String8.h>
 #include <utils/KeyedVector.h>
 
 #include <utils/String8.h>
 #include <utils/KeyedVector.h>
 
-
-#include <iostream>
+#include <dirent.h>
+#include <sys/stat.h>
 
 #include "DirectoryWalker.h"
 #include "FileFinder.h"
 
 #include "DirectoryWalker.h"
 #include "FileFinder.h"
 //#define DEBUG
 
 using android::String8;
 //#define DEBUG
 
 using android::String8;
-using std::cout;
-using std::endl;
+
+// Private function to check whether a file is a directory or not
+bool isDirectory(const char* filename) {
+    struct stat fileStat;
+    if (stat(filename, &fileStat) == -1) {
+        return false;
+    }
+    return(S_ISDIR(fileStat.st_mode));
+}
+
+
+// Private function to check whether a file is a regular file or not
+bool isFile(const char* filename) {
+    struct stat fileStat;
+    if (stat(filename, &fileStat) == -1) {
+        return false;
+    }
+    return(S_ISREG(fileStat.st_mode));
+}
 
 bool SystemFileFinder::findFiles(String8 basePath, Vector<String8>& extensions,
                                  KeyedVector<String8,time_t>& fileStore,
 
 bool SystemFileFinder::findFiles(String8 basePath, Vector<String8>& extensions,
                                  KeyedVector<String8,time_t>& fileStore,
@@ -30,9 +47,6 @@ bool SystemFileFinder::findFiles(String8 basePath, Vector<String8>& extensions,
     if (!dw->openDir(basePath)) {
         return false;
     }
     if (!dw->openDir(basePath)) {
         return false;
     }
-#ifdef DEBUG
-    cout << "FileFinder looking in " << basePath << endl;
-#endif // DEBUG
     /*
      *  Go through all directory entries. Check each file using checkAndAddFile
      *  and recurse into sub-directories.
     /*
      *  Go through all directory entries. Check each file using checkAndAddFile
      *  and recurse into sub-directories.
@@ -45,14 +59,14 @@ bool SystemFileFinder::findFiles(String8 basePath, Vector<String8>& extensions,
 
         String8 fullPath = basePath.appendPathCopy(entryName);
         // If this entry is a directory we'll recurse into it
 
         String8 fullPath = basePath.appendPathCopy(entryName);
         // If this entry is a directory we'll recurse into it
-        if (entry->d_type == DT_DIR) {
+        if (isDirectory(fullPath.string()) ) {
             DirectoryWalker* copy = dw->clone();
             findFiles(fullPath, extensions, fileStore,copy);
             delete copy;
         }
 
         // If this entry is a file, we'll pass it over to checkAndAddFile
             DirectoryWalker* copy = dw->clone();
             findFiles(fullPath, extensions, fileStore,copy);
             delete copy;
         }
 
         // If this entry is a file, we'll pass it over to checkAndAddFile
-        if (entry->d_type == DT_REG) {
+        if (isFile(fullPath.string()) ) {
             checkAndAddFile(fullPath,dw->entryStats(),extensions,fileStore);
         }
     }
             checkAndAddFile(fullPath,dw->entryStats(),extensions,fileStore);
         }
     }
@@ -67,9 +81,6 @@ void SystemFileFinder::checkAndAddFile(String8 path, const struct stat* stats,
                                        Vector<String8>& extensions,
                                        KeyedVector<String8,time_t>& fileStore)
 {
                                        Vector<String8>& extensions,
                                        KeyedVector<String8,time_t>& fileStore)
 {
-#ifdef DEBUG
-    cout << "Checking file " << path << "...";
-#endif // DEBUG
     // Loop over the extensions, checking for a match
     bool done = false;
     String8 ext(path.getPathExtension());
     // Loop over the extensions, checking for a match
     bool done = false;
     String8 ext(path.getPathExtension());
@@ -79,14 +90,9 @@ void SystemFileFinder::checkAndAddFile(String8 path, const struct stat* stats,
         ext2.toLower();
         // Compare the extensions. If a match is found, add to storage.
         if (ext == ext2) {
         ext2.toLower();
         // Compare the extensions. If a match is found, add to storage.
         if (ext == ext2) {
-#ifdef DEBUG
-            cout << "Match";
-#endif // DEBUG
             done = true;
             fileStore.add(path,stats->st_mtime);
         }
     }
             done = true;
             fileStore.add(path,stats->st_mtime);
         }
     }
-#ifdef DEBUG
-    cout << endl;
-#endif //DEBUG
-}
\ No newline at end of file
+}
+