90 lines
3.2 KiB
Diff
90 lines
3.2 KiB
Diff
From 337eb1492f8b694542d704c7a4612e3211f717e5 Mon Sep 17 00:00:00 2001
|
|
From: Kamil Dudka <kdudka@redhat.com>
|
|
Date: Tue, 27 Apr 2021 20:52:32 +0200
|
|
Subject: [PATCH 2/2] make `renamecopy` and `copytruncate` override each other
|
|
|
|
These option cannot work together. This rule prevents unnecessary
|
|
rotation failure in case one of the options comes from the global
|
|
configuration and the other one from log-specific configuration.
|
|
|
|
Bug: https://bugzilla.redhat.com/1934601
|
|
|
|
Closes: https://github.com/logrotate/logrotate/pull/386
|
|
|
|
Upstream-commit: fe53a0efd21c11dbe9705564f92f5d9aa6bf855e
|
|
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
|
|
---
|
|
config.c | 2 ++
|
|
logrotate.8.in | 3 ++-
|
|
test/test-config.24.in | 3 +++
|
|
test/test-config.58.in | 3 +++
|
|
4 files changed, 10 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/config.c b/config.c
|
|
index 91fd412..1bca9e4 100644
|
|
--- a/config.c
|
|
+++ b/config.c
|
|
@@ -1106,10 +1106,12 @@ static int readConfigFile(const char *configFile, struct logInfo *defConfig)
|
|
newlog->flags &= ~LOG_FLAG_SHAREDSCRIPTS;
|
|
} else if (!strcmp(key, "copytruncate")) {
|
|
newlog->flags |= LOG_FLAG_COPYTRUNCATE;
|
|
+ newlog->flags &= ~LOG_FLAG_TMPFILENAME;
|
|
} else if (!strcmp(key, "nocopytruncate")) {
|
|
newlog->flags &= ~LOG_FLAG_COPYTRUNCATE;
|
|
} else if (!strcmp(key, "renamecopy")) {
|
|
newlog->flags |= LOG_FLAG_TMPFILENAME;
|
|
+ newlog->flags &= ~LOG_FLAG_COPYTRUNCATE;
|
|
} else if (!strcmp(key, "norenamecopy")) {
|
|
newlog->flags &= ~LOG_FLAG_TMPFILENAME;
|
|
} else if (!strcmp(key, "copy")) {
|
|
diff --git a/logrotate.8.in b/logrotate.8.in
|
|
index 8064d68..f0aa23f 100644
|
|
--- a/logrotate.8.in
|
|
+++ b/logrotate.8.in
|
|
@@ -430,7 +430,7 @@ truncating it, so some logging data might be lost.
|
|
When this option is used, the \fBcreate\fR option will have no effect,
|
|
as the old log file stays in place. The \fBcopytruncate\fR option allows
|
|
storing rotated log files on the different devices using \fBolddir\fR
|
|
-directive.
|
|
+directive. The \fBcopytruncate\fR option implies \fBnorenamecopy\fR.
|
|
|
|
.TP
|
|
\fBnocopytruncate\fR
|
|
@@ -444,6 +444,7 @@ Log file is renamed to temporary filename in the same directory by adding
|
|
and log file is copied from temporary filename to final filename. In the end,
|
|
temporary filename is removed. The \fBrenamecopy\fR option allows storing
|
|
rotated log files on the different devices using \fBolddir\fR directive.
|
|
+The \fBrenamecopy\fR option implies \fBnocopytruncate\fR.
|
|
|
|
.TP
|
|
\fBnorenamecopy\fR
|
|
diff --git a/test/test-config.24.in b/test/test-config.24.in
|
|
index 35cfcd3..7a2a760 100644
|
|
--- a/test/test-config.24.in
|
|
+++ b/test/test-config.24.in
|
|
@@ -1,5 +1,8 @@
|
|
create
|
|
|
|
+# will be overridden by copytruncate
|
|
+renamecopy
|
|
+
|
|
&DIR&/test*.log {
|
|
daily
|
|
copytruncate
|
|
diff --git a/test/test-config.58.in b/test/test-config.58.in
|
|
index 34906da..79058be 100644
|
|
--- a/test/test-config.58.in
|
|
+++ b/test/test-config.58.in
|
|
@@ -1,5 +1,8 @@
|
|
create
|
|
|
|
+# will be overridden by renamecopy
|
|
+copytruncate
|
|
+
|
|
&DIR&/test.log {
|
|
renamecopy
|
|
weekly
|
|
--
|
|
2.30.2
|
|
|