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

Commit cb19b08d authored by Mark Salyzyn's avatar Mark Salyzyn
Browse files

logd: refine is_prio

(cherry pick from commit 618d0dec)

- Heuristics associated with translation of kernel messages to
  Android user space logs.
- Limit is_prio to 4 characters, we got false positives on hex
  values like <register contents> with no alpha chars.
- x11 and other register definitions are not valid tags, en0 is
- fix some Android coding standard issues

Change-Id: Idc3dcc53a2cb75ac38628c8ef7a5d5b53f12587a
parent 8bc53c12
Loading
Loading
Loading
Loading
+15 −9
Original line number Original line Diff line number Diff line
@@ -43,8 +43,10 @@ static char *is_prio(char *s) {
    if (!isdigit(*s++)) {
    if (!isdigit(*s++)) {
        return NULL;
        return NULL;
    }
    }
    static const size_t max_prio_len = 4;
    size_t len = 0;
    char c;
    char c;
    while ((c = *s++)) {
    while (((c = *s++)) && (++len <= max_prio_len)) {
        if (!isdigit(c)) {
        if (!isdigit(c)) {
            return (c == '>') ? s : NULL;
            return (c == '>') ? s : NULL;
        }
        }
@@ -73,7 +75,7 @@ static char *is_timestamp(char *s) {
}
}


// Like strtok_r with "\r\n" except that we look for log signatures (regex)
// Like strtok_r with "\r\n" except that we look for log signatures (regex)
// \(\(<[0-9]+>\)\([[] *[0-9]+[.][0-9]+[]] \)\{0,1\}\|[[] *[0-9]+[.][0-9]+[]] \)
//  \(\(<[0-9]\{1,4\}>\)\([[] *[0-9]+[.][0-9]+[]] \)\{0,1\}\|[[] *[0-9]+[.][0-9]+[]] \)
// and split if we see a second one without a newline.
// and split if we see a second one without a newline.


#define SIGNATURE_MASK     0xF0
#define SIGNATURE_MASK     0xF0
@@ -165,7 +167,7 @@ char *log_strtok_r(char *s, char **last) {
            break;
            break;
        }
        }
    }
    }
    /* NOTREACHED */
    // NOTREACHED
}
}


log_time LogKlog::correction = log_time(CLOCK_REALTIME) - log_time(CLOCK_MONOTONIC);
log_time LogKlog::correction = log_time(CLOCK_REALTIME) - log_time(CLOCK_MONOTONIC);
@@ -535,7 +537,11 @@ int LogKlog::log(const char *buf) {
        }
        }
        size = etag - tag;
        size = etag - tag;
        if ((size <= 1)
        if ((size <= 1)
            // register names like x9
                || ((size == 2) && (isdigit(tag[0]) || isdigit(tag[1])))
                || ((size == 2) && (isdigit(tag[0]) || isdigit(tag[1])))
            // register names like x18 but not driver names like en0
                || ((size == 3) && (isdigit(tag[1]) && isdigit(tag[2])))
            // blacklist
                || ((size == 3) && !strncmp(tag, "CPU", 3))
                || ((size == 3) && !strncmp(tag, "CPU", 3))
                || ((size == 7) && !strncmp(tag, "WARNING", 7))
                || ((size == 7) && !strncmp(tag, "WARNING", 7))
                || ((size == 5) && !strncmp(tag, "ERROR", 5))
                || ((size == 5) && !strncmp(tag, "ERROR", 5))