diff options
| -rw-r--r-- | NOTICE | 20 | ||||
| -rw-r--r-- | include/utils/ResourceTypes.h | 1 | ||||
| -rw-r--r-- | libs/utils/ResourceTypes.cpp | 36 | ||||
| -rw-r--r-- | libs/utils/Threads.cpp | 1 |
4 files changed, 46 insertions, 12 deletions
@@ -56,16 +56,6 @@ the Apache2 License. ========================================================================= == NOTICE file corresponding to the section 4 d of == == the Apache License, Version 2.0, == - == in this case for Additional Codecs code. == - ========================================================================= - -Additional Codecs -These files are Copyright 2003-2010 VisualOn, but released under -the Apache2 License. - - ========================================================================= - == NOTICE file corresponding to the section 4 d of == - == the Apache License, Version 2.0, == == in this case for the TagSoup code. == ========================================================================= @@ -82,6 +72,16 @@ is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied; not even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + ========================================================================= + == NOTICE file corresponding to the section 4 d of == + == the Apache License, Version 2.0, == + == in this case for Additional Codecs code. == + ========================================================================= + +Additional Codecs +These files are Copyright 2003-2010 VisualOn, but released under +the Apache2 License. + ========================================================================= == NOTICE file corresponding to the section 4 d of == == the Apache License, Version 2.0, == diff --git a/include/utils/ResourceTypes.h b/include/utils/ResourceTypes.h index ed7f53d171..6227f3e928 100644 --- a/include/utils/ResourceTypes.h +++ b/include/utils/ResourceTypes.h @@ -1985,6 +1985,7 @@ public: #ifndef HAVE_ANDROID_OS void print(bool inclValues) const; + static String8 normalizeForOutput(const char* input); #endif private: diff --git a/libs/utils/ResourceTypes.cpp b/libs/utils/ResourceTypes.cpp index 73ff2302d9..7197ad7a2b 100644 --- a/libs/utils/ResourceTypes.cpp +++ b/libs/utils/ResourceTypes.cpp @@ -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"); } diff --git a/libs/utils/Threads.cpp b/libs/utils/Threads.cpp index ad9a94f594..b1bd828443 100644 --- a/libs/utils/Threads.cpp +++ b/libs/utils/Threads.cpp @@ -778,6 +778,7 @@ int Thread::_threadLoop(void* user) // called by a new thread using the same thread ID as this one. self->mThread = thread_id_t(-1); self->mThreadExitedCondition.broadcast(); + self->mThread = thread_id_t(-1); // thread id could be reused self->mLock.unlock(); break; } |