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