Strip timestamps from log replay
Also fix string length. %.*s does not behave as one might expect when writing wchar_t.weechat-hashes
parent
d7659376d1
commit
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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue