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 | #ifndef X_NOT_IMPLEMENTED_STRING | ||||||
| #define X_NOT_IMPLEMENTED_STRING	"(NI)" | #define X_NOT_IMPLEMENTED_STRING	"(NI)" | ||||||
| #endif | #endif | ||||||
|  | #ifndef X_NONE_STRING | ||||||
|  | #define X_NONE_STRING                   "" | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * LogInit is called to start logging to a file.  It is also called (with |  * 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); |     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 | void | ||||||
| LogVMessageVerb(MessageType type, int verb, const char *format, va_list args) | LogVMessageVerb(MessageType type, int verb, const char *format, va_list args) | ||||||
| { | { | ||||||
|     const char *s  = X_UNKNOWN_STRING; |     const char *type_str; | ||||||
|     char tmpBuf[1024]; |     char tmpFormat[1024]; | ||||||
|  |     char *new_format; | ||||||
| 
 | 
 | ||||||
|     /* Ignore verbosity for X_ERROR */ |     type_str = LogMessageTypeVerbString(type, verb); | ||||||
|     if (logVerbosity >= verb || logFileVerbosity >= verb || type == X_ERROR) { |     if (!type_str) | ||||||
| 	switch (type) { | 	return; | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
|         /* if s is not NULL we need a space before format */ |     /* if type_str is not "", prepend it and ' ', to format */ | ||||||
|         snprintf(tmpBuf, sizeof(tmpBuf), "%s%s%s", s ? s : "", |     if (type_str[0] == '\0') | ||||||
|                                                    s ? " " : "", |         new_format = format; | ||||||
|                                                    format); |     else { | ||||||
|         LogVWrite(verb, tmpBuf, args); |         new_format = tmpFormat; | ||||||
|  |         snprintf(tmpFormat, sizeof(tmpFormat), "%s %s", type_str, format); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     LogVWrite(verb, new_format, args); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Log message with verbosity level specified. */ | /* Log message with verbosity level specified. */ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue