Strip timestamps from log replay
Also fix string length. %.*s does not behave as one might expect when writing wchar_t.
Tento commit je obsažen v:
		
							rodič
							
								
									d7659376d1
								
							
						
					
					
						revize
						908b834c1a
					
				
							
								
								
									
										10
									
								
								log.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								log.c
									
									
									
									
									
								
							| @ -91,6 +91,8 @@ static FILE *logFile(struct Tag tag, const struct tm *time) { | |||||||
| 	return log->file; | 	return log->file; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | enum { StampSize = sizeof("YYYY-MM-DDThh:mm:ss+hhmm") }; | ||||||
|  | 
 | ||||||
| void logFmt(struct Tag tag, const time_t *ts, const char *format, ...) { | void logFmt(struct Tag tag, const time_t *ts, const char *format, ...) { | ||||||
| 	if (logRoot < 0) return; | 	if (logRoot < 0) return; | ||||||
| 
 | 
 | ||||||
| @ -105,8 +107,8 @@ void logFmt(struct Tag tag, const time_t *ts, const char *format, ...) { | |||||||
| 
 | 
 | ||||||
| 	FILE *file = logFile(tag, time); | 	FILE *file = logFile(tag, time); | ||||||
| 
 | 
 | ||||||
| 	char stamp[sizeof("YYYY-MM-DDThh:mm:ss+hhmm")]; | 	char stamp[StampSize]; | ||||||
| 	strftime(stamp, sizeof(stamp), "%FT%T%z", time); | 	strftime(stamp, StampSize, "%FT%T%z", time); | ||||||
| 	fprintf(file, "[%s] ", stamp); | 	fprintf(file, "[%s] ", stamp); | ||||||
| 	if (ferror(file)) err(EX_IOERR, "%s", tag.name); | 	if (ferror(file)) err(EX_IOERR, "%s", tag.name); | ||||||
| 
 | 
 | ||||||
| @ -133,7 +135,9 @@ void logReplay(struct Tag tag) { | |||||||
| 	size_t len; | 	size_t len; | ||||||
| 	char *line; | 	char *line; | ||||||
| 	while (NULL != (line = fgetln(file, &len))) { | 	while (NULL != (line = fgetln(file, &len))) { | ||||||
| 		uiFmt(tag, UICold, "\3%d%.*s", IRCGray, (int)(len - 1), line); | 		line[len - 1] = '\0'; | ||||||
|  | 		if (len > 2 + StampSize) line = &line[2 + StampSize]; | ||||||
|  | 		uiFmt(tag, UICold, "\3%d%s", IRCGray, line); | ||||||
| 	} | 	} | ||||||
| 	if (ferror(file)) err(EX_IOERR, "%s", tag.name); | 	if (ferror(file)) err(EX_IOERR, "%s", tag.name); | ||||||
| } | } | ||||||
|  | |||||||
		Načítá se…
	
	
			
			x
			
			
		
	
		Odkázat v novém úkolu
	
	Zablokovat Uživatele