Commit ffdcad75 authored by Juraj Lutter's avatar Juraj Lutter
Browse files

newsyslog(8): Implement a new 'E' flag to not rotate empty log files

Based on an idea from dvl's coworker, László DANIELISZ, implement
a new flag, 'E', that prevents newsyslog(8) from rotating the empty
log files. This 'E' flag ist mostly usable in conjunction with 'B'
flag that instructs newsyslog(8) to not insert an informational
message into the log file after rotation, keeping it still empty.

Reviewed by:	markj, ian, manpages (rpokala)
Approved by:	markj, ian, manpages (rpokala)
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D28940

(cherry picked from commit c7d27b22)
parent 960f07a4
......@@ -114,7 +114,8 @@ __FBSDID("$FreeBSD$");
#define CE_PID2CMD 0x0400 /* Replace PID file with a shell command.*/
#define CE_PLAIN0 0x0800 /* Do not compress zero'th history file */
#define CE_RFC5424 0x1000 /* Use RFC5424 format rotation message */
#define CE_NOEMPTY 0x2000 /* Do not rotate the file when its size */
/* is zero */
#define MIN_PID 5 /* Don't touch pids lower than this */
#define MAX_PID 99999 /* was lower, see /usr/include/sys/proc.h */
......@@ -531,6 +532,11 @@ do_entry(struct conf_entry * ent)
printf("does not exist, skipped%s.\n", temp_reason);
}
} else {
if (ent->flags & CE_NOEMPTY && ent->fsize == 0) {
if (verbose)
printf("--> Not rotating empty file\n");
return (free_or_keep);
}
if (ent->flags & CE_TRIMAT && !force && !rotatereq &&
!oversized) {
diffsecs = ptimeget_diff(timenow, ent->trim_at);
......@@ -1291,6 +1297,9 @@ parse_file(FILE *cf, struct cflist *work_p, struct cflist *glob_p,
case 'd':
working->flags |= CE_NODUMP;
break;
case 'e':
working->flags |= CE_NOEMPTY;
break;
case 'g':
working->flags |= CE_GLOB;
break;
......
......@@ -21,7 +21,7 @@
.\" the suitability of this software for any purpose. It is
.\" provided "as is" without express or implied warranty.
.\"
.Dd August 21, 2018
.Dd February 26, 2021
.Dt NEWSYSLOG.CONF 5
.Os
.Sh NAME
......@@ -286,6 +286,18 @@ this log file.
This option would affect how the
.Xr dump 8
command treats the log file when making a file system backup.
.It Cm E
indicates that the log file should not be rotated when its
size is zero.
The
.Cm E
flag is mostly useful in conjunction with
.Cm B
flag to prevent
.Xr newsyslog 8
from inserting an informational
.Tn ASCII
message into the new file.
.It Cm G
indicates that the specified
.Ar logfile_name
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment