[logrotate] fix #726980 - fixed ACL handling when acl_get_fd is supported, bug acl_set_fd is not

Jan Kaluža jkaluza at fedoraproject.org
Mon Aug 8 10:42:26 UTC 2011


commit b900bcd7bcaf3e7d522394d9539b421225487186
Author: Jan Kaluza <hanzz.k at gmail.com>
Date:   Mon Aug 8 12:41:05 2011 +0200

    fix #726980 - fixed ACL handling when acl_get_fd is supported,
    bug acl_set_fd is not

 logrotate-3.8.0-maxsize.patch |   97 +++++++++++++++++++++++++++++++++++++++++
 logrotate.spec                |    7 +++-
 2 files changed, 103 insertions(+), 1 deletions(-)
---
diff --git a/logrotate-3.8.0-maxsize.patch b/logrotate-3.8.0-maxsize.patch
new file mode 100644
index 0000000..d23146e
--- /dev/null
+++ b/logrotate-3.8.0-maxsize.patch
@@ -0,0 +1,97 @@
+Index: logrotate.c
+===================================================================
+--- logrotate.c	(revision 336)
++++ logrotate.c	(working copy)
+@@ -786,6 +786,8 @@
+ 	}
+ 	if (log->minsize && sb.st_size < log->minsize)
+ 	    state->doRotate = 0;
++	if (log->maxsize && sb.st_size > log->maxsize)
++	    state->doRotate = 1;
+     }
+ 
+     /* The notifempty flag overrides the normal criteria */
+@@ -1465,6 +1467,9 @@
+     if (log->minsize) 
+ 	message(MESS_DEBUG, "only log files >= %llu bytes are rotated, ",	log->minsize);
+ 
++    if (log->maxsize) 
++	message(MESS_DEBUG, "log files >= %llu are rotated earlier, ",	log->minsize);
++
+     if (log->logAddress) {
+ 	message(MESS_DEBUG, "old logs mailed to %s\n", log->logAddress);
+     } else {
+Index: logrotate.h
+===================================================================
+--- logrotate.h	(revision 336)
++++ logrotate.h	(working copy)
+@@ -36,6 +36,7 @@
+     enum { ROT_DAYS, ROT_WEEKLY, ROT_MONTHLY, ROT_YEARLY, ROT_SIZE,
+ 	    ROT_FORCE } criterium;
+     unsigned long long threshhold;
++	unsigned long long maxsize;
+     unsigned long long minsize;
+     int rotateCount;
+     int rotateAge;
+Index: config.c
+===================================================================
+--- config.c	(revision 336)
++++ config.c	(working copy)
+@@ -290,6 +290,7 @@
+     to->criterium = from->criterium;
+     to->threshhold = from->threshhold;
+     to->minsize = from->minsize;
++	to->maxsize = from->maxsize;
+     to->rotateCount = from->rotateCount;
+     to->rotateAge = from->rotateAge;
+     to->logStart = from->logStart;
+@@ -504,6 +505,7 @@
+ 		.criterium = ROT_SIZE,
+ 		.threshhold = 1024 * 1024,
+ 		.minsize = 0,
++		.maxsize = 0,
+ 		.rotateCount = 0,
+ 		.rotateAge = 0,
+ 		.logStart = -1,
+@@ -885,7 +887,8 @@
+ 					newlog->flags |= LOG_FLAG_CREATE;
+ 				} else if (!strcmp(key, "nocreate")) {
+ 					newlog->flags &= ~LOG_FLAG_CREATE;
+-				} else if (!strcmp(key, "size") || !strcmp(key, "minsize")) {
++				} else if (!strcmp(key, "size") || !strcmp(key, "minsize") ||
++							!strcmp(key, "maxsize")) {
+ 					unsigned long long size = 0;
+ 					char *opt = key;
+ 							
+@@ -930,6 +933,8 @@
+ 						if (!strncmp(opt, "size", 4)) {
+ 						  newlog->criterium = ROT_SIZE;
+ 						  newlog->threshhold = size;
++						} else if (!strncmp(opt, "maxsize", 7)) {
++						  newlog->maxsize = size;
+ 						} else {
+ 						  newlog->minsize = size;
+ 						}
+Index: logrotate.8
+===================================================================
+--- logrotate.8	(revision 336)
++++ logrotate.8	(working copy)
+@@ -285,7 +285,17 @@
+ configured address if \fBmaillast\fR and \fBmail\fR are configured.
+ 
+ .TP
+-\fBminsize\fR \fIsize\fR
++\fBmaxsize\fR \fIsize\fR
++Log files are rotated when they grow bigger than \fIsize\fR bytes even
++before the additionally specified time interval (\fBdaily\fR, \fBweekly\fR,
++\fBmonthly\fR, or \fByearly\fR).  The related \fBsize\fR option is similar
++except that it is mutually exclusive with the time interval options, and it
++causes log files to be rotated without regard for the last rotation time.
++When \fBmaxsize\fR is used, both the size and timestamp of a log file are
++considered.
++
++.TP
++\fBminsize\fR  \fIsize\fR
+ Log files are rotated when they grow bigger than \fIsize\fR bytes, but not
+ before the additionally specified time interval (\fBdaily\fR, \fBweekly\fR,
+ \fBmonthly\fR, or \fByearly\fR).  The related \fBsize\fR option is similar
diff --git a/logrotate.spec b/logrotate.spec
index fc8993c..2aa0f61 100644
--- a/logrotate.spec
+++ b/logrotate.spec
@@ -1,7 +1,7 @@
 Summary: Rotates, compresses, removes and mails system log files
 Name: logrotate
 Version: 3.8.0
-Release: 4%{?dist}
+Release: 5%{?dist}
 License: GPL+
 Group: System Environment/Base
 Url: https://fedorahosted.org/logrotate/
@@ -9,6 +9,7 @@ Source: https://fedorahosted.org/releases/l/o/logrotate/logrotate-%{version}.tar
 Patch0: logrotate-3.8.0-no-cron-redirection.patch
 Patch1: logrotate-3.8.0-rot-size.patch
 Patch2: logrotate-3.8.0-handle-acl-not-supported.patch
+Patch3: logrotate-3.8.0-maxsize.patch
 
 Requires: coreutils >= 5.92 libsepol libselinux popt libacl
 BuildRequires: libselinux-devel popt-devel libacl-devel
@@ -31,6 +32,7 @@ log files on your system.
 %patch0 -p1
 %patch1 -p1
 %patch2
+%patch3
 
 %build
 make %{?_smp_mflags} RPM_OPT_FLAGS="$RPM_OPT_FLAGS" WITH_SELINUX=yes WITH_ACL=yes
@@ -61,6 +63,9 @@ rm -rf $RPM_BUILD_ROOT
 %attr(0644, root, root) %verify(not size md5 mtime) %config(noreplace) %{_localstatedir}/lib/logrotate.status
 
 %changelog
+* Mon Aug 08 2011 Jan Kaluza <jkaluza at redhat.com> 3.8.0-5
+- fix #723797 - added maxsize option
+
 * Wed Aug 01 2011 Jan Kaluza <jkaluza at redhat.com> 3.8.0-4
 - fix #726980 - work properly when acl_get_fd is supported,
   but acl_set_fd is not


More information about the scm-commits mailing list