logger(1): 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: 65547fb33d
Reported by: Vadim Goncharov
MFC after: 1 week
This commit is contained in:
parent
7ee4066db1
commit
83fd35b3f3
@ -198,22 +198,23 @@ main(int argc, char *argv[])
|
||||
if (host == NULL)
|
||||
cap_openlog(capsyslog, tag, logflags, 0);
|
||||
|
||||
(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) {
|
||||
@ -235,9 +236,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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user