git: 829dbdcac20d - stable/12 - logger(1): MFC: fix timestamps in case of long run
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 18 Jul 2023 08:07:45 UTC
The branch stable/12 has been updated by eugen:
URL: https://cgit.FreeBSD.org/src/commit/?id=829dbdcac20d1237ac9693d2e5489857e151754a
commit 829dbdcac20d1237ac9693d2e5489857e151754a
Author: Eugene Grosbein <eugen@FreeBSD.org>
AuthorDate: 2023-04-27 16:43:16 +0000
Commit: Eugene Grosbein <eugen@FreeBSD.org>
CommitDate: 2023-07-18 07:24:26 +0000
logger(1): MFC: fix timestamps in case of long run
An example:
( echo test; sleep 2; echo test2 ) | logger -h /var/run/log
Before fix, logger assigned same timestamp to both records.
Fixes: 65547fb33db901a9f352aacb0ed45ce68b0bd275
Reported by: Vadim Goncharov
(cherry picked from commit 83fd35b3f3fa580d2b99874abd1f67ee61dcb659)
---
usr.bin/logger/logger.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/usr.bin/logger/logger.c b/usr.bin/logger/logger.c
index 936bfc98803c..a99db27f6b1b 100644
--- a/usr.bin/logger/logger.c
+++ b/usr.bin/logger/logger.c
@@ -175,22 +175,23 @@ main(int argc, char *argv[])
openlog(tag, logflags, 0);
(void) fclose(stdout);
- (void )time(&now);
- (void )ctime_r(&now, tbuf);
- tbuf[19] = '\0';
- timestamp = tbuf + 4;
-
if (hostname == NULL) {
hostname = hbuf;
(void )gethostname(hbuf, MAXHOSTNAMELEN);
*strchrnul(hostname, '.') = '\0';
}
+ timestamp = tbuf + 4;
+
/* log input line if appropriate */
if (argc > 0) {
char *p, *endp;
size_t len;
+ (void )time(&now);
+ (void )ctime_r(&now, tbuf);
+ tbuf[19] = '\0';
+
for (p = buf, endp = buf + sizeof(buf) - 2; *argv;) {
len = strlen(*argv);
if (p + len > endp && p > buf) {
@@ -212,9 +213,14 @@ main(int argc, char *argv[])
logmessage(pri, timestamp, hostname, tag, socks, nsock,
buf);
} else
- while (fgets(buf, sizeof(buf), stdin) != NULL)
+ while (fgets(buf, sizeof(buf), stdin) != NULL) {
+ (void )time(&now);
+ (void )ctime_r(&now, tbuf);
+ tbuf[19] = '\0';
+
logmessage(pri, timestamp, hostname, tag, socks, nsock,
buf);
+ }
exit(0);
}