Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73431999 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android Code Review
Browse files

Merge "Normalize output from aapt d"

parents 141ef82d ca6fca93
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1983,6 +1983,7 @@ public:

#ifndef HAVE_ANDROID_OS
    void print(bool inclValues) const;
    static String8 normalizeForOutput(const char* input);
#endif

private:
+34 −2
Original line number Diff line number Diff line
@@ -4038,6 +4038,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) {
@@ -4051,13 +4083,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");
            }