Loading logd/CommandListener.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -301,6 +301,7 @@ int CommandListener::GetEventTagCmd::runCommand(SocketClient *cli, const char *name = NULL; const char *format = NULL; const char *id = NULL; for (int i = 1; i < argc; ++i) { static const char _name[] = "name="; if (!strncmp(argv[i], _name, strlen(_name))) { Loading @@ -313,6 +314,21 @@ int CommandListener::GetEventTagCmd::runCommand(SocketClient *cli, format = argv[i] + strlen(_format); continue; } static const char _id[] = "id="; if (!strncmp(argv[i], _id, strlen(_id))) { id = argv[i] + strlen(_id); continue; } } if (id) { if (format || name) { cli->sendMsg("can not mix id= with either format= or name="); return 0; } cli->sendMsg(package_string(mBuf.formatEntry(atoi(id), uid)).c_str()); return 0; } cli->sendMsg(package_string(mBuf.formatGetEventTag(uid, Loading logd/LogBuffer.h +3 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,9 @@ public: const char *name, const char *format) { return tags.formatGetEventTag(uid, name, format); } std::string formatEntry(uint32_t tag, uid_t uid) { return tags.formatEntry(tag, uid); } const char *tagToName(uint32_t tag) { return tags.tagToName(tag); } // helper must be protected directly or implicitly by lock()/unlock() Loading logd/LogTags.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -836,6 +836,11 @@ std::string LogTags::formatEntry_locked(uint32_t tag, uid_t uid, return ret; } std::string LogTags::formatEntry(uint32_t tag, uid_t uid) { android::RWLock::AutoRLock readLock(rwlock); return formatEntry_locked(tag, uid); } std::string LogTags::formatGetEventTag(uid_t uid, const char* name, const char* format) { bool all = name && (name[0] == '*') && !name[1]; Loading logd/LogTags.h +1 −0 Original line number Diff line number Diff line Loading @@ -106,6 +106,7 @@ public: // reverse lookup from tag const char* tagToName(uint32_t tag) const; const char* tagToFormat(uint32_t tag) const; std::string formatEntry(uint32_t tag, uid_t uid); // find associated tag uint32_t nameToTag(const char* name) const; Loading logd/tests/logd_test.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -836,6 +836,23 @@ TEST(logd, getEventTag_list) { #endif } TEST(logd, getEventTag_42) { #ifdef __ANDROID__ char buffer[256]; memset(buffer, 0, sizeof(buffer)); snprintf(buffer, sizeof(buffer), "getEventTag id=42"); send_to_control(buffer, sizeof(buffer)); buffer[sizeof(buffer) - 1] = '\0'; char *cp; long ret = strtol(buffer, &cp, 10); EXPECT_GT(ret, 16); EXPECT_TRUE(strstr(buffer, "\t(to life the universe etc|3)") != NULL); EXPECT_TRUE(strstr(buffer, "answer") != NULL); #else GTEST_LOG_(INFO) << "This test does nothing.\n"; #endif } TEST(logd, getEventTag_newentry) { #ifdef __ANDROID__ char buffer[256]; Loading Loading
logd/CommandListener.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -301,6 +301,7 @@ int CommandListener::GetEventTagCmd::runCommand(SocketClient *cli, const char *name = NULL; const char *format = NULL; const char *id = NULL; for (int i = 1; i < argc; ++i) { static const char _name[] = "name="; if (!strncmp(argv[i], _name, strlen(_name))) { Loading @@ -313,6 +314,21 @@ int CommandListener::GetEventTagCmd::runCommand(SocketClient *cli, format = argv[i] + strlen(_format); continue; } static const char _id[] = "id="; if (!strncmp(argv[i], _id, strlen(_id))) { id = argv[i] + strlen(_id); continue; } } if (id) { if (format || name) { cli->sendMsg("can not mix id= with either format= or name="); return 0; } cli->sendMsg(package_string(mBuf.formatEntry(atoi(id), uid)).c_str()); return 0; } cli->sendMsg(package_string(mBuf.formatGetEventTag(uid, Loading
logd/LogBuffer.h +3 −0 Original line number Diff line number Diff line Loading @@ -140,6 +140,9 @@ public: const char *name, const char *format) { return tags.formatGetEventTag(uid, name, format); } std::string formatEntry(uint32_t tag, uid_t uid) { return tags.formatEntry(tag, uid); } const char *tagToName(uint32_t tag) { return tags.tagToName(tag); } // helper must be protected directly or implicitly by lock()/unlock() Loading
logd/LogTags.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -836,6 +836,11 @@ std::string LogTags::formatEntry_locked(uint32_t tag, uid_t uid, return ret; } std::string LogTags::formatEntry(uint32_t tag, uid_t uid) { android::RWLock::AutoRLock readLock(rwlock); return formatEntry_locked(tag, uid); } std::string LogTags::formatGetEventTag(uid_t uid, const char* name, const char* format) { bool all = name && (name[0] == '*') && !name[1]; Loading
logd/LogTags.h +1 −0 Original line number Diff line number Diff line Loading @@ -106,6 +106,7 @@ public: // reverse lookup from tag const char* tagToName(uint32_t tag) const; const char* tagToFormat(uint32_t tag) const; std::string formatEntry(uint32_t tag, uid_t uid); // find associated tag uint32_t nameToTag(const char* name) const; Loading
logd/tests/logd_test.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -836,6 +836,23 @@ TEST(logd, getEventTag_list) { #endif } TEST(logd, getEventTag_42) { #ifdef __ANDROID__ char buffer[256]; memset(buffer, 0, sizeof(buffer)); snprintf(buffer, sizeof(buffer), "getEventTag id=42"); send_to_control(buffer, sizeof(buffer)); buffer[sizeof(buffer) - 1] = '\0'; char *cp; long ret = strtol(buffer, &cp, 10); EXPECT_GT(ret, 16); EXPECT_TRUE(strstr(buffer, "\t(to life the universe etc|3)") != NULL); EXPECT_TRUE(strstr(buffer, "answer") != NULL); #else GTEST_LOG_(INFO) << "This test does nothing.\n"; #endif } TEST(logd, getEventTag_newentry) { #ifdef __ANDROID__ char buffer[256]; Loading