]> git.saurik.com Git - android/aapt.git/blobdiff - Package.cpp
Merge commit 'remotes/korg/cupcake'
[android/aapt.git] / Package.cpp
index 23f641a98eb7e12a349f28e53f232fa83d52602d..0df460657346c54c84f2cdf3656b4468f6a256d5 100644 (file)
@@ -34,7 +34,7 @@ ssize_t processAssets(Bundle* bundle, ZipFile* zip,
                         const sp<AaptDir>& dir, const AaptGroupEntry& ge);
 bool processFile(Bundle* bundle, ZipFile* zip,
                         const sp<AaptGroup>& group, const sp<AaptFile>& file);
                         const sp<AaptDir>& dir, const AaptGroupEntry& ge);
 bool processFile(Bundle* bundle, ZipFile* zip,
                         const sp<AaptGroup>& group, const sp<AaptFile>& file);
-bool okayToCompress(const String8& pathName);
+bool okayToCompress(Bundle* bundle, const String8& pathName);
 ssize_t processJarFiles(Bundle* bundle, ZipFile* zip);
 
 /*
 ssize_t processJarFiles(Bundle* bundle, ZipFile* zip);
 
 /*
@@ -327,7 +327,7 @@ bool processFile(Bundle* bundle, ZipFile* zip,
     } else if (!hasData) {
         /* don't compress certain files, e.g. PNGs */
         int compressionMethod = bundle->getCompressionMethod();
     } else if (!hasData) {
         /* don't compress certain files, e.g. PNGs */
         int compressionMethod = bundle->getCompressionMethod();
-        if (!okayToCompress(storageName)) {
+        if (!okayToCompress(bundle, storageName)) {
             compressionMethod = ZipEntry::kCompressStored;
         }
         result = zip->add(file->getSourceFile().string(), storageName.string(), compressionMethod,
             compressionMethod = ZipEntry::kCompressStored;
         }
         result = zip->add(file->getSourceFile().string(), storageName.string(), compressionMethod,
@@ -365,7 +365,7 @@ bool processFile(Bundle* bundle, ZipFile* zip,
  * Determine whether or not we want to try to compress this file based
  * on the file extension.
  */
  * Determine whether or not we want to try to compress this file based
  * on the file extension.
  */
-bool okayToCompress(const String8& pathName)
+bool okayToCompress(Bundle* bundle, const String8& pathName)
 {
     String8 ext = pathName.getPathExtension();
     int i;
 {
     String8 ext = pathName.getPathExtension();
     int i;
@@ -378,6 +378,19 @@ bool okayToCompress(const String8& pathName)
             return false;
     }
 
             return false;
     }
 
+    const android::Vector<const char*>& others(bundle->getNoCompressExtensions());
+    for (i = 0; i < (int)others.size(); i++) {
+        const char* str = others[i];
+        int pos = pathName.length() - strlen(str);
+        if (pos < 0) {
+            continue;
+        }
+        const char* path = pathName.string();
+        if (strcasecmp(path + pos, str) == 0) {
+            return false;
+        }
+    }
+
     return true;
 }
 
     return true;
 }