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

Commit cbce59c4 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Use String8/16 c_str [input]" into main am: 201fb01c

parents ff13cd5c 201fb01c
Loading
Loading
Loading
Loading
+58 −67
Original line number Diff line number Diff line
@@ -209,7 +209,7 @@ status_t KeyCharacterMap::load(Tokenizer* tokenizer, Format format) {
#if DEBUG_PARSER_PERFORMANCE
    nsecs_t elapsedTime = systemTime(SYSTEM_TIME_MONOTONIC) - startTime;
    ALOGD("Parsed key character map file '%s' %d lines in %0.3fms.",
          tokenizer->getFilename().string(), tokenizer->getLineNumber(), elapsedTime / 1000000.0);
          tokenizer->getFilename().c_str(), tokenizer->getLineNumber(), elapsedTime / 1000000.0);
#endif
    if (status != OK) {
        ALOGE("Loading KeyCharacterMap failed with status %s", statusToString(status).c_str());
@@ -363,8 +363,8 @@ char16_t KeyCharacterMap::getMatch(int32_t keyCode, const char16_t* chars, size_
    ExactMatch: ;
    }
#if DEBUG_MAPPING
    ALOGD("getMatch: keyCode=%d, chars=[%s], metaState=0x%08x ~ Result %d.",
            keyCode, toString(chars, numChars).string(), metaState, result);
    ALOGD("getMatch: keyCode=%d, chars=[%s], metaState=0x%08x ~ Result %d.", keyCode,
          toString(chars, numChars).c_str(), metaState, result);
#endif
    return result;
}
@@ -379,7 +379,7 @@ bool KeyCharacterMap::getEvents(int32_t deviceId, const char16_t* chars, size_t
        if (!findKey(ch, &keyCode, &metaState)) {
#if DEBUG_MAPPING
            ALOGD("getEvents: deviceId=%d, chars=[%s] ~ Failed to find mapping for character %d.",
                    deviceId, toString(chars, numChars).string(), ch);
                  deviceId, toString(chars, numChars).c_str(), ch);
#endif
            return false;
        }
@@ -391,8 +391,8 @@ bool KeyCharacterMap::getEvents(int32_t deviceId, const char16_t* chars, size_t
        addMetaKeys(outEvents, deviceId, metaState, false, now, &currentMetaState);
    }
#if DEBUG_MAPPING
    ALOGD("getEvents: deviceId=%d, chars=[%s] ~ Generated %d events.",
            deviceId, toString(chars, numChars).string(), int32_t(outEvents.size()));
    ALOGD("getEvents: deviceId=%d, chars=[%s] ~ Generated %d events.", deviceId,
          toString(chars, numChars).c_str(), int32_t(outEvents.size()));
    for (size_t i = 0; i < outEvents.size(); i++) {
        ALOGD("  Key: keyCode=%d, metaState=0x%08x, %s.",
                outEvents[i].getKeyCode(), outEvents[i].getMetaState(),
@@ -849,8 +849,8 @@ KeyCharacterMap::Parser::~Parser() {
status_t KeyCharacterMap::Parser::parse() {
    while (!mTokenizer->isEof()) {
#if DEBUG_PARSER
        ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().string(),
                mTokenizer->peekRemainderOfLine().string());
        ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().c_str(),
              mTokenizer->peekRemainderOfLine().c_str());
#endif

        mTokenizer->skipDelimiters(WHITESPACE);
@@ -872,8 +872,8 @@ status_t KeyCharacterMap::Parser::parse() {
                    status_t status = parseKey();
                    if (status) return status;
                } else {
                    ALOGE("%s: Expected keyword, got '%s'.", mTokenizer->getLocation().string(),
                            keywordToken.string());
                    ALOGE("%s: Expected keyword, got '%s'.", mTokenizer->getLocation().c_str(),
                          keywordToken.c_str());
                    return BAD_VALUE;
                }
                break;
@@ -889,8 +889,7 @@ status_t KeyCharacterMap::Parser::parse() {
            mTokenizer->skipDelimiters(WHITESPACE);
            if (!mTokenizer->isEol() && mTokenizer->peekChar() != '#') {
                ALOGE("%s: Expected end of line or trailing comment, got '%s'.",
                        mTokenizer->getLocation().string(),
                        mTokenizer->peekRemainderOfLine().string());
                      mTokenizer->getLocation().c_str(), mTokenizer->peekRemainderOfLine().c_str());
                return BAD_VALUE;
            }
        }
@@ -900,27 +899,27 @@ status_t KeyCharacterMap::Parser::parse() {

    if (mState != STATE_TOP) {
        ALOGE("%s: Unterminated key description at end of file.",
                mTokenizer->getLocation().string());
              mTokenizer->getLocation().c_str());
        return BAD_VALUE;
    }

    if (mMap->mType == KeyboardType::UNKNOWN) {
        ALOGE("%s: Keyboard layout missing required keyboard 'type' declaration.",
                mTokenizer->getLocation().string());
              mTokenizer->getLocation().c_str());
        return BAD_VALUE;
    }

    if (mFormat == Format::BASE) {
        if (mMap->mType == KeyboardType::OVERLAY) {
            ALOGE("%s: Base keyboard layout must specify a keyboard 'type' other than 'OVERLAY'.",
                    mTokenizer->getLocation().string());
                  mTokenizer->getLocation().c_str());
            return BAD_VALUE;
        }
    } else if (mFormat == Format::OVERLAY) {
        if (mMap->mType != KeyboardType::OVERLAY) {
            ALOGE("%s: Overlay keyboard layout missing required keyboard "
                  "'type OVERLAY' declaration.",
                    mTokenizer->getLocation().string());
                  mTokenizer->getLocation().c_str());
            return BAD_VALUE;
        }
    }
@@ -930,8 +929,7 @@ status_t KeyCharacterMap::Parser::parse() {

status_t KeyCharacterMap::Parser::parseType() {
    if (mMap->mType != KeyboardType::UNKNOWN) {
        ALOGE("%s: Duplicate keyboard 'type' declaration.",
                mTokenizer->getLocation().string());
        ALOGE("%s: Duplicate keyboard 'type' declaration.", mTokenizer->getLocation().c_str());
        return BAD_VALUE;
    }

@@ -953,8 +951,8 @@ status_t KeyCharacterMap::Parser::parseType() {
    } else if (typeToken == "OVERLAY") {
        type = KeyboardType::OVERLAY;
    } else {
        ALOGE("%s: Expected keyboard type label, got '%s'.", mTokenizer->getLocation().string(),
                typeToken.string());
        ALOGE("%s: Expected keyboard type label, got '%s'.", mTokenizer->getLocation().c_str(),
              typeToken.c_str());
        return BAD_VALUE;
    }

@@ -971,8 +969,8 @@ status_t KeyCharacterMap::Parser::parseMap() {
        mTokenizer->skipDelimiters(WHITESPACE);
        return parseMapKey();
    }
    ALOGE("%s: Expected keyword after 'map', got '%s'.", mTokenizer->getLocation().string(),
            keywordToken.string());
    ALOGE("%s: Expected keyword after 'map', got '%s'.", mTokenizer->getLocation().c_str(),
          keywordToken.c_str());
    return BAD_VALUE;
}

@@ -986,26 +984,26 @@ status_t KeyCharacterMap::Parser::parseMapKey() {
    }

    char* end;
    int32_t code = int32_t(strtol(codeToken.string(), &end, 0));
    int32_t code = int32_t(strtol(codeToken.c_str(), &end, 0));
    if (*end) {
        ALOGE("%s: Expected key %s number, got '%s'.", mTokenizer->getLocation().string(),
                mapUsage ? "usage" : "scan code", codeToken.string());
        ALOGE("%s: Expected key %s number, got '%s'.", mTokenizer->getLocation().c_str(),
              mapUsage ? "usage" : "scan code", codeToken.c_str());
        return BAD_VALUE;
    }
    KeyedVector<int32_t, int32_t>& map =
            mapUsage ? mMap->mKeysByUsageCode : mMap->mKeysByScanCode;
    if (map.indexOfKey(code) >= 0) {
        ALOGE("%s: Duplicate entry for key %s '%s'.", mTokenizer->getLocation().string(),
                mapUsage ? "usage" : "scan code", codeToken.string());
        ALOGE("%s: Duplicate entry for key %s '%s'.", mTokenizer->getLocation().c_str(),
              mapUsage ? "usage" : "scan code", codeToken.c_str());
        return BAD_VALUE;
    }

    mTokenizer->skipDelimiters(WHITESPACE);
    String8 keyCodeToken = mTokenizer->nextToken(WHITESPACE);
    int32_t keyCode = InputEventLookup::getKeyCodeByLabel(keyCodeToken.string());
    int32_t keyCode = InputEventLookup::getKeyCodeByLabel(keyCodeToken.c_str());
    if (!keyCode) {
        ALOGE("%s: Expected key code label, got '%s'.", mTokenizer->getLocation().string(),
                keyCodeToken.string());
        ALOGE("%s: Expected key code label, got '%s'.", mTokenizer->getLocation().c_str(),
              keyCodeToken.c_str());
        return BAD_VALUE;
    }

@@ -1019,23 +1017,23 @@ status_t KeyCharacterMap::Parser::parseMapKey() {

status_t KeyCharacterMap::Parser::parseKey() {
    String8 keyCodeToken = mTokenizer->nextToken(WHITESPACE);
    int32_t keyCode = InputEventLookup::getKeyCodeByLabel(keyCodeToken.string());
    int32_t keyCode = InputEventLookup::getKeyCodeByLabel(keyCodeToken.c_str());
    if (!keyCode) {
        ALOGE("%s: Expected key code label, got '%s'.", mTokenizer->getLocation().string(),
                keyCodeToken.string());
        ALOGE("%s: Expected key code label, got '%s'.", mTokenizer->getLocation().c_str(),
              keyCodeToken.c_str());
        return BAD_VALUE;
    }
    if (mMap->mKeys.indexOfKey(keyCode) >= 0) {
        ALOGE("%s: Duplicate entry for key code '%s'.", mTokenizer->getLocation().string(),
                keyCodeToken.string());
        ALOGE("%s: Duplicate entry for key code '%s'.", mTokenizer->getLocation().c_str(),
              keyCodeToken.c_str());
        return BAD_VALUE;
    }

    mTokenizer->skipDelimiters(WHITESPACE);
    String8 openBraceToken = mTokenizer->nextToken(WHITESPACE);
    if (openBraceToken != "{") {
        ALOGE("%s: Expected '{' after key code label, got '%s'.",
                mTokenizer->getLocation().string(), openBraceToken.string());
        ALOGE("%s: Expected '{' after key code label, got '%s'.", mTokenizer->getLocation().c_str(),
              openBraceToken.c_str());
        return BAD_VALUE;
    }

@@ -1066,10 +1064,10 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() {
            properties.add(Property(PROPERTY_NUMBER));
        } else {
            int32_t metaState;
            status_t status = parseModifier(token.string(), &metaState);
            status_t status = parseModifier(token.c_str(), &metaState);
            if (status) {
                ALOGE("%s: Expected a property name or modifier, got '%s'.",
                        mTokenizer->getLocation().string(), token.string());
                      mTokenizer->getLocation().c_str(), token.c_str());
                return status;
            }
            properties.add(Property(PROPERTY_META, metaState));
@@ -1087,8 +1085,7 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() {
            }
        }

        ALOGE("%s: Expected ',' or ':' after property name.",
                mTokenizer->getLocation().string());
        ALOGE("%s: Expected ',' or ':' after property name.", mTokenizer->getLocation().c_str());
        return BAD_VALUE;
    }

@@ -1106,18 +1103,17 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() {
            char16_t character;
            status_t status = parseCharacterLiteral(&character);
            if (status || !character) {
                ALOGE("%s: Invalid character literal for key.",
                        mTokenizer->getLocation().string());
                ALOGE("%s: Invalid character literal for key.", mTokenizer->getLocation().c_str());
                return BAD_VALUE;
            }
            if (haveCharacter) {
                ALOGE("%s: Cannot combine multiple character literals or 'none'.",
                        mTokenizer->getLocation().string());
                      mTokenizer->getLocation().c_str());
                return BAD_VALUE;
            }
            if (haveReplacement) {
                ALOGE("%s: Cannot combine character literal with replace action.",
                        mTokenizer->getLocation().string());
                      mTokenizer->getLocation().c_str());
                return BAD_VALUE;
            }
            behavior.character = character;
@@ -1127,28 +1123,27 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() {
            if (token == "none") {
                if (haveCharacter) {
                    ALOGE("%s: Cannot combine multiple character literals or 'none'.",
                            mTokenizer->getLocation().string());
                          mTokenizer->getLocation().c_str());
                    return BAD_VALUE;
                }
                if (haveReplacement) {
                    ALOGE("%s: Cannot combine 'none' with replace action.",
                            mTokenizer->getLocation().string());
                          mTokenizer->getLocation().c_str());
                    return BAD_VALUE;
                }
                haveCharacter = true;
            } else if (token == "fallback") {
                mTokenizer->skipDelimiters(WHITESPACE);
                token = mTokenizer->nextToken(WHITESPACE);
                int32_t keyCode = InputEventLookup::getKeyCodeByLabel(token.string());
                int32_t keyCode = InputEventLookup::getKeyCodeByLabel(token.c_str());
                if (!keyCode) {
                    ALOGE("%s: Invalid key code label for fallback behavior, got '%s'.",
                            mTokenizer->getLocation().string(),
                            token.string());
                          mTokenizer->getLocation().c_str(), token.c_str());
                    return BAD_VALUE;
                }
                if (haveFallback || haveReplacement) {
                    ALOGE("%s: Cannot combine multiple fallback/replacement key codes.",
                            mTokenizer->getLocation().string());
                          mTokenizer->getLocation().c_str());
                    return BAD_VALUE;
                }
                behavior.fallbackKeyCode = keyCode;
@@ -1156,29 +1151,27 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() {
            } else if (token == "replace") {
                mTokenizer->skipDelimiters(WHITESPACE);
                token = mTokenizer->nextToken(WHITESPACE);
                int32_t keyCode = InputEventLookup::getKeyCodeByLabel(token.string());
                int32_t keyCode = InputEventLookup::getKeyCodeByLabel(token.c_str());
                if (!keyCode) {
                    ALOGE("%s: Invalid key code label for replace, got '%s'.",
                            mTokenizer->getLocation().string(),
                            token.string());
                          mTokenizer->getLocation().c_str(), token.c_str());
                    return BAD_VALUE;
                }
                if (haveCharacter) {
                    ALOGE("%s: Cannot combine character literal with replace action.",
                            mTokenizer->getLocation().string());
                          mTokenizer->getLocation().c_str());
                    return BAD_VALUE;
                }
                if (haveFallback || haveReplacement) {
                    ALOGE("%s: Cannot combine multiple fallback/replacement key codes.",
                            mTokenizer->getLocation().string());
                          mTokenizer->getLocation().c_str());
                    return BAD_VALUE;
                }
                behavior.replacementKeyCode = keyCode;
                haveReplacement = true;

            } else {
                ALOGE("%s: Expected a key behavior after ':'.",
                        mTokenizer->getLocation().string());
                ALOGE("%s: Expected a key behavior after ':'.", mTokenizer->getLocation().c_str());
                return BAD_VALUE;
            }
        }
@@ -1192,8 +1185,7 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() {
        switch (property.property) {
        case PROPERTY_LABEL:
            if (key->label) {
                ALOGE("%s: Duplicate label for key.",
                        mTokenizer->getLocation().string());
                ALOGE("%s: Duplicate label for key.", mTokenizer->getLocation().c_str());
                return BAD_VALUE;
            }
            key->label = behavior.character;
@@ -1203,8 +1195,7 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() {
            break;
        case PROPERTY_NUMBER:
            if (key->number) {
                ALOGE("%s: Duplicate number for key.",
                        mTokenizer->getLocation().string());
                ALOGE("%s: Duplicate number for key.", mTokenizer->getLocation().c_str());
                return BAD_VALUE;
            }
            key->number = behavior.character;
@@ -1216,7 +1207,7 @@ status_t KeyCharacterMap::Parser::parseKeyProperty() {
            for (Behavior* b = key->firstBehavior; b; b = b->next) {
                if (b->metaState == property.metaState) {
                    ALOGE("%s: Duplicate key behavior for modifier.",
                            mTokenizer->getLocation().string());
                          mTokenizer->getLocation().c_str());
                    return BAD_VALUE;
                }
            }
@@ -1285,8 +1276,8 @@ status_t KeyCharacterMap::Parser::parseModifier(const std::string& token, int32_
                return BAD_VALUE;
            }
            if (combinedMeta & metaState) {
                ALOGE("%s: Duplicate modifier combination '%s'.",
                        mTokenizer->getLocation().string(), token.c_str());
                ALOGE("%s: Duplicate modifier combination '%s'.", mTokenizer->getLocation().c_str(),
                      token.c_str());
                return BAD_VALUE;
            }

@@ -1359,7 +1350,7 @@ status_t KeyCharacterMap::Parser::parseCharacterLiteral(char16_t* outCharacter)
    }

Error:
    ALOGE("%s: Malformed character literal.", mTokenizer->getLocation().string());
    ALOGE("%s: Malformed character literal.", mTokenizer->getLocation().c_str());
    return BAD_VALUE;
}

+64 −65

File changed.

Preview size limit exceeded, changes collapsed.

+4 −4
Original line number Diff line number Diff line
@@ -56,7 +56,7 @@ status_t KeyMap::load(const InputDeviceIdentifier& deviceIdentifier,
            if (status == NAME_NOT_FOUND) {
                ALOGE("Configuration for keyboard device '%s' requested keyboard layout '%s' but "
                      "it was not found.",
                        deviceIdentifier.name.c_str(), keyLayoutName.string());
                      deviceIdentifier.name.c_str(), keyLayoutName.c_str());
            }
        }

@@ -67,7 +67,7 @@ status_t KeyMap::load(const InputDeviceIdentifier& deviceIdentifier,
            if (status == NAME_NOT_FOUND) {
                ALOGE("Configuration for keyboard device '%s' requested keyboard character "
                      "map '%s' but it was not found.",
                        deviceIdentifier.name.c_str(), keyCharacterMapName.string());
                      deviceIdentifier.name.c_str(), keyCharacterMapName.c_str());
            }
        }

+15 −15
Original line number Diff line number Diff line
@@ -74,10 +74,10 @@ bool PropertyMap::tryGetProperty(const String8& key, int32_t& outValue) const {
    }

    char* end;
    int value = strtol(stringValue.string(), &end, 10);
    int value = strtol(stringValue.c_str(), &end, 10);
    if (*end != '\0') {
        ALOGW("Property key '%s' has invalid value '%s'.  Expected an integer.", key.string(),
              stringValue.string());
        ALOGW("Property key '%s' has invalid value '%s'.  Expected an integer.", key.c_str(),
              stringValue.c_str());
        return false;
    }
    outValue = value;
@@ -91,10 +91,10 @@ bool PropertyMap::tryGetProperty(const String8& key, float& outValue) const {
    }

    char* end;
    float value = strtof(stringValue.string(), &end);
    float value = strtof(stringValue.c_str(), &end);
    if (*end != '\0') {
        ALOGW("Property key '%s' has invalid value '%s'.  Expected a float.", key.string(),
              stringValue.string());
        ALOGW("Property key '%s' has invalid value '%s'.  Expected a float.", key.c_str(),
              stringValue.c_str());
        return false;
    }
    outValue = value;
@@ -127,7 +127,7 @@ android::base::Result<std::unique_ptr<PropertyMap>> PropertyMap::load(const char
#if DEBUG_PARSER_PERFORMANCE
            nsecs_t elapsedTime = systemTime(SYSTEM_TIME_MONOTONIC) - startTime;
            ALOGD("Parsed property file '%s' %d lines in %0.3fms.",
                  tokenizer->getFilename().string(), tokenizer->getLineNumber(),
                  tokenizer->getFilename().c_str(), tokenizer->getLineNumber(),
                  elapsedTime / 1000000.0);
#endif
            if (status) {
@@ -147,8 +147,8 @@ PropertyMap::Parser::~Parser() {}
status_t PropertyMap::Parser::parse() {
    while (!mTokenizer->isEof()) {
#if DEBUG_PARSER
        ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().string(),
              mTokenizer->peekRemainderOfLine().string());
        ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().c_str(),
              mTokenizer->peekRemainderOfLine().c_str());
#endif

        mTokenizer->skipDelimiters(WHITESPACE);
@@ -156,7 +156,7 @@ status_t PropertyMap::Parser::parse() {
        if (!mTokenizer->isEol() && mTokenizer->peekChar() != '#') {
            String8 keyToken = mTokenizer->nextToken(WHITESPACE_OR_PROPERTY_DELIMITER);
            if (keyToken.isEmpty()) {
                ALOGE("%s: Expected non-empty property key.", mTokenizer->getLocation().string());
                ALOGE("%s: Expected non-empty property key.", mTokenizer->getLocation().c_str());
                return BAD_VALUE;
            }

@@ -164,7 +164,7 @@ status_t PropertyMap::Parser::parse() {

            if (mTokenizer->nextChar() != '=') {
                ALOGE("%s: Expected '=' between property key and value.",
                      mTokenizer->getLocation().string());
                      mTokenizer->getLocation().c_str());
                return BAD_VALUE;
            }

@@ -173,20 +173,20 @@ status_t PropertyMap::Parser::parse() {
            String8 valueToken = mTokenizer->nextToken(WHITESPACE);
            if (valueToken.find("\\", 0) >= 0 || valueToken.find("\"", 0) >= 0) {
                ALOGE("%s: Found reserved character '\\' or '\"' in property value.",
                      mTokenizer->getLocation().string());
                      mTokenizer->getLocation().c_str());
                return BAD_VALUE;
            }

            mTokenizer->skipDelimiters(WHITESPACE);
            if (!mTokenizer->isEol()) {
                ALOGE("%s: Expected end of line, got '%s'.", mTokenizer->getLocation().string(),
                      mTokenizer->peekRemainderOfLine().string());
                ALOGE("%s: Expected end of line, got '%s'.", mTokenizer->getLocation().c_str(),
                      mTokenizer->peekRemainderOfLine().c_str());
                return BAD_VALUE;
            }

            if (mMap->hasProperty(keyToken)) {
                ALOGE("%s: Duplicate property value for key '%s'.",
                      mTokenizer->getLocation().string(), keyToken.string());
                      mTokenizer->getLocation().c_str(), keyToken.c_str());
                return BAD_VALUE;
            }

+8 −9
Original line number Diff line number Diff line
@@ -79,8 +79,8 @@ VirtualKeyMap::Parser::~Parser() {
status_t VirtualKeyMap::Parser::parse() {
    while (!mTokenizer->isEof()) {
#if DEBUG_PARSER
        ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().string(),
                mTokenizer->peekRemainderOfLine().string());
        ALOGD("Parsing %s: '%s'.", mTokenizer->getLocation().c_str(),
              mTokenizer->peekRemainderOfLine().c_str());
#endif

        mTokenizer->skipDelimiters(WHITESPACE);
@@ -91,7 +91,7 @@ status_t VirtualKeyMap::Parser::parse() {
                String8 token = mTokenizer->nextToken(WHITESPACE_OR_FIELD_DELIMITER);
                if (token != "0x01") {
                    ALOGE("%s: Unknown virtual key type, expected 0x01.",
                          mTokenizer->getLocation().string());
                          mTokenizer->getLocation().c_str());
                    return BAD_VALUE;
                }

@@ -103,7 +103,7 @@ status_t VirtualKeyMap::Parser::parse() {
                        && parseNextIntField(&defn.height);
                if (!success) {
                    ALOGE("%s: Expected 5 colon-delimited integers in virtual key definition.",
                          mTokenizer->getLocation().string());
                          mTokenizer->getLocation().c_str());
                    return BAD_VALUE;
                }

@@ -116,9 +116,8 @@ status_t VirtualKeyMap::Parser::parse() {
            } while (consumeFieldDelimiterAndSkipWhitespace());

            if (!mTokenizer->isEol()) {
                ALOGE("%s: Expected end of line, got '%s'.",
                        mTokenizer->getLocation().string(),
                        mTokenizer->peekRemainderOfLine().string());
                ALOGE("%s: Expected end of line, got '%s'.", mTokenizer->getLocation().c_str(),
                      mTokenizer->peekRemainderOfLine().c_str());
                return BAD_VALUE;
            }
        }
@@ -146,9 +145,9 @@ bool VirtualKeyMap::Parser::parseNextIntField(int32_t* outValue) {

    String8 token = mTokenizer->nextToken(WHITESPACE_OR_FIELD_DELIMITER);
    char* end;
    *outValue = strtol(token.string(), &end, 0);
    *outValue = strtol(token.c_str(), &end, 0);
    if (token.isEmpty() || *end != '\0') {
        ALOGE("Expected an integer, got '%s'.", token.string());
        ALOGE("Expected an integer, got '%s'.", token.c_str());
        return false;
    }
    return true;
Loading