Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Jul 2023 08:07:45 GMT
From:      Eugene Grosbein <eugen@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 829dbdcac20d - stable/12 - logger(1): MFC: fix timestamps in case of long run
Message-ID:  <202307180807.36I87jWB004407@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202307180807.36I87jWB004407>