int propertyFile_getAdbdCommunicationMode(const FileData* data) { SearchResult searchResult; int qemud = propertyFile_getInt(data, "ro.adb.qemud", 1, &searchResult); if (searchResult == RESULT_FOUND) { D("Found ro.adb.qemud build property: %d", qemud); return qemud; } D("ro.adb.qemud invalid or not found, API >= 16, defaulting ro.adb.qemud==1"); return 1; }
TEST(AvdUtil, propertyFile_getInt) { FileData fd; const char* testFile = "nineteen=19\n" "int_min=-2147483648\n" "int_max=2147483647\n" "invalid=2147483648\n" "invalid2=-2147483649\n" "invalid3=bar\n" "empty=\n"; EXPECT_EQ(0,fileData_initFromMemory(&fd, testFile, strlen(testFile))); const int kDefault = 1138; SearchResult kSearchResultGarbage = (SearchResult)0xdeadbeef; SearchResult searchResult = kSearchResultGarbage; EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "invalid", kDefault, &searchResult)); EXPECT_EQ(RESULT_INVALID,searchResult); searchResult = kSearchResultGarbage; EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "invalid2", kDefault, &searchResult)); EXPECT_EQ(RESULT_INVALID,searchResult); searchResult = kSearchResultGarbage; EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "invalid3", kDefault, &searchResult)); EXPECT_EQ(RESULT_INVALID,searchResult); searchResult = kSearchResultGarbage; EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "bar", kDefault, &searchResult)); EXPECT_EQ(RESULT_NOT_FOUND,searchResult); searchResult = kSearchResultGarbage; EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "empty", kDefault, &searchResult)); EXPECT_EQ(RESULT_INVALID,searchResult); searchResult = kSearchResultGarbage; EXPECT_EQ(19,propertyFile_getInt(&fd, "nineteen", kDefault, &searchResult)); EXPECT_EQ(RESULT_FOUND,searchResult); // check that null "searchResult" parameter is supported EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "bar", kDefault, NULL)); EXPECT_EQ(kDefault,propertyFile_getInt(&fd, "invalid", kDefault, NULL)); EXPECT_EQ(19,propertyFile_getInt(&fd, "nineteen", kDefault, NULL)); }
int propertyFile_getApiLevel(const FileData* data) { const int kMinLevel = 3; const int kMaxLevel = 10000; SearchResult searchResult; int level = propertyFile_getInt(data, "ro.build.version.sdk", kMinLevel, &searchResult); if (searchResult == RESULT_NOT_FOUND) { level = kMaxLevel; D("Could not find SDK version in build.prop, default is: %d", level); } else if (searchResult == RESULT_INVALID || level < 0) { D("Defaulting to target API sdkVersion %d", level); } else { D("Found target API sdkVersion: %d\n", level); } return level; }