summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Gampe <agampe@google.com>2014-10-21 23:04:54 -0700
committerAndreas Gampe <agampe@google.com>2014-11-07 13:35:05 -0800
commit2204f0bf56af53b588a01701b8cf9cd05b1b3ff9 (patch)
treed163b59ccc8d10a3181bc77ea99f83c94e6748ce
parent59701b9ba5c453e327bc0e6873a9f6ff87a10391 (diff)
downloadframeworks_base-2204f0bf56af53b588a01701b8cf9cd05b1b3ff9.zip
frameworks_base-2204f0bf56af53b588a01701b8cf9cd05b1b3ff9.tar.gz
frameworks_base-2204f0bf56af53b588a01701b8cf9cd05b1b3ff9.tar.bz2
Frameworks/base: Wall Werror in libs/androidfw
Turn on -Wall -Werror in libs/androidfw. Fix warnings. Refactor some code. Change-Id: I66fe54ace433c15dee5de328b149ca142f74b2dd
-rw-r--r--include/androidfw/ResourceTypes.h4
-rw-r--r--libs/androidfw/Android.mk16
-rw-r--r--libs/androidfw/Asset.cpp10
-rw-r--r--libs/androidfw/AssetManager.cpp20
-rw-r--r--libs/androidfw/BackupData.cpp30
-rw-r--r--libs/androidfw/BackupHelpers.cpp34
-rw-r--r--libs/androidfw/ObbFile.cpp8
-rw-r--r--libs/androidfw/ResourceTypes.cpp516
-rw-r--r--libs/androidfw/StreamingZipInflater.cpp6
-rw-r--r--libs/androidfw/ZipFileRO.cpp8
-rw-r--r--libs/androidfw/tests/Android.mk10
11 files changed, 412 insertions, 250 deletions
diff --git a/include/androidfw/ResourceTypes.h b/include/androidfw/ResourceTypes.h
index ce30d81..f7730f2 100644
--- a/include/androidfw/ResourceTypes.h
+++ b/include/androidfw/ResourceTypes.h
@@ -236,8 +236,8 @@ enum {
#define Res_MAKEINTERNAL(entry) (0x01000000 | (entry&0xFFFF))
#define Res_MAKEARRAY(entry) (0x02000000 | (entry&0xFFFF))
-#define Res_MAXPACKAGE 255
-#define Res_MAXTYPE 255
+static const size_t Res_MAXPACKAGE = 255;
+static const size_t Res_MAXTYPE = 255;
/**
* Representation of a value in a resource, supplying type
diff --git a/libs/androidfw/Android.mk b/libs/androidfw/Android.mk
index 376b101..9c0a747 100644
--- a/libs/androidfw/Android.mk
+++ b/libs/androidfw/Android.mk
@@ -52,8 +52,10 @@ LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS += -DSTATIC_ANDROIDFW_FOR_TOOLS
+LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
+
LOCAL_C_INCLUDES := \
- external/zlib
+ external/zlib
LOCAL_STATIC_LIBRARIES := liblog libziparchive-host libutils
@@ -69,11 +71,11 @@ LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
LOCAL_SRC_FILES:= $(deviceSources)
LOCAL_SHARED_LIBRARIES := \
- libbinder \
- liblog \
- libcutils \
- libutils \
- libz
+ libbinder \
+ liblog \
+ libcutils \
+ libutils \
+ libz
LOCAL_STATIC_LIBRARIES := libziparchive
@@ -85,6 +87,8 @@ LOCAL_MODULE:= libandroidfw
LOCAL_MODULE_TAGS := optional
+LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
+
include $(BUILD_SHARED_LIBRARY)
diff --git a/libs/androidfw/Asset.cpp b/libs/androidfw/Asset.cpp
index 589211f..4b3382e 100644
--- a/libs/androidfw/Asset.cpp
+++ b/libs/androidfw/Asset.cpp
@@ -45,6 +45,8 @@ using namespace android;
# define O_BINARY 0
#endif
+static const bool kIsDebug = false;
+
static Mutex gAssetLock;
static int32_t gCount = 0;
static Asset* gHead = NULL;
@@ -89,7 +91,9 @@ Asset::Asset(void)
gTail->mNext = this;
gTail = this;
}
- //ALOGI("Creating Asset %p #%d\n", this, gCount);
+ if (kIsDebug) {
+ ALOGI("Creating Asset %p #%d\n", this, gCount);
+ }
}
Asset::~Asset(void)
@@ -109,7 +113,9 @@ Asset::~Asset(void)
mPrev->mNext = mNext;
}
mNext = mPrev = NULL;
- //ALOGI("Destroying Asset in %p #%d\n", this, gCount);
+ if (kIsDebug) {
+ ALOGI("Destroying Asset in %p #%d\n", this, gCount);
+ }
}
/*
diff --git a/libs/androidfw/AssetManager.cpp b/libs/androidfw/AssetManager.cpp
index de6a33c..e5c5b10 100644
--- a/libs/androidfw/AssetManager.cpp
+++ b/libs/androidfw/AssetManager.cpp
@@ -64,6 +64,8 @@
using namespace android;
+static const bool kIsDebug = false;
+
/*
* Names for default app, locale, and vendor. We might want to change
* these to be an actual locale, e.g. always use en-US as the default.
@@ -152,15 +154,19 @@ AssetManager::AssetManager(CacheMode cacheMode)
mResources(NULL), mConfig(new ResTable_config),
mCacheMode(cacheMode), mCacheValid(false)
{
- int count = android_atomic_inc(&gCount)+1;
- //ALOGI("Creating AssetManager %p #%d\n", this, count);
+ int count = android_atomic_inc(&gCount) + 1;
+ if (kIsDebug) {
+ ALOGI("Creating AssetManager %p #%d\n", this, count);
+ }
memset(mConfig, 0, sizeof(ResTable_config));
}
AssetManager::~AssetManager(void)
{
int count = android_atomic_dec(&gCount);
- //ALOGI("Destroying AssetManager in %p #%d\n", this, count);
+ if (kIsDebug) {
+ ALOGI("Destroying AssetManager in %p #%d\n", this, count);
+ }
delete mConfig;
delete mResources;
@@ -1864,7 +1870,9 @@ AssetManager::SharedZip::SharedZip(const String8& path, time_t modWhen)
: mPath(path), mZipFile(NULL), mModWhen(modWhen),
mResourceTableAsset(NULL), mResourceTable(NULL)
{
- //ALOGI("Creating SharedZip %p %s\n", this, (const char*)mPath);
+ if (kIsDebug) {
+ ALOGI("Creating SharedZip %p %s\n", this, (const char*)mPath);
+ }
ALOGV("+++ opening zip '%s'\n", mPath.string());
mZipFile = ZipFileRO::open(mPath.string());
if (mZipFile == NULL) {
@@ -1958,7 +1966,9 @@ bool AssetManager::SharedZip::getOverlay(size_t idx, asset_path* out) const
AssetManager::SharedZip::~SharedZip()
{
- //ALOGI("Destroying SharedZip %p %s\n", this, (const char*)mPath);
+ if (kIsDebug) {
+ ALOGI("Destroying SharedZip %p %s\n", this, (const char*)mPath);
+ }
if (mResourceTable != NULL) {
delete mResourceTable;
}
diff --git a/libs/androidfw/BackupData.cpp b/libs/androidfw/BackupData.cpp
index d16d5498..2b45a70 100644
--- a/libs/androidfw/BackupData.cpp
+++ b/libs/androidfw/BackupData.cpp
@@ -27,7 +27,7 @@
namespace android {
-static const bool DEBUG = false;
+static const bool kIsDebug = false;
/*
* File Format (v1):
@@ -62,7 +62,7 @@ BackupDataWriter::BackupDataWriter(int fd)
m_entityCount(0)
{
m_pos = (ssize_t) lseek(fd, 0, SEEK_CUR);
- if (DEBUG) ALOGI("BackupDataWriter(%d) @ %ld", fd, (long)m_pos);
+ if (kIsDebug) ALOGI("BackupDataWriter(%d) @ %ld", fd, (long)m_pos);
}
BackupDataWriter::~BackupDataWriter()
@@ -79,7 +79,7 @@ BackupDataWriter::write_padding_for(int n)
paddingSize = padding_extra(n);
if (paddingSize > 0) {
uint32_t padding = 0xbcbcbcbc;
- if (DEBUG) ALOGI("writing %zd padding bytes for %d", paddingSize, n);
+ if (kIsDebug) ALOGI("writing %zd padding bytes for %d", paddingSize, n);
amt = write(m_fd, &padding, paddingSize);
if (amt != paddingSize) {
m_status = errno;
@@ -112,7 +112,7 @@ BackupDataWriter::WriteEntityHeader(const String8& key, size_t dataSize)
} else {
k = key;
}
- if (DEBUG) {
+ if (kIsDebug) {
ALOGD("Writing header: prefix='%s' key='%s' dataSize=%zu", m_keyPrefix.string(),
key.string(), dataSize);
}
@@ -126,7 +126,7 @@ BackupDataWriter::WriteEntityHeader(const String8& key, size_t dataSize)
header.keyLen = tolel(keyLen);
header.dataSize = tolel(dataSize);
- if (DEBUG) ALOGI("writing entity header, %zu bytes", sizeof(entity_header_v1));
+ if (kIsDebug) ALOGI("writing entity header, %zu bytes", sizeof(entity_header_v1));
amt = write(m_fd, &header, sizeof(entity_header_v1));
if (amt != sizeof(entity_header_v1)) {
m_status = errno;
@@ -134,7 +134,7 @@ BackupDataWriter::WriteEntityHeader(const String8& key, size_t dataSize)
}
m_pos += amt;
- if (DEBUG) ALOGI("writing entity header key, %zd bytes", keyLen+1);
+ if (kIsDebug) ALOGI("writing entity header key, %zd bytes", keyLen+1);
amt = write(m_fd, k.string(), keyLen+1);
if (amt != keyLen+1) {
m_status = errno;
@@ -152,10 +152,10 @@ BackupDataWriter::WriteEntityHeader(const String8& key, size_t dataSize)
status_t
BackupDataWriter::WriteEntityData(const void* data, size_t size)
{
- if (DEBUG) ALOGD("Writing data: size=%lu", (unsigned long) size);
+ if (kIsDebug) ALOGD("Writing data: size=%lu", (unsigned long) size);
if (m_status != NO_ERROR) {
- if (DEBUG) {
+ if (kIsDebug) {
ALOGD("Not writing data - stream in error state %d (%s)", m_status, strerror(m_status));
}
return m_status;
@@ -167,7 +167,7 @@ BackupDataWriter::WriteEntityData(const void* data, size_t size)
ssize_t amt = write(m_fd, data, size);
if (amt != (ssize_t)size) {
m_status = errno;
- if (DEBUG) ALOGD("write returned error %d (%s)", m_status, strerror(m_status));
+ if (kIsDebug) ALOGD("write returned error %d (%s)", m_status, strerror(m_status));
return m_status;
}
m_pos += amt;
@@ -189,7 +189,7 @@ BackupDataReader::BackupDataReader(int fd)
{
memset(&m_header, 0, sizeof(m_header));
m_pos = (ssize_t) lseek(fd, 0, SEEK_CUR);
- if (DEBUG) ALOGI("BackupDataReader(%d) @ %ld", fd, (long)m_pos);
+ if (kIsDebug) ALOGI("BackupDataReader(%d) @ %ld", fd, (long)m_pos);
}
BackupDataReader::~BackupDataReader()
@@ -342,15 +342,19 @@ BackupDataReader::ReadEntityData(void* data, size_t size)
return -1;
}
int remaining = m_dataEndPos - m_pos;
- //ALOGD("ReadEntityData size=%d m_pos=0x%x m_dataEndPos=0x%x remaining=%d\n",
- // size, m_pos, m_dataEndPos, remaining);
+ if (kIsDebug) {
+ ALOGD("ReadEntityData size=%d m_pos=0x%x m_dataEndPos=0x%x remaining=%d\n",
+ size, m_pos, m_dataEndPos, remaining);
+ }
if (remaining <= 0) {
return 0;
}
if (((int)size) > remaining) {
size = remaining;
}
- //ALOGD(" reading %d bytes", size);
+ if (kIsDebug) {
+ ALOGD(" reading %d bytes", size);
+ }
int amt = read(m_fd, data, size);
if (amt < 0) {
m_status = errno;
diff --git a/libs/androidfw/BackupHelpers.cpp b/libs/androidfw/BackupHelpers.cpp
index 52dce9f..36a4cfe 100644
--- a/libs/androidfw/BackupHelpers.cpp
+++ b/libs/androidfw/BackupHelpers.cpp
@@ -68,14 +68,11 @@ struct file_metadata_v1 {
const static int CURRENT_METADATA_VERSION = 1;
-#if 1
-#define LOGP(f, x...)
-#else
+static const bool kIsDebug = false;
#if TEST_BACKUP_HELPERS
-#define LOGP(f, x...) printf(f "\n", x)
+#define LOGP(f, x...) if (kIsDebug) printf(f "\n", x)
#else
-#define LOGP(x...) ALOGD(x)
-#endif
+#define LOGP(x...) if (kIsDebug) ALOGD(x)
#endif
const static int ROUND_UP[4] = { 0, 3, 2, 1 };
@@ -205,13 +202,6 @@ write_snapshot_file(int fd, const KeyedVector<String8,FileRec>& snapshot)
}
static int
-write_delete_file(BackupDataWriter* dataStream, const String8& key)
-{
- LOGP("write_delete_file %s\n", key.string());
- return dataStream->WriteEntityHeader(key, -1);
-}
-
-static int
write_update_file(BackupDataWriter* dataStream, int fd, int mode, const String8& key,
char const* realFilename)
{
@@ -225,8 +215,6 @@ write_update_file(BackupDataWriter* dataStream, int fd, int mode, const String8&
file_metadata_v1 metadata;
char* buf = (char*)malloc(bufsize);
- int crc = crc32(0L, Z_NULL, 0);
-
fileSize = lseek(fd, 0, SEEK_END);
lseek(fd, 0, SEEK_SET);
@@ -442,18 +430,6 @@ back_up_files(int oldSnapshotFD, BackupDataWriter* dataStream, int newSnapshotFD
return 0;
}
-// Utility function, equivalent to stpcpy(): perform a strcpy, but instead of
-// returning the initial dest, return a pointer to the trailing NUL.
-static char* strcpy_ptr(char* dest, const char* str) {
- if (dest && str) {
- while ((*dest = *str) != 0) {
- dest++;
- str++;
- }
- }
- return dest;
-}
-
static void calc_tar_checksum(char* buf) {
// [ 148 : 8 ] checksum -- to be calculated with this field as space chars
memset(buf + 148, ' ', 8);
@@ -635,7 +611,6 @@ int write_tarfile(const String8& packageName, const String8& domain,
// construct the pax extended header data block
memset(paxData, 0, BUFSIZE - (paxData - buf));
- int len;
// size header -- calc len in digits by actually rendering the number
// to a string - brute force but simple
@@ -1200,7 +1175,6 @@ test_read_header_and_entity(BackupDataReader& reader, const char* str)
size_t bufSize = strlen(str)+1;
char* buf = (char*)malloc(bufSize);
String8 string;
- int cookie = 0x11111111;
size_t actualSize;
bool done;
int type;
@@ -1490,7 +1464,6 @@ int
backup_helper_test_null_base()
{
int err;
- int oldSnapshotFD;
int dataStreamFD;
int newSnapshotFD;
@@ -1539,7 +1512,6 @@ int
backup_helper_test_missing_file()
{
int err;
- int oldSnapshotFD;
int dataStreamFD;
int newSnapshotFD;
diff --git a/libs/androidfw/ObbFile.cpp b/libs/androidfw/ObbFile.cpp
index ec59f06..195fa9a 100644
--- a/libs/androidfw/ObbFile.cpp
+++ b/libs/androidfw/ObbFile.cpp
@@ -122,7 +122,7 @@ bool ObbFile::parseObbFile(int fd)
if (fileLength < 0) {
ALOGW("error seeking in ObbFile: %s\n", strerror(errno));
} else {
- ALOGW("file is only %lld (less than %d minimum)\n", fileLength, kFooterMinSize);
+ ALOGW("file is only %lld (less than %d minimum)\n", (long long int)fileLength, kFooterMinSize);
}
return false;
}
@@ -150,8 +150,8 @@ bool ObbFile::parseObbFile(int fd)
footerSize = get4LE((unsigned char*)footer);
if (footerSize > (size_t)fileLength - kFooterTagSize
|| footerSize > kMaxBufSize) {
- ALOGW("claimed footer size is too large (0x%08zx; file size is 0x%08llx)\n",
- footerSize, fileLength);
+ ALOGW("claimed footer size is too large (0x%08zx; file size is 0x%08lld)\n",
+ footerSize, (long long int)fileLength);
return false;
}
@@ -164,7 +164,7 @@ bool ObbFile::parseObbFile(int fd)
off64_t fileOffset = fileLength - footerSize - kFooterTagSize;
if (lseek64(fd, fileOffset, SEEK_SET) != fileOffset) {
- ALOGW("seek %lld failed: %s\n", fileOffset, strerror(errno));
+ ALOGW("seek %lld failed: %s\n", (long long int)fileOffset, strerror(errno));
return false;
}
diff --git a/libs/androidfw/ResourceTypes.cpp b/libs/androidfw/ResourceTypes.cpp
index 825071a..e2263d2 100644
--- a/libs/androidfw/ResourceTypes.cpp
+++ b/libs/androidfw/ResourceTypes.cpp
@@ -27,6 +27,10 @@
#include <utils/String16.h>
#include <utils/String8.h>
+#ifdef HAVE_ANDROID_OS
+#include <binder/TextOutput.h>
+#endif
+
#include <stdlib.h>
#include <string.h>
#include <memory.h>
@@ -38,15 +42,6 @@
#define INT32_MAX ((int32_t)(2147483647))
#endif
-#define STRING_POOL_NOISY(x) //x
-#define XML_NOISY(x) //x
-#define TABLE_NOISY(x) //x
-#define TABLE_GETENTRY(x) //x
-#define TABLE_SUPER_NOISY(x) //x
-#define LOAD_TABLE_NOISY(x) //x
-#define TABLE_THEME(x) //x
-#define LIB_NOISY(x) //x
-
namespace android {
#ifdef HAVE_WINSOCK
@@ -72,6 +67,19 @@ namespace android {
#define APP_PACKAGE_ID 0x7f
#define SYS_PACKAGE_ID 0x01
+static const bool kDebugStringPoolNoisy = false;
+static const bool kDebugXMLNoisy = false;
+static const bool kDebugTableNoisy = false;
+static const bool kDebugTableGetEntry = false;
+static const bool kDebugTableSuperNoisy = false;
+static const bool kDebugLoadTableNoisy = false;
+static const bool kDebugLoadTableSuperNoisy = false;
+static const bool kDebugTableTheme = false;
+static const bool kDebugResXMLTree = false;
+static const bool kDebugLibNoisy = false;
+
+// TODO: This code uses 0xFFFFFFFF converted to bag_set* as a sentinel value. This is bad practice.
+
// Standard C isspace() is only required to look at the low byte of its input, so
// produces incorrect results for UTF-16 characters. For safety's sake, assume that
// any high-byte UTF-16 code point is not whitespace.
@@ -719,8 +727,10 @@ const char16_t* ResStringPool::stringAt(size_t idx, size_t* u16len) const
if (mCache == NULL) {
#ifndef HAVE_ANDROID_OS
- STRING_POOL_NOISY(ALOGI("CREATING STRING CACHE OF %d bytes",
- mHeader->stringCount*sizeof(char16_t**)));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("CREATING STRING CACHE OF %zu bytes",
+ mHeader->stringCount*sizeof(char16_t**));
+ }
#else
// We do not want to be in this case when actually running Android.
ALOGW("CREATING STRING CACHE OF %d bytes",
@@ -753,7 +763,9 @@ const char16_t* ResStringPool::stringAt(size_t idx, size_t* u16len) const
return NULL;
}
- STRING_POOL_NOISY(ALOGI("Caching UTF8 string: %s", u8str));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("Caching UTF8 string: %s", u8str);
+ }
utf8_to_utf16(u8str, u8len, u16str);
mCache[idx] = u16str;
return u16str;
@@ -843,7 +855,9 @@ ssize_t ResStringPool::indexOfString(const char16_t* str, size_t strLen) const
size_t len;
if ((mHeader->flags&ResStringPool_header::UTF8_FLAG) != 0) {
- STRING_POOL_NOISY(ALOGI("indexOfString UTF-8: %s", String8(str, strLen).string()));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("indexOfString UTF-8: %s", String8(str, strLen).string());
+ }
// The string pool contains UTF 8 strings; we don't want to cause
// temporary UTF-16 strings to be created as we search.
@@ -869,10 +883,14 @@ ssize_t ResStringPool::indexOfString(const char16_t* str, size_t strLen) const
} else {
c = -1;
}
- STRING_POOL_NOISY(ALOGI("Looking at %s, cmp=%d, l/mid/h=%d/%d/%d\n",
- (const char*)s, c, (int)l, (int)mid, (int)h));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("Looking at %s, cmp=%d, l/mid/h=%d/%d/%d\n",
+ (const char*)s, c, (int)l, (int)mid, (int)h);
+ }
if (c == 0) {
- STRING_POOL_NOISY(ALOGI("MATCH!"));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("MATCH!");
+ }
free(convBuffer);
return mid;
} else if (c < 0) {
@@ -891,18 +909,22 @@ ssize_t ResStringPool::indexOfString(const char16_t* str, size_t strLen) const
const size_t str8Len = str8.size();
for (int i=mHeader->stringCount-1; i>=0; i--) {
const char* s = string8At(i, &len);
- STRING_POOL_NOISY(ALOGI("Looking at %s, i=%d\n",
- String8(s).string(),
- i));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("Looking at %s, i=%d\n", String8(s).string(), i);
+ }
if (s && str8Len == len && memcmp(s, str8.string(), str8Len) == 0) {
- STRING_POOL_NOISY(ALOGI("MATCH!"));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("MATCH!");
+ }
return i;
}
}
}
} else {
- STRING_POOL_NOISY(ALOGI("indexOfString UTF-16: %s", String8(str, strLen).string()));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("indexOfString UTF-16: %s", String8(str, strLen).string());
+ }
if (mHeader->flags&ResStringPool_header::SORTED_FLAG) {
// Do a binary search for the string...
@@ -914,11 +936,14 @@ ssize_t ResStringPool::indexOfString(const char16_t* str, size_t strLen) const
mid = l + (h - l)/2;
const char16_t* s = stringAt(mid, &len);
int c = s ? strzcmp16(s, len, str, strLen) : -1;
- STRING_POOL_NOISY(ALOGI("Looking at %s, cmp=%d, l/mid/h=%d/%d/%d\n",
- String8(s).string(),
- c, (int)l, (int)mid, (int)h));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("Looking at %s, cmp=%d, l/mid/h=%d/%d/%d\n",
+ String8(s).string(), c, (int)l, (int)mid, (int)h);
+ }
if (c == 0) {
- STRING_POOL_NOISY(ALOGI("MATCH!"));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("MATCH!");
+ }
return mid;
} else if (c < 0) {
l = mid + 1;
@@ -933,11 +958,13 @@ ssize_t ResStringPool::indexOfString(const char16_t* str, size_t strLen) const
// block, start searching at the back.
for (int i=mHeader->stringCount-1; i>=0; i--) {
const char16_t* s = stringAt(i, &len);
- STRING_POOL_NOISY(ALOGI("Looking at %s, i=%d\n",
- String8(s).string(),
- i));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("Looking at %s, i=%d\n", String8(s).string(), i);
+ }
if (s && strLen == len && strzcmp16(s, len, str, strLen) == 0) {
- STRING_POOL_NOISY(ALOGI("MATCH!"));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("MATCH!");
+ }
return i;
}
}
@@ -1138,7 +1165,9 @@ const char16_t* ResXMLParser::getAttributeNamespace(size_t idx, size_t* outLen)
{
int32_t id = getAttributeNamespaceID(idx);
//printf("attribute namespace=%d idx=%d event=%p\n", id, idx, mEventCode);
- //XML_NOISY(printf("getAttributeNamespace 0x%x=0x%x\n", idx, id));
+ if (kDebugXMLNoisy) {
+ printf("getAttributeNamespace 0x%zx=0x%x\n", idx, id);
+ }
return id >= 0 ? mTree.mStrings.stringAt(id, outLen) : NULL;
}
@@ -1146,7 +1175,9 @@ const char* ResXMLParser::getAttributeNamespace8(size_t idx, size_t* outLen) con
{
int32_t id = getAttributeNamespaceID(idx);
//printf("attribute namespace=%d idx=%d event=%p\n", id, idx, mEventCode);
- //XML_NOISY(printf("getAttributeNamespace 0x%x=0x%x\n", idx, id));
+ if (kDebugXMLNoisy) {
+ printf("getAttributeNamespace 0x%zx=0x%x\n", idx, id);
+ }
return id >= 0 ? mTree.mStrings.string8At(id, outLen) : NULL;
}
@@ -1169,7 +1200,9 @@ const char16_t* ResXMLParser::getAttributeName(size_t idx, size_t* outLen) const
{
int32_t id = getAttributeNameID(idx);
//printf("attribute name=%d idx=%d event=%p\n", id, idx, mEventCode);
- //XML_NOISY(printf("getAttributeName 0x%x=0x%x\n", idx, id));
+ if (kDebugXMLNoisy) {
+ printf("getAttributeName 0x%zx=0x%x\n", idx, id);
+ }
return id >= 0 ? mTree.mStrings.stringAt(id, outLen) : NULL;
}
@@ -1177,7 +1210,9 @@ const char* ResXMLParser::getAttributeName8(size_t idx, size_t* outLen) const
{
int32_t id = getAttributeNameID(idx);
//printf("attribute name=%d idx=%d event=%p\n", id, idx, mEventCode);
- //XML_NOISY(printf("getAttributeName 0x%x=0x%x\n", idx, id));
+ if (kDebugXMLNoisy) {
+ printf("getAttributeName 0x%zx=0x%x\n", idx, id);
+ }
return id >= 0 ? mTree.mStrings.string8At(id, outLen) : NULL;
}
@@ -1208,7 +1243,9 @@ int32_t ResXMLParser::getAttributeValueStringID(size_t idx) const
const char16_t* ResXMLParser::getAttributeStringValue(size_t idx, size_t* outLen) const
{
int32_t id = getAttributeValueStringID(idx);
- //XML_NOISY(printf("getAttributeValue 0x%x=0x%x\n", idx, id));
+ if (kDebugXMLNoisy) {
+ printf("getAttributeValue 0x%zx=0x%x\n", idx, id);
+ }
return id >= 0 ? mTree.mStrings.stringAt(id, outLen) : NULL;
}
@@ -1299,54 +1336,69 @@ ssize_t ResXMLParser::indexOfAttribute(const char16_t* ns, size_t nsLen,
ns8 = String8(ns, nsLen);
}
attr8 = String8(attr, attrLen);
- STRING_POOL_NOISY(ALOGI("indexOfAttribute UTF8 %s (%d) / %s (%d)", ns8.string(), nsLen,
- attr8.string(), attrLen));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("indexOfAttribute UTF8 %s (%zu) / %s (%zu)", ns8.string(), nsLen,
+ attr8.string(), attrLen);
+ }
for (size_t i=0; i<N; i++) {
size_t curNsLen = 0, curAttrLen = 0;
const char* curNs = getAttributeNamespace8(i, &curNsLen);
const char* curAttr = getAttributeName8(i, &curAttrLen);
- STRING_POOL_NOISY(ALOGI(" curNs=%s (%d), curAttr=%s (%d)", curNs, curNsLen,
- curAttr, curAttrLen));
+ if (kDebugStringPoolNoisy) {
+ ALOGI(" curNs=%s (%zu), curAttr=%s (%zu)", curNs, curNsLen, curAttr, curAttrLen);
+ }
if (curAttr != NULL && curNsLen == nsLen && curAttrLen == attrLen
&& memcmp(attr8.string(), curAttr, attrLen) == 0) {
if (ns == NULL) {
if (curNs == NULL) {
- STRING_POOL_NOISY(ALOGI(" FOUND!"));
+ if (kDebugStringPoolNoisy) {
+ ALOGI(" FOUND!");
+ }
return i;
}
} else if (curNs != NULL) {
//printf(" --> ns=%s, curNs=%s\n",
// String8(ns).string(), String8(curNs).string());
if (memcmp(ns8.string(), curNs, nsLen) == 0) {
- STRING_POOL_NOISY(ALOGI(" FOUND!"));
+ if (kDebugStringPoolNoisy) {
+ ALOGI(" FOUND!");
+ }
return i;
}
}
}
}
} else {
- STRING_POOL_NOISY(ALOGI("indexOfAttribute UTF16 %s (%d) / %s (%d)",
- String8(ns, nsLen).string(), nsLen,
- String8(attr, attrLen).string(), attrLen));
+ if (kDebugStringPoolNoisy) {
+ ALOGI("indexOfAttribute UTF16 %s (%zu) / %s (%zu)",
+ String8(ns, nsLen).string(), nsLen,
+ String8(attr, attrLen).string(), attrLen);
+ }
for (size_t i=0; i<N; i++) {
size_t curNsLen = 0, curAttrLen = 0;
const char16_t* curNs = getAttributeNamespace(i, &curNsLen);
const char16_t* curAttr = getAttributeName(i, &curAttrLen);
- STRING_POOL_NOISY(ALOGI(" curNs=%s (%d), curAttr=%s (%d)",
- String8(curNs, curNsLen).string(), curNsLen,
- String8(curAttr, curAttrLen).string(), curAttrLen));
+ if (kDebugStringPoolNoisy) {
+ ALOGI(" curNs=%s (%zu), curAttr=%s (%zu)",
+ String8(curNs, curNsLen).string(), curNsLen,
+ String8(curAttr, curAttrLen).string(), curAttrLen);
+ }
if (curAttr != NULL && curNsLen == nsLen && curAttrLen == attrLen
&& (memcmp(attr, curAttr, attrLen*sizeof(char16_t)) == 0)) {
if (ns == NULL) {
if (curNs == NULL) {
- STRING_POOL_NOISY(ALOGI(" FOUND!"));
+ if (kDebugStringPoolNoisy) {
+ ALOGI(" FOUND!");
+ }
return i;
}
} else if (curNs != NULL) {
//printf(" --> ns=%s, curNs=%s\n",
// String8(ns).string(), String8(curNs).string());
if (memcmp(ns, curNs, nsLen*sizeof(char16_t)) == 0) {
- STRING_POOL_NOISY(ALOGI(" FOUND!"));
+ if (kDebugStringPoolNoisy) {
+ ALOGI(" FOUND!");
+ }
return i;
}
}
@@ -1394,7 +1446,9 @@ ResXMLParser::event_code_t ResXMLParser::nextNode()
do {
const ResXMLTree_node* next = (const ResXMLTree_node*)
(((const uint8_t*)mCurNode) + dtohl(mCurNode->header.size));
- //ALOGW("Next node: prev=%p, next=%p\n", mCurNode, next);
+ if (kDebugXMLNoisy) {
+ ALOGI("Next node: prev=%p, next=%p\n", mCurNode, next);
+ }
if (((const uint8_t*)next) >= mTree.mDataEnd) {
mCurNode = NULL;
@@ -1471,7 +1525,9 @@ ResXMLTree::ResXMLTree(const DynamicRefTable* dynamicRefTable)
, mDynamicRefTable(dynamicRefTable)
, mError(NO_INIT), mOwnedData(NULL)
{
- //ALOGI("Creating ResXMLTree %p #%d\n", this, android_atomic_inc(&gCount)+1);
+ if (kDebugResXMLTree) {
+ ALOGI("Creating ResXMLTree %p #%d\n", this, android_atomic_inc(&gCount)+1);
+ }
restart();
}
@@ -1480,13 +1536,17 @@ ResXMLTree::ResXMLTree()
, mDynamicRefTable(NULL)
, mError(NO_INIT), mOwnedData(NULL)
{
- //ALOGI("Creating ResXMLTree %p #%d\n", this, android_atomic_inc(&gCount)+1);
+ if (kDebugResXMLTree) {
+ ALOGI("Creating ResXMLTree %p #%d\n", this, android_atomic_inc(&gCount)+1);
+ }
restart();
}
ResXMLTree::~ResXMLTree()
{
- //ALOGI("Destroying ResXMLTree in %p #%d\n", this, android_atomic_dec(&gCount)-1);
+ if (kDebugResXMLTree) {
+ ALOGI("Destroying ResXMLTree in %p #%d\n", this, android_atomic_dec(&gCount)-1);
+ }
uninit();
}
@@ -1539,8 +1599,10 @@ status_t ResXMLTree::setTo(const void* data, size_t size, bool copyData)
}
const uint16_t type = dtohs(chunk->type);
const size_t size = dtohl(chunk->size);
- XML_NOISY(printf("Scanning @ %p: type=0x%x, size=0x%x\n",
- (void*)(((uint32_t)chunk)-((uint32_t)mHeader)), type, size));
+ if (kDebugXMLNoisy) {
+ printf("Scanning @ %p: type=0x%x, size=0x%zx\n",
+ (void*)(((uintptr_t)chunk)-((uintptr_t)mHeader)), type, size);
+ }
if (type == RES_STRING_POOL_TYPE) {
mStrings.setTo(chunk, size);
} else if (type == RES_XML_RESOURCE_MAP_TYPE) {
@@ -1563,7 +1625,9 @@ status_t ResXMLTree::setTo(const void* data, size_t size, bool copyData)
mRootCode = mEventCode;
break;
} else {
- XML_NOISY(printf("Skipping unknown chunk!\n"));
+ if (kDebugXMLNoisy) {
+ printf("Skipping unknown chunk!\n");
+ }
}
lastChunk = chunk;
chunk = (const ResChunk_header*)
@@ -2147,9 +2211,11 @@ bool ResTable_config::isBetterThan(const ResTable_config& o,
myDelta += requested->screenHeightDp - screenHeightDp;
otherDelta += requested->screenHeightDp - o.screenHeightDp;
}
- //ALOGI("Comparing this %dx%d to other %dx%d in %dx%d: myDelta=%d otherDelta=%d",
- // screenWidthDp, screenHeightDp, o.screenWidthDp, o.screenHeightDp,
- // requested->screenWidthDp, requested->screenHeightDp, myDelta, otherDelta);
+ if (kDebugTableSuperNoisy) {
+ ALOGI("Comparing this %dx%d to other %dx%d in %dx%d: myDelta=%d otherDelta=%d",
+ screenWidthDp, screenHeightDp, o.screenWidthDp, o.screenHeightDp,
+ requested->screenWidthDp, requested->screenHeightDp, myDelta, otherDelta);
+ }
if (myDelta != otherDelta) {
return myDelta < otherDelta;
}
@@ -2404,11 +2470,17 @@ bool ResTable_config::match(const ResTable_config& settings) const {
}
if (screenSizeDp != 0) {
if (screenWidthDp != 0 && screenWidthDp > settings.screenWidthDp) {
- //ALOGI("Filtering out width %d in requested %d", screenWidthDp, settings.screenWidthDp);
+ if (kDebugTableSuperNoisy) {
+ ALOGI("Filtering out width %d in requested %d", screenWidthDp,
+ settings.screenWidthDp);
+ }
return false;
}
if (screenHeightDp != 0 && screenHeightDp > settings.screenHeightDp) {
- //ALOGI("Filtering out height %d in requested %d", screenHeightDp, settings.screenHeightDp);
+ if (kDebugTableSuperNoisy) {
+ ALOGI("Filtering out height %d in requested %d", screenHeightDp,
+ settings.screenHeightDp);
+ }
return false;
}
}
@@ -2428,9 +2500,13 @@ bool ResTable_config::match(const ResTable_config& settings) const {
// For compatibility, we count a request for KEYSHIDDEN_NO as also
// matching the more recent KEYSHIDDEN_SOFT. Basically
// KEYSHIDDEN_NO means there is some kind of keyboard available.
- //ALOGI("Matching keysHidden: have=%d, config=%d\n", keysHidden, setKeysHidden);
+ if (kDebugTableSuperNoisy) {
+ ALOGI("Matching keysHidden: have=%d, config=%d\n", keysHidden, setKeysHidden);
+ }
if (keysHidden != KEYSHIDDEN_NO || setKeysHidden != KEYSHIDDEN_SOFT) {
- //ALOGI("No match!");
+ if (kDebugTableSuperNoisy) {
+ ALOGI("No match!");
+ }
return false;
}
}
@@ -2935,17 +3011,25 @@ struct ResTable::PackageGroup
void clearBagCache() {
if (bags) {
- TABLE_NOISY(printf("bags=%p\n", bags));
+ if (kDebugTableNoisy) {
+ printf("bags=%p\n", bags);
+ }
for (size_t i = 0; i < bags->size(); i++) {
- TABLE_NOISY(printf("type=%d\n", i));
+ if (kDebugTableNoisy) {
+ printf("type=%zu\n", i);
+ }
const TypeList& typeList = types[i];
if (!typeList.isEmpty()) {
bag_set** typeBags = bags->get(i);
- TABLE_NOISY(printf("typeBags=%p\n", typeBags));
+ if (kDebugTableNoisy) {
+ printf("typeBags=%p\n", typeBags);
+ }
if (typeBags) {
const size_t N = typeList[0]->entryCount;
- TABLE_NOISY(printf("type->entryCount=%x\n", N));
- for (size_t j=0; j<N; j++) {
+ if (kDebugTableNoisy) {
+ printf("type->entryCount=%zu\n", N);
+ }
+ for (size_t j = 0; j < N; j++) {
if (typeBags[j] && typeBags[j] != (bag_set*)0xFFFFFFFF)
free(typeBags[j]);
}
@@ -3053,7 +3137,9 @@ status_t ResTable::Theme::applyStyle(uint32_t resID, bool force)
uint32_t bagTypeSpecFlags = 0;
mTable.lock();
const ssize_t N = mTable.getBagLocked(resID, &bag, &bagTypeSpecFlags);
- TABLE_NOISY(ALOGV("Applying style 0x%08x to theme %p, count=%d", resID, this, N));
+ if (kDebugTableNoisy) {
+ ALOGV("Applying style 0x%08x to theme %p, count=%zu", resID, this, N);
+ }
if (N < 0) {
mTable.unlock();
return N;
@@ -3084,7 +3170,6 @@ status_t ResTable::Theme::applyStyle(uint32_t resID, bool force)
curPackageIndex = pidx;
curPI = mPackages[pidx];
if (curPI == NULL) {
- PackageGroup* const grp = mTable.mPackageGroups[pidx];
curPI = (package_info*)malloc(sizeof(package_info));
memset(curPI, 0, sizeof(*curPI));
mPackages[pidx] = curPI;
@@ -3116,9 +3201,11 @@ status_t ResTable::Theme::applyStyle(uint32_t resID, bool force)
continue;
}
theme_entry* curEntry = curEntries + e;
- TABLE_NOISY(ALOGV("Attr 0x%08x: type=0x%x, data=0x%08x; curType=0x%x",
- attrRes, bag->map.value.dataType, bag->map.value.data,
- curEntry->value.dataType));
+ if (kDebugTableNoisy) {
+ ALOGV("Attr 0x%08x: type=0x%x, data=0x%08x; curType=0x%x",
+ attrRes, bag->map.value.dataType, bag->map.value.data,
+ curEntry->value.dataType);
+ }
if (force || curEntry->value.dataType == Res_value::TYPE_NULL) {
curEntry->stringBlock = bag->stringBlock;
curEntry->typeSpecFlags |= bagTypeSpecFlags;
@@ -3130,17 +3217,21 @@ status_t ResTable::Theme::applyStyle(uint32_t resID, bool force)
mTable.unlock();
- //ALOGI("Applying style 0x%08x (force=%d) theme %p...\n", resID, force, this);
- //dumpToLog();
+ if (kDebugTableTheme) {
+ ALOGI("Applying style 0x%08x (force=%d) theme %p...\n", resID, force, this);
+ dumpToLog();
+ }
return NO_ERROR;
}
status_t ResTable::Theme::setTo(const Theme& other)
{
- //ALOGI("Setting theme %p from theme %p...\n", this, &other);
- //dumpToLog();
- //other.dumpToLog();
+ if (kDebugTableTheme) {
+ ALOGI("Setting theme %p from theme %p...\n", this, &other);
+ dumpToLog();
+ other.dumpToLog();
+ }
if (&mTable == &other.mTable) {
for (size_t i=0; i<Res_MAXPACKAGE; i++) {
@@ -3169,8 +3260,10 @@ status_t ResTable::Theme::setTo(const Theme& other)
}
}
- //ALOGI("Final theme:");
- //dumpToLog();
+ if (kDebugTableTheme) {
+ ALOGI("Final theme:");
+ dumpToLog();
+ }
return NO_ERROR;
}
@@ -3187,23 +3280,33 @@ ssize_t ResTable::Theme::getAttribute(uint32_t resID, Res_value* outValue,
const uint32_t t = Res_GETTYPE(resID);
const uint32_t e = Res_GETENTRY(resID);
- TABLE_THEME(ALOGI("Looking up attr 0x%08x in theme %p", resID, this));
+ if (kDebugTableTheme) {
+ ALOGI("Looking up attr 0x%08x in theme %p", resID, this);
+ }
if (p >= 0) {
const package_info* const pi = mPackages[p];
- TABLE_THEME(ALOGI("Found package: %p", pi));
+ if (kDebugTableTheme) {
+ ALOGI("Found package: %p", pi);
+ }
if (pi != NULL) {
- TABLE_THEME(ALOGI("Desired type index is %ld in avail %d", t, Res_MAXTYPE + 1));
+ if (kDebugTableTheme) {
+ ALOGI("Desired type index is %zd in avail %zu", t, Res_MAXTYPE + 1);
+ }
if (t <= Res_MAXTYPE) {
const type_info& ti = pi->types[t];
- TABLE_THEME(ALOGI("Desired entry index is %ld in avail %d", e, ti.numEntries));
+ if (kDebugTableTheme) {
+ ALOGI("Desired entry index is %u in avail %zu", e, ti.numEntries);
+ }
if (e < ti.numEntries) {
const theme_entry& te = ti.entries[e];
if (outTypeSpecFlags != NULL) {
*outTypeSpecFlags |= te.typeSpecFlags;
}
- TABLE_THEME(ALOGI("Theme value: type=0x%x, data=0x%08x",
- te.value.dataType, te.value.data));
+ if (kDebugTableTheme) {
+ ALOGI("Theme value: type=0x%x, data=0x%08x",
+ te.value.dataType, te.value.data);
+ }
const uint8_t type = te.value.dataType;
if (type == Res_value::TYPE_ATTRIBUTE) {
if (cnt > 0) {
@@ -3237,8 +3340,10 @@ ssize_t ResTable::Theme::resolveAttributeReference(Res_value* inOutValue,
if (inOutValue->dataType == Res_value::TYPE_ATTRIBUTE) {
uint32_t newTypeSpecFlags;
blockIndex = getAttribute(inOutValue->data, inOutValue, &newTypeSpecFlags);
- TABLE_THEME(ALOGI("Resolving attr reference: blockIndex=%d, type=0x%x, data=%p\n",
- (int)blockIndex, (int)inOutValue->dataType, (void*)inOutValue->data));
+ if (kDebugTableTheme) {
+ ALOGI("Resolving attr reference: blockIndex=%d, type=0x%x, data=0x%x\n",
+ (int)blockIndex, (int)inOutValue->dataType, inOutValue->data);
+ }
if (inoutTypeSpecFlags != NULL) *inoutTypeSpecFlags |= newTypeSpecFlags;
//printf("Retrieved attribute new type=0x%x\n", inOutValue->dataType);
if (blockIndex < 0) {
@@ -3277,7 +3382,9 @@ ResTable::ResTable()
{
memset(&mParams, 0, sizeof(mParams));
memset(mPackageMap, 0, sizeof(mPackageMap));
- //ALOGI("Creating ResTable %p\n", this);
+ if (kDebugTableSuperNoisy) {
+ ALOGI("Creating ResTable %p\n", this);
+ }
}
ResTable::ResTable(const void* data, size_t size, const int32_t cookie, bool copyData)
@@ -3287,12 +3394,16 @@ ResTable::ResTable(const void* data, size_t size, const int32_t cookie, bool cop
memset(mPackageMap, 0, sizeof(mPackageMap));
addInternal(data, size, NULL, 0, cookie, copyData);
LOG_FATAL_IF(mError != NO_ERROR, "Error parsing resource table");
- //ALOGI("Creating ResTable %p\n", this);
+ if (kDebugTableSuperNoisy) {
+ ALOGI("Creating ResTable %p\n", this);
+ }
}
ResTable::~ResTable()
{
- //ALOGI("Destroying ResTable in %p\n", this);
+ if (kDebugTableSuperNoisy) {
+ ALOGI("Destroying ResTable in %p\n", this);
+ }
uninit();
}
@@ -3421,9 +3532,10 @@ status_t ResTable::addInternal(const void* data, size_t dataSize, const void* id
const bool notDeviceEndian = htods(0xf0) != 0xf0;
- LOAD_TABLE_NOISY(
- ALOGV("Adding resources to ResTable: data=%p, size=0x%x, cookie=%d, copy=%d "
- "idmap=%p\n", data, dataSize, cookie, copyData, idmap));
+ if (kDebugLoadTableNoisy) {
+ ALOGV("Adding resources to ResTable: data=%p, size=%zu, cookie=%d, copy=%d "
+ "idmap=%p\n", data, dataSize, cookie, copyData, idmapData);
+ }
if (copyData || notDeviceEndian) {
header->ownedData = malloc(dataSize);
@@ -3436,9 +3548,13 @@ status_t ResTable::addInternal(const void* data, size_t dataSize, const void* id
header->header = (const ResTable_header*)data;
header->size = dtohl(header->header->header.size);
- //ALOGI("Got size 0x%x, again size 0x%x, raw size 0x%x\n", header->size,
- // dtohl(header->header->header.size), header->header->header.size);
- LOAD_TABLE_NOISY(ALOGV("Loading ResTable @%p:\n", header->header));
+ if (kDebugLoadTableSuperNoisy) {
+ ALOGI("Got size %zu, again size 0x%x, raw size 0x%x\n", header->size,
+ dtohl(header->header->header.size), header->header->header.size);
+ }
+ if (kDebugLoadTableNoisy) {
+ ALOGV("Loading ResTable @%p:\n", header->header);
+ }
if (dtohs(header->header->header.headerSize) > header->size
|| header->size > dataSize) {
ALOGW("Bad resource table: header size 0x%x or total size 0x%x is larger than data size 0x%x\n",
@@ -3466,9 +3582,11 @@ status_t ResTable::addInternal(const void* data, size_t dataSize, const void* id
if (err != NO_ERROR) {
return (mError=err);
}
- TABLE_NOISY(ALOGV("Chunk: type=0x%x, headerSize=0x%x, size=0x%x, pos=%p\n",
- dtohs(chunk->type), dtohs(chunk->headerSize), dtohl(chunk->size),
- (void*)(((const uint8_t*)chunk) - ((const uint8_t*)header->header))));
+ if (kDebugTableNoisy) {
+ ALOGV("Chunk: type=0x%x, headerSize=0x%x, size=0x%x, pos=%p\n",
+ dtohs(chunk->type), dtohs(chunk->headerSize), dtohl(chunk->size),
+ (void*)(((const uint8_t*)chunk) - ((const uint8_t*)header->header)));
+ }
const size_t csize = dtohl(chunk->size);
const uint16_t ctype = dtohs(chunk->type);
if (ctype == RES_STRING_POOL_TYPE) {
@@ -3512,7 +3630,9 @@ status_t ResTable::addInternal(const void* data, size_t dataSize, const void* id
ALOGW("No string values found in resource table!");
}
- TABLE_NOISY(ALOGV("Returning from add with mError=%d\n", mError));
+ if (kDebugTableNoisy) {
+ ALOGV("Returning from add with mError=%d\n", mError);
+ }
return mError;
}
@@ -3674,15 +3794,16 @@ ssize_t ResTable::getResource(uint32_t resID, Res_value* outValue, bool mayBeBag
return BAD_VALUE;
}
- TABLE_NOISY(size_t len;
- printf("Found value: pkg=%d, type=%d, str=%s, int=%d\n",
- entry.package->header->index,
- outValue->dataType,
- outValue->dataType == Res_value::TYPE_STRING
- ? String8(entry.package->header->values.stringAt(
- outValue->data, &len)).string()
- : "",
- outValue->data));
+ if (kDebugTableNoisy) {
+ size_t len;
+ printf("Found value: pkg=%zu, type=%d, str=%s, int=%d\n",
+ entry.package->header->index,
+ outValue->dataType,
+ outValue->dataType == Res_value::TYPE_STRING ?
+ String8(entry.package->header->values.stringAt(outValue->data, &len)).string() :
+ "",
+ outValue->data);
+ }
if (outSpecFlags != NULL) {
*outSpecFlags = entry.specFlags;
@@ -3703,15 +3824,16 @@ ssize_t ResTable::resolveReference(Res_value* value, ssize_t blockIndex,
while (blockIndex >= 0 && value->dataType == Res_value::TYPE_REFERENCE
&& value->data != 0 && count < 20) {
if (outLastRef) *outLastRef = value->data;
- uint32_t lastRef = value->data;
uint32_t newFlags = 0;
const ssize_t newIndex = getResource(value->data, value, true, 0, &newFlags,
outConfig);
if (newIndex == BAD_INDEX) {
return BAD_INDEX;
}
- TABLE_THEME(ALOGI("Resolving reference %p: newIndex=%d, type=0x%x, data=%p\n",
- (void*)lastRef, (int)newIndex, (int)value->dataType, (void*)value->data));
+ if (kDebugTableTheme) {
+ ALOGI("Resolving reference 0x%x: newIndex=%d, type=0x%x, data=0x%x\n",
+ value->data, (int)newIndex, (int)value->dataType, value->data);
+ }
//printf("Getting reference 0x%08x: newIndex=%d\n", value->data, newIndex);
if (inoutTypeSpecFlags != NULL) *inoutTypeSpecFlags |= newFlags;
if (newIndex < 0) {
@@ -3818,7 +3940,9 @@ ssize_t ResTable::getBagLocked(uint32_t resID, const bag_entry** outBag,
*outTypeSpecFlags = set->typeSpecFlags;
}
*outBag = (bag_entry*)(set+1);
- //ALOGI("Found existing bag for: %p\n", (void*)resID);
+ if (kDebugTableSuperNoisy) {
+ ALOGI("Found existing bag for: 0x%x\n", resID);
+ }
return set->numAttrs;
}
ALOGW("Attempt to retrieve bag 0x%08x which is invalid or in a cycle.",
@@ -3844,7 +3968,9 @@ ssize_t ResTable::getBagLocked(uint32_t resID, const bag_entry** outBag,
// Mark that we are currently working on this one.
typeSet[e] = (bag_set*)0xFFFFFFFF;
- TABLE_NOISY(ALOGI("Building bag: %p\n", (void*)resID));
+ if (kDebugTableNoisy) {
+ ALOGI("Building bag: %x\n", resID);
+ }
// Now collect all bag attributes
Entry entry;
@@ -3861,13 +3987,13 @@ ssize_t ResTable::getBagLocked(uint32_t resID, const bag_entry** outBag,
size_t N = count;
- TABLE_NOISY(ALOGI("Found map: size=%p parent=%p count=%d\n",
- entrySize, parent, count));
+ if (kDebugTableNoisy) {
+ ALOGI("Found map: size=%x parent=%x count=%d\n", entrySize, parent, count);
// If this map inherits from another, we need to start
// with its parent's values. Otherwise start out empty.
- TABLE_NOISY(printf("Creating new bag, entrySize=0x%08x, parent=0x%08x\n",
- entrySize, parent));
+ ALOGI("Creating new bag, entrySize=0x%08x, parent=0x%08x\n", entrySize, parent);
+ }
// This is what we are building.
bag_set* set = NULL;
@@ -3896,9 +4022,13 @@ ssize_t ResTable::getBagLocked(uint32_t resID, const bag_entry** outBag,
if (NP > 0) {
memcpy(set+1, parentBag, NP*sizeof(bag_entry));
set->numAttrs = NP;
- TABLE_NOISY(ALOGI("Initialized new bag with %d inherited attributes.\n", NP));
+ if (kDebugTableNoisy) {
+ ALOGI("Initialized new bag with %zd inherited attributes.\n", NP);
+ }
} else {
- TABLE_NOISY(ALOGI("Initialized new bag with no inherited attributes.\n"));
+ if (kDebugTableNoisy) {
+ ALOGI("Initialized new bag with no inherited attributes.\n");
+ }
set->numAttrs = 0;
}
set->availAttrs = NT;
@@ -3922,10 +4052,13 @@ ssize_t ResTable::getBagLocked(uint32_t resID, const bag_entry** outBag,
bag_entry* entries = (bag_entry*)(set+1);
size_t curEntry = 0;
uint32_t pos = 0;
- TABLE_NOISY(ALOGI("Starting with set %p, entries=%p, avail=%d\n",
- set, entries, set->availAttrs));
+ if (kDebugTableNoisy) {
+ ALOGI("Starting with set %p, entries=%p, avail=%zu\n", set, entries, set->availAttrs);
+ }
while (pos < count) {
- TABLE_NOISY(printf("Now at %p\n", (void*)curOff));
+ if (kDebugTableNoisy) {
+ ALOGI("Now at %p\n", (void*)curOff);
+ }
if (curOff > (dtohl(entry.type->header.size)-sizeof(ResTable_map))) {
ALOGW("ResTable_map at %d is beyond type chunk data %d",
@@ -3950,8 +4083,10 @@ ssize_t ResTable::getBagLocked(uint32_t resID, const bag_entry** outBag,
uint32_t oldName = 0;
while ((isInside=(curEntry < set->numAttrs))
&& (oldName=entries[curEntry].map.name.ident) < newName) {
- TABLE_NOISY(printf("#%d: Keeping existing attribute: 0x%08x\n",
- curEntry, entries[curEntry].map.name.ident));
+ if (kDebugTableNoisy) {
+ ALOGI("#%zu: Keeping existing attribute: 0x%08x\n",
+ curEntry, entries[curEntry].map.name.ident);
+ }
curEntry++;
}
@@ -3968,8 +4103,10 @@ ssize_t ResTable::getBagLocked(uint32_t resID, const bag_entry** outBag,
}
set->availAttrs = newAvail;
entries = (bag_entry*)(set+1);
- TABLE_NOISY(printf("Reallocated set %p, entries=%p, avail=%d\n",
- set, entries, set->availAttrs));
+ if (kDebugTableNoisy) {
+ ALOGI("Reallocated set %p, entries=%p, avail=%zu\n",
+ set, entries, set->availAttrs);
+ }
}
if (isInside) {
// Going in the middle, need to make space.
@@ -3977,11 +4114,13 @@ ssize_t ResTable::getBagLocked(uint32_t resID, const bag_entry** outBag,
sizeof(bag_entry)*(set->numAttrs-curEntry));
set->numAttrs++;
}
- TABLE_NOISY(printf("#%d: Inserting new attribute: 0x%08x\n",
- curEntry, newName));
+ if (kDebugTableNoisy) {
+ ALOGI("#%zu: Inserting new attribute: 0x%08x\n", curEntry, newName);
+ }
} else {
- TABLE_NOISY(printf("#%d: Replacing existing attribute: 0x%08x\n",
- curEntry, oldName));
+ if (kDebugTableNoisy) {
+ ALOGI("#%zu: Replacing existing attribute: 0x%08x\n", curEntry, oldName);
+ }
}
bag_entry* cur = entries+curEntry;
@@ -3995,9 +4134,11 @@ ssize_t ResTable::getBagLocked(uint32_t resID, const bag_entry** outBag,
return UNKNOWN_ERROR;
}
- TABLE_NOISY(printf("Setting entry #%d %p: block=%d, name=0x%08x, type=%d, data=0x%08x\n",
- curEntry, cur, cur->stringBlock, cur->map.name.ident,
- cur->map.value.dataType, cur->map.value.data));
+ if (kDebugTableNoisy) {
+ ALOGI("Setting entry #%zu %p: block=%zd, name=0x%08d, type=%d, data=0x%08x\n",
+ curEntry, cur, cur->stringBlock, cur->map.name.ident,
+ cur->map.value.dataType, cur->map.value.data);
+ }
// On to the next!
curEntry++;
@@ -4017,7 +4158,9 @@ ssize_t ResTable::getBagLocked(uint32_t resID, const bag_entry** outBag,
*outTypeSpecFlags = set->typeSpecFlags;
}
*outBag = (bag_entry*)(set+1);
- TABLE_NOISY(ALOGI("Returning %d attrs\n", set->numAttrs));
+ if (kDebugTableNoisy) {
+ ALOGI("Returning %zu attrs\n", set->numAttrs);
+ }
return set->numAttrs;
}
return BAD_INDEX;
@@ -4026,10 +4169,14 @@ ssize_t ResTable::getBagLocked(uint32_t resID, const bag_entry** outBag,
void ResTable::setParameters(const ResTable_config* params)
{
mLock.lock();
- TABLE_GETENTRY(ALOGI("Setting parameters: %s\n", params->toString().string()));
+ if (kDebugTableGetEntry) {
+ ALOGI("Setting parameters: %s\n", params->toString().string());
+ }
mParams = *params;
for (size_t i=0; i<mPackageGroups.size(); i++) {
- TABLE_NOISY(ALOGI("CLEARING BAGS FOR GROUP %d!", i));
+ if (kDebugTableNoisy) {
+ ALOGI("CLEARING BAGS FOR GROUP %zu!", i);
+ }
mPackageGroups[i]->clearBagCache();
}
mLock.unlock();
@@ -4067,7 +4214,9 @@ uint32_t ResTable::identifierForName(const char16_t* name, size_t nameLen,
size_t packageLen,
uint32_t* outTypeSpecFlags) const
{
- TABLE_SUPER_NOISY(printf("Identifier for name: error=%d\n", mError));
+ if (kDebugTableSuperNoisy) {
+ printf("Identifier for name: error=%d\n", mError);
+ }
// Check for internal resource identifier as the very first thing, so
// that we will always find them even when there are no resources.
@@ -4160,10 +4309,12 @@ nope:
}
nameLen = nameEnd-name;
- TABLE_NOISY(printf("Looking for identifier: type=%s, name=%s, package=%s\n",
- String8(type, typeLen).string(),
- String8(name, nameLen).string(),
- String8(package, packageLen).string()));
+ if (kDebugTableNoisy) {
+ printf("Looking for identifier: type=%s, name=%s, package=%s\n",
+ String8(type, typeLen).string(),
+ String8(name, nameLen).string(),
+ String8(package, packageLen).string());
+ }
const size_t NG = mPackageGroups.size();
for (size_t ig=0; ig<NG; ig++) {
@@ -4171,7 +4322,9 @@ nope:
if (strzcmp16(package, packageLen,
group->name.string(), group->name.size())) {
- TABLE_NOISY(printf("Skipping package group: %s\n", String8(group->name).string()));
+ if (kDebugTableNoisy) {
+ printf("Skipping package group: %s\n", String8(group->name).string());
+ }
continue;
}
@@ -4186,8 +4339,10 @@ nope:
const TypeList& typeList = group->types[ti];
if (typeList.isEmpty()) {
- TABLE_NOISY(printf("Expected type structure not found in package %s for index %d\n",
- String8(group->name).string(), ti));
+ if (kDebugTableNoisy) {
+ ALOGI("Expected type structure not found in package %s for index %zd\n",
+ String8(group->name).string(), ti);
+ }
continue;
}
@@ -4686,9 +4841,11 @@ bool ResTable::stringToValue(Res_value* outValue, String16* outString,
rid = Res_MAKEID(
accessor->getRemappedPackage(Res_GETPACKAGE(rid)),
Res_GETTYPE(rid), Res_GETENTRY(rid));
- TABLE_NOISY(printf("Incl %s:%s/%s: 0x%08x\n",
- String8(package).string(), String8(type).string(),
- String8(name).string(), rid));
+ if (kDebugTableNoisy) {
+ ALOGI("Incl %s:%s/%s: 0x%08x\n",
+ String8(package).string(), String8(type).string(),
+ String8(name).string(), rid);
+ }
}
uint32_t packageId = Res_GETPACKAGE(rid) + 1;
@@ -4703,9 +4860,11 @@ bool ResTable::stringToValue(Res_value* outValue, String16* outString,
uint32_t rid = accessor->getCustomResourceWithCreation(package, type, name,
createIfNotFound);
if (rid != 0) {
- TABLE_NOISY(printf("Pckg %s:%s/%s: 0x%08x\n",
- String8(package).string(), String8(type).string(),
- String8(name).string(), rid));
+ if (kDebugTableNoisy) {
+ ALOGI("Pckg %s:%s/%s: 0x%08x\n",
+ String8(package).string(), String8(type).string(),
+ String8(name).string(), rid);
+ }
uint32_t packageId = Res_GETPACKAGE(rid) + 1;
if (packageId == 0x00) {
outValue->data = rid;
@@ -5508,8 +5667,6 @@ status_t ResTable::getEntry(
}
// Check if there is the desired entry in this type.
- const uint8_t* const end = reinterpret_cast<const uint8_t*>(thisType)
- + dtohl(thisType->header.size);
const uint32_t* const eindex = reinterpret_cast<const uint32_t*>(
reinterpret_cast<const uint8_t*>(thisType) + dtohs(thisType->header.headerSize));
@@ -5698,9 +5855,11 @@ status_t ResTable::parsePackage(const ResTable_package* const pkg,
const uint8_t* endPos = ((const uint8_t*)pkg) + dtohs(pkg->header.size);
while (((const uint8_t*)chunk) <= (endPos-sizeof(ResChunk_header)) &&
((const uint8_t*)chunk) <= (endPos-dtohl(chunk->size))) {
- TABLE_NOISY(ALOGV("PackageChunk: type=0x%x, headerSize=0x%x, size=0x%x, pos=%p\n",
- dtohs(chunk->type), dtohs(chunk->headerSize), dtohl(chunk->size),
- (void*)(((const uint8_t*)chunk) - ((const uint8_t*)header->header))));
+ if (kDebugTableNoisy) {
+ ALOGV("PackageChunk: type=0x%x, headerSize=0x%x, size=0x%x, pos=%p\n",
+ dtohs(chunk->type), dtohs(chunk->headerSize), dtohl(chunk->size),
+ (void*)(((const uint8_t*)chunk) - ((const uint8_t*)header->header)));
+ }
const size_t csize = dtohl(chunk->size);
const uint16_t ctype = dtohs(chunk->type);
if (ctype == RES_TABLE_TYPE_SPEC_TYPE) {
@@ -5714,11 +5873,13 @@ status_t ResTable::parsePackage(const ResTable_package* const pkg,
const size_t typeSpecSize = dtohl(typeSpec->header.size);
const size_t newEntryCount = dtohl(typeSpec->entryCount);
- LOAD_TABLE_NOISY(printf("TypeSpec off %p: type=0x%x, headerSize=0x%x, size=%p\n",
- (void*)(base-(const uint8_t*)chunk),
- dtohs(typeSpec->header.type),
- dtohs(typeSpec->header.headerSize),
- (void*)typeSpecSize));
+ if (kDebugLoadTableNoisy) {
+ ALOGI("TypeSpec off %p: type=0x%x, headerSize=0x%x, size=%p\n",
+ (void*)(base-(const uint8_t*)chunk),
+ dtohs(typeSpec->header.type),
+ dtohs(typeSpec->header.headerSize),
+ (void*)typeSpecSize);
+ }
// look for block overrun or int overflow when multiplying by 4
if ((dtohl(typeSpec->entryCount) > (INT32_MAX/sizeof(uint32_t))
|| dtohs(typeSpec->header.headerSize)+(sizeof(uint32_t)*newEntryCount)
@@ -5776,13 +5937,14 @@ status_t ResTable::parsePackage(const ResTable_package* const pkg,
const uint32_t typeSize = dtohl(type->header.size);
const size_t newEntryCount = dtohl(type->entryCount);
- LOAD_TABLE_NOISY(printf("Type off %p: type=0x%x, headerSize=0x%x, size=%p\n",
- (void*)(base-(const uint8_t*)chunk),
- dtohs(type->header.type),
- dtohs(type->header.headerSize),
- (void*)typeSize));
- if (dtohs(type->header.headerSize)+(sizeof(uint32_t)*newEntryCount)
- > typeSize) {
+ if (kDebugLoadTableNoisy) {
+ printf("Type off %p: type=0x%x, headerSize=0x%x, size=%u\n",
+ (void*)(base-(const uint8_t*)chunk),
+ dtohs(type->header.type),
+ dtohs(type->header.headerSize),
+ typeSize);
+ }
+ if (dtohs(type->header.headerSize)+(sizeof(uint32_t)*newEntryCount) > typeSize) {
ALOGW("ResTable_type entry index to %p extends beyond chunk end 0x%x.",
(void*)(dtohs(type->header.headerSize) + (sizeof(uint32_t)*newEntryCount)),
typeSize);
@@ -5828,11 +5990,12 @@ status_t ResTable::parsePackage(const ResTable_package* const pkg,
t->configs.add(type);
- TABLE_GETENTRY(
+ if (kDebugTableGetEntry) {
ResTable_config thisConfig;
thisConfig.copyFromDtoH(type->config);
- ALOGI("Adding config to type %d: %s\n",
- type->id, thisConfig.toString().string()));
+ ALOGI("Adding config to type %d: %s\n", type->id,
+ thisConfig.toString().string());
+ }
} else {
ALOGV("Skipping empty ResTable_type for type %d", type->id);
}
@@ -5893,8 +6056,10 @@ status_t DynamicRefTable::load(const ResTable_lib_header* const header)
uint32_t packageId = dtohl(entry->packageId);
char16_t tmpName[sizeof(entry->packageName) / sizeof(char16_t)];
strcpy16_dtoh(tmpName, entry->packageName, sizeof(entry->packageName) / sizeof(char16_t));
- LIB_NOISY(ALOGV("Found lib entry %s with id %d\n", String8(tmpName).string(),
- dtohl(entry->packageId)));
+ if (kDebugLibNoisy) {
+ ALOGV("Found lib entry %s with id %d\n", String8(tmpName).string(),
+ dtohl(entry->packageId));
+ }
if (packageId >= 256) {
ALOGE("Bad package id 0x%08x", packageId);
return UNKNOWN_ERROR;
@@ -6074,7 +6239,7 @@ status_t ResTable::createIdmap(const ResTable& overlay,
if (Res_GETTYPE(overlayResID) + 1 != static_cast<size_t>(typeMap.overlayTypeId)) {
ALOGE("idmap: can't mix type ids in entry map. Resource 0x%08x maps to 0x%08x"
- " but entries should map to resources of type %02x",
+ " but entries should map to resources of type %02zx",
resID, overlayResID, typeMap.overlayTypeId);
return BAD_TYPE;
}
@@ -6401,9 +6566,6 @@ void ResTable::print(bool inclValues) const
continue;
}
for (size_t entryIndex=0; entryIndex<entryCount; entryIndex++) {
-
- const uint8_t* const end = ((const uint8_t*)type)
- + dtohl(type->header.size);
const uint32_t* const eindex = (const uint32_t*)
(((const uint8_t*)type) + dtohs(type->header.headerSize));
diff --git a/libs/androidfw/StreamingZipInflater.cpp b/libs/androidfw/StreamingZipInflater.cpp
index 1dfec23..b39b5f0 100644
--- a/libs/androidfw/StreamingZipInflater.cpp
+++ b/libs/androidfw/StreamingZipInflater.cpp
@@ -41,6 +41,8 @@
_rc; })
#endif
+static const bool kIsDebug = false;
+
static inline size_t min_of(size_t a, size_t b) { return (a < b) ? a : b; }
using namespace android;
@@ -209,7 +211,9 @@ int StreamingZipInflater::readNextChunk() {
size_t toRead = min_of(mInBufSize, mInTotalSize - mInNextChunkOffset);
if (toRead > 0) {
ssize_t didRead = TEMP_FAILURE_RETRY(::read(mFd, mInBuf, toRead));
- //ALOGV("Reading input chunk, size %08x didread %08x", toRead, didRead);
+ if (kIsDebug) {
+ ALOGV("Reading input chunk, size %08zx didread %08zx", toRead, didRead);
+ }
if (didRead < 0) {
ALOGE("Error reading asset data: %s", strerror(errno));
return didRead;
diff --git a/libs/androidfw/ZipFileRO.cpp b/libs/androidfw/ZipFileRO.cpp
index 5f6e831..ef0d072 100644
--- a/libs/androidfw/ZipFileRO.cpp
+++ b/libs/androidfw/ZipFileRO.cpp
@@ -34,14 +34,6 @@
#include <assert.h>
#include <unistd.h>
-/*
- * We must open binary files using open(path, ... | O_BINARY) under Windows.
- * Otherwise strange read errors will happen.
- */
-#ifndef O_BINARY
-# define O_BINARY 0
-#endif
-
using namespace android;
class _ZipEntryRO {
diff --git a/libs/androidfw/tests/Android.mk b/libs/androidfw/tests/Android.mk
index 597250a..8aaa887 100644
--- a/libs/androidfw/tests/Android.mk
+++ b/libs/androidfw/tests/Android.mk
@@ -37,12 +37,16 @@ include $(CLEAR_VARS)
LOCAL_MODULE := libandroidfw_tests
+LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
+# gtest is broken.
+LOCAL_CFLAGS += -Wno-unnamed-type-template-args
+
LOCAL_SRC_FILES := $(testFiles)
LOCAL_STATIC_LIBRARIES := \
libandroidfw \
libutils \
libcutils \
- liblog
+ liblog
include $(BUILD_HOST_NATIVE_TEST)
@@ -54,6 +58,10 @@ include $(CLEAR_VARS)
LOCAL_MODULE := libandroidfw_tests
+LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
+# gtest is broken.
+LOCAL_CFLAGS += -Wno-unnamed-type-template-args
+
LOCAL_SRC_FILES := $(testFiles) \
BackupData_test.cpp \
ObbFile_test.cpp