os/log: Pull LogMessageTypeVerbString out of LogVMessageVerb
Also, optimize how the type and format strings are combined. Signed-off-by: Daniel Kurtz <djkurtz@chromium.org> Reviewed-by: Guillem Jover <guillem@hadrons.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
4020cab88f
commit
b82f934db6
102
os/log.c
102
os/log.c
|
@ -165,6 +165,9 @@ asm (".desc ___crashreporter_info__, 0x10");
|
|||
#ifndef X_NOT_IMPLEMENTED_STRING
|
||||
#define X_NOT_IMPLEMENTED_STRING "(NI)"
|
||||
#endif
|
||||
#ifndef X_NONE_STRING
|
||||
#define X_NONE_STRING ""
|
||||
#endif
|
||||
|
||||
/*
|
||||
* LogInit is called to start logging to a file. It is also called (with
|
||||
|
@ -325,58 +328,65 @@ LogWrite(int verb, const char *f, ...)
|
|||
va_end(args);
|
||||
}
|
||||
|
||||
/* Returns the Message Type string to prepend to a logging message, or NULL
|
||||
* if the message will be dropped due to insufficient verbosity. */
|
||||
static const char *
|
||||
LogMessageTypeVerbString(MessageType type, int verb)
|
||||
{
|
||||
if (type == X_ERROR)
|
||||
verb = 0;
|
||||
|
||||
if (logVerbosity < verb && logFileVerbosity < verb)
|
||||
return NULL;
|
||||
|
||||
switch (type) {
|
||||
case X_PROBED:
|
||||
return X_PROBE_STRING;
|
||||
case X_CONFIG:
|
||||
return X_CONFIG_STRING;
|
||||
case X_DEFAULT:
|
||||
return X_DEFAULT_STRING;
|
||||
case X_CMDLINE:
|
||||
return X_CMDLINE_STRING;
|
||||
case X_NOTICE:
|
||||
return X_NOTICE_STRING;
|
||||
case X_ERROR:
|
||||
return X_ERROR_STRING;
|
||||
case X_WARNING:
|
||||
return X_WARNING_STRING;
|
||||
case X_INFO:
|
||||
return X_INFO_STRING;
|
||||
case X_NOT_IMPLEMENTED:
|
||||
return X_NOT_IMPLEMENTED_STRING;
|
||||
case X_UNKNOWN:
|
||||
return X_UNKNOWN_STRING;
|
||||
case X_NONE:
|
||||
return X_NONE_STRING;
|
||||
default:
|
||||
return X_UNKNOWN_STRING;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
LogVMessageVerb(MessageType type, int verb, const char *format, va_list args)
|
||||
{
|
||||
const char *s = X_UNKNOWN_STRING;
|
||||
char tmpBuf[1024];
|
||||
const char *type_str;
|
||||
char tmpFormat[1024];
|
||||
char *new_format;
|
||||
|
||||
/* Ignore verbosity for X_ERROR */
|
||||
if (logVerbosity >= verb || logFileVerbosity >= verb || type == X_ERROR) {
|
||||
switch (type) {
|
||||
case X_PROBED:
|
||||
s = X_PROBE_STRING;
|
||||
break;
|
||||
case X_CONFIG:
|
||||
s = X_CONFIG_STRING;
|
||||
break;
|
||||
case X_DEFAULT:
|
||||
s = X_DEFAULT_STRING;
|
||||
break;
|
||||
case X_CMDLINE:
|
||||
s = X_CMDLINE_STRING;
|
||||
break;
|
||||
case X_NOTICE:
|
||||
s = X_NOTICE_STRING;
|
||||
break;
|
||||
case X_ERROR:
|
||||
s = X_ERROR_STRING;
|
||||
if (verb > 0)
|
||||
verb = 0;
|
||||
break;
|
||||
case X_WARNING:
|
||||
s = X_WARNING_STRING;
|
||||
break;
|
||||
case X_INFO:
|
||||
s = X_INFO_STRING;
|
||||
break;
|
||||
case X_NOT_IMPLEMENTED:
|
||||
s = X_NOT_IMPLEMENTED_STRING;
|
||||
break;
|
||||
case X_UNKNOWN:
|
||||
s = X_UNKNOWN_STRING;
|
||||
break;
|
||||
case X_NONE:
|
||||
s = NULL;
|
||||
break;
|
||||
}
|
||||
type_str = LogMessageTypeVerbString(type, verb);
|
||||
if (!type_str)
|
||||
return;
|
||||
|
||||
/* if s is not NULL we need a space before format */
|
||||
snprintf(tmpBuf, sizeof(tmpBuf), "%s%s%s", s ? s : "",
|
||||
s ? " " : "",
|
||||
format);
|
||||
LogVWrite(verb, tmpBuf, args);
|
||||
/* if type_str is not "", prepend it and ' ', to format */
|
||||
if (type_str[0] == '\0')
|
||||
new_format = format;
|
||||
else {
|
||||
new_format = tmpFormat;
|
||||
snprintf(tmpFormat, sizeof(tmpFormat), "%s %s", type_str, format);
|
||||
}
|
||||
|
||||
LogVWrite(verb, new_format, args);
|
||||
}
|
||||
|
||||
/* Log message with verbosity level specified. */
|
||||
|
|
Loading…
Reference in New Issue
Block a user