Normalize output from aapt d
Make the output from aapt dump --values resources and aapt dump xmltree normalized, so that it is unambigously displayed regardless of the content of the strings. Change-Id: Ia3bff36c4ee1e9a44f474534e154830948beabdf
This commit is contained in:
parent
8659f0be9a
commit
b69f49bab9
|
@ -1985,6 +1985,7 @@ public:
|
|||
|
||||
#ifndef HAVE_ANDROID_OS
|
||||
void print(bool inclValues) const;
|
||||
static String8 normalizeForOutput(const char* input);
|
||||
#endif
|
||||
|
||||
private:
|
||||
|
|
|
@ -4141,6 +4141,38 @@ void print_complex(uint32_t complex, bool isFraction)
|
|||
}
|
||||
}
|
||||
|
||||
// Normalize a string for output
|
||||
String8 ResTable::normalizeForOutput( const char *input )
|
||||
{
|
||||
String8 ret;
|
||||
char buff[2];
|
||||
buff[1] = '\0';
|
||||
|
||||
while (*input != '\0') {
|
||||
switch (*input) {
|
||||
// All interesting characters are in the ASCII zone, so we are making our own lives
|
||||
// easier by scanning the string one byte at a time.
|
||||
case '\\':
|
||||
ret += "\\\\";
|
||||
break;
|
||||
case '\n':
|
||||
ret += "\\n";
|
||||
break;
|
||||
case '"':
|
||||
ret += "\\\"";
|
||||
break;
|
||||
default:
|
||||
buff[0] = *input;
|
||||
ret += buff;
|
||||
break;
|
||||
}
|
||||
|
||||
input++;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void ResTable::print_value(const Package* pkg, const Res_value& value) const
|
||||
{
|
||||
if (value.dataType == Res_value::TYPE_NULL) {
|
||||
|
@ -4154,13 +4186,13 @@ void ResTable::print_value(const Package* pkg, const Res_value& value) const
|
|||
const char* str8 = pkg->header->values.string8At(
|
||||
value.data, &len);
|
||||
if (str8 != NULL) {
|
||||
printf("(string8) \"%s\"\n", str8);
|
||||
printf("(string8) \"%s\"\n", normalizeForOutput(str8).string());
|
||||
} else {
|
||||
const char16_t* str16 = pkg->header->values.stringAt(
|
||||
value.data, &len);
|
||||
if (str16 != NULL) {
|
||||
printf("(string16) \"%s\"\n",
|
||||
String8(str16, len).string());
|
||||
normalizeForOutput(String8(str16, len).string()).string());
|
||||
} else {
|
||||
printf("(string) null\n");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue