diff options
author | June McEnroe <june@causal.agency> | 2018-11-29 18:52:03 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2018-11-29 18:52:03 -0500 |
commit | 908b834c1a6346b8bde7168e42d1b9786e4f658f (patch) | |
tree | 9942f43260e8e64077a7a02231938362ae0d2056 /log.c | |
parent | Add basic log replay (diff) | |
download | catgirl-908b834c1a6346b8bde7168e42d1b9786e4f658f.tar.gz catgirl-908b834c1a6346b8bde7168e42d1b9786e4f658f.zip |
Strip timestamps from log replay
Also fix string length. %.*s does not behave as one might expect when writing wchar_t.
Diffstat (limited to 'log.c')
-rw-r--r-- | log.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/log.c b/log.c index 9cd6557..150b629 100644 --- a/log.c +++ b/log.c @@ -91,6 +91,8 @@ static FILE *logFile(struct Tag tag, const struct tm *time) { return log->file; } +enum { StampSize = sizeof("YYYY-MM-DDThh:mm:ss+hhmm") }; + void logFmt(struct Tag tag, const time_t *ts, const char *format, ...) { 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); - char stamp[sizeof("YYYY-MM-DDThh:mm:ss+hhmm")]; - strftime(stamp, sizeof(stamp), "%FT%T%z", time); + char stamp[StampSize]; + strftime(stamp, StampSize, "%FT%T%z", time); fprintf(file, "[%s] ", stamp); if (ferror(file)) err(EX_IOERR, "%s", tag.name); @@ -133,7 +135,9 @@ void logReplay(struct Tag tag) { size_t len; char *line; 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); } |