logcat: support --regex on binary buffers as-is

(cherry pick from commit aa730c1145)

- Do not restrict regex on LOG_ID_EVENTS or LOG_ID_SECURITY.
- some logcat_panic messages need to incorporate a newline.
- deal with some coding standards issues.

Bug: 27706081
Change-Id: Ie647fd62d027b01004177559d68b8e5a346705e6
This commit is contained in:
Mark Salyzyn 2016-03-30 12:38:29 -07:00
parent 9cc9cf0280
commit df42ce4cf3
1 changed files with 6 additions and 9 deletions

View File

@ -83,6 +83,7 @@ static pcrecpp::RE* g_regex;
static size_t g_maxCount;
static size_t g_printCount;
// if showHelp is set, newline required in fmt statement to transition to usage
__noreturn static void logcat_panic(bool showHelp, const char *fmt, ...) __printflike(2,3);
static int openLogFile (const char *pathname)
@ -149,16 +150,12 @@ void printBinary(struct log_msg *buf)
TEMP_FAILURE_RETRY(write(g_outFD, buf, size));
}
static bool regexOk(const AndroidLogEntry& entry, log_id_t id)
static bool regexOk(const AndroidLogEntry& entry)
{
if (! g_regex) {
if (!g_regex) {
return true;
}
if (id == LOG_ID_EVENTS || id == LOG_ID_SECURITY) {
return false;
}
std::string messageString(entry.message, entry.messageLen);
return g_regex->PartialMatch(messageString);
@ -193,7 +190,7 @@ static void processBuffer(log_device_t* dev, struct log_msg *buf)
}
if (android_log_shouldPrintLine(g_logformat, entry.tag, entry.priority) &&
regexOk(entry, buf->id())) {
regexOk(entry)) {
bytesWritten = android_log_printLogLine(g_logformat, g_outFD, &entry);
g_printCount++;
@ -966,7 +963,7 @@ int main(int argc, char **argv)
}
if (g_maxCount && got_t) {
logcat_panic(true, "Cannot use -m (--max-count) and -t together");
logcat_panic(true, "Cannot use -m (--max-count) and -t together\n");
}
if (!devices) {
@ -1185,7 +1182,7 @@ int main(int argc, char **argv)
dev = NULL;
log_device_t unexpected("unexpected", false);
while (!g_maxCount || g_printCount < g_maxCount) {
while (!g_maxCount || (g_printCount < g_maxCount)) {
struct log_msg log_msg;
log_device_t* d;
int ret = android_logger_list_read(logger_list, &log_msg);