X-Git-Url: https://git.saurik.com/android/aapt.git/blobdiff_plain/5cf1215c65abb9c57171030d95c1ae26b65a0280..52ffc16944b9fc244558c21d33cbaf8f514ddb7a:/AaptAssets.cpp diff --git a/AaptAssets.cpp b/AaptAssets.cpp index e4f447e..9c5a514 100644 --- a/AaptAssets.cpp +++ b/AaptAssets.cpp @@ -685,13 +685,11 @@ bool AaptGroupEntry::getMncName(const char* name, if (*c != 0) return false; if (c-val == 0 || c-val > 3) return false; - int d = atoi(val); - if (d != 0) { - if (out) out->mnc = d; - return true; + if (out) { + out->mnc = atoi(val); } - return false; + return true; } /* @@ -1395,10 +1393,10 @@ status_t AaptDir::addLeafFile(const String8& leafName, const sp& file) } ssize_t AaptDir::slurpFullTree(Bundle* bundle, const String8& srcDir, - const AaptGroupEntry& kind, const String8& resType) + const AaptGroupEntry& kind, const String8& resType, + sp& fullResPaths) { Vector fileNames; - { DIR* dir = NULL; @@ -1421,9 +1419,14 @@ ssize_t AaptDir::slurpFullTree(Bundle* bundle, const String8& srcDir, if (isHidden(srcDir.string(), entry->d_name)) continue; - fileNames.add(String8(entry->d_name)); + String8 name(entry->d_name); + fileNames.add(name); + // Add fully qualified path for dependency purposes + // if we're collecting them + if (fullResPaths != NULL) { + fullResPaths->add(srcDir.appendPathCopy(name)); + } } - closedir(dir); } @@ -1450,7 +1453,7 @@ ssize_t AaptDir::slurpFullTree(Bundle* bundle, const String8& srcDir, notAdded = true; } ssize_t res = subdir->slurpFullTree(bundle, pathName, kind, - resType); + resType, fullResPaths); if (res < NO_ERROR) { return res; } @@ -1682,7 +1685,7 @@ ssize_t AaptAssets::slurpFromArgs(Bundle* bundle) sp assetAaptDir = makeDir(String8(kAssetDir)); AaptGroupEntry group; count = assetAaptDir->slurpFullTree(bundle, assetRoot, group, - String8()); + String8(), mFullResPaths); if (count < 0) { totalCount = count; goto bail; @@ -1713,6 +1716,7 @@ ssize_t AaptAssets::slurpFromArgs(Bundle* bundle) sp nextOverlay = new AaptAssets(); current->setOverlay(nextOverlay); current = nextOverlay; + current->setFullResPaths(mFullResPaths); } count = current->slurpResourceTree(bundle, String8(res)); @@ -1755,7 +1759,7 @@ ssize_t AaptAssets::slurpFromArgs(Bundle* bundle) * guarantees about ordering, so we're okay with an inorder search * using whatever order the OS happens to hand back to us. */ - count = slurpFullTree(bundle, assetRoot, AaptGroupEntry(), String8()); + count = slurpFullTree(bundle, assetRoot, AaptGroupEntry(), String8(), mFullResPaths); if (count < 0) { /* failure; report error and remove archive */ totalCount = count; @@ -1781,9 +1785,10 @@ bail: ssize_t AaptAssets::slurpFullTree(Bundle* bundle, const String8& srcDir, const AaptGroupEntry& kind, - const String8& resType) + const String8& resType, + sp& fullResPaths) { - ssize_t res = AaptDir::slurpFullTree(bundle, srcDir, kind, resType); + ssize_t res = AaptDir::slurpFullTree(bundle, srcDir, kind, resType, fullResPaths); if (res > 0) { mGroupEntries.add(kind); } @@ -1845,7 +1850,7 @@ ssize_t AaptAssets::slurpResourceTree(Bundle* bundle, const String8& srcDir) if (type == kFileTypeDirectory) { sp dir = makeDir(String8(entry->d_name)); ssize_t res = dir->slurpFullTree(bundle, subdirName, group, - resType); + resType, mFullResPaths); if (res < 0) { count = res; goto bail;