From 09013345a166896a5ded77c89622734c2ed1e1e8 Mon Sep 17 00:00:00 2001 From: Tomas Smetana Date: Tue, 7 Aug 2007 11:35:18 +0000 Subject: [PATCH] - new upstream version - fix #248565 logrotate never rotates /var/log/btmp - fix compile warnings - tabooext accepts wildcards (related #247816) - fix minor errors and update man page (related #250059) - fix handling of size directive (related #247410) --- .cvsignore | 2 +- logrotate-3.7.5-cfengine.patch | 11 -- logrotate-3.7.5-date.patch | 12 -- logrotate-3.7.5-errorHandling.patch | 155 --------------------- logrotate-3.7.5-logfn.patch | 11 -- logrotate-3.7.5-shred.patch | 201 ---------------------------- logrotate.spec | 22 ++- sources | 2 +- 8 files changed, 12 insertions(+), 404 deletions(-) delete mode 100644 logrotate-3.7.5-cfengine.patch delete mode 100644 logrotate-3.7.5-date.patch delete mode 100644 logrotate-3.7.5-errorHandling.patch delete mode 100644 logrotate-3.7.5-logfn.patch delete mode 100644 logrotate-3.7.5-shred.patch diff --git a/.cvsignore b/.cvsignore index 9f29372..69edb08 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -logrotate-3.7.5.tar.gz +logrotate-3.7.6.tar.gz diff --git a/logrotate-3.7.5-cfengine.patch b/logrotate-3.7.5-cfengine.patch deleted file mode 100644 index 3f9d8cb..0000000 --- a/logrotate-3.7.5-cfengine.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- logrotate-3.7.5/config.c.cfengine 2007-05-14 14:18:44.000000000 +0200 -+++ logrotate-3.7.5/config.c 2007-05-14 14:19:06.000000000 +0200 -@@ -31,7 +31,7 @@ - #endif - - static char *defTabooExts[] = { ".rpmsave", ".rpmorig", "~", ",v", -- ".rpmnew", ".swp" -+ ".rpmnew", ".swp", ".cfsaved" - }; - static int defTabooCount = sizeof(defTabooExts) / sizeof(char *); - diff --git a/logrotate-3.7.5-date.patch b/logrotate-3.7.5-date.patch deleted file mode 100644 index 348f786..0000000 --- a/logrotate-3.7.5-date.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- logrotate-3.7.5/examples/logrotate-default.date 2007-05-16 16:36:06.000000000 +0200 -+++ logrotate-3.7.5/examples/logrotate-default 2007-05-16 16:36:50.000000000 +0200 -@@ -8,6 +8,9 @@ - # create new (empty) log files after rotating old ones - create - -+# use date as a suffix of rotated file -+dateext -+ - # uncomment this if you want your log files compressed - #compress - diff --git a/logrotate-3.7.5-errorHandling.patch b/logrotate-3.7.5-errorHandling.patch deleted file mode 100644 index cf1d413..0000000 --- a/logrotate-3.7.5-errorHandling.patch +++ /dev/null @@ -1,155 +0,0 @@ ---- logrotate-3.7.5/logrotate.c.errorHandling 2007-03-01 12:05:30.000000000 +0100 -+++ logrotate-3.7.5/logrotate.c 2007-03-31 12:50:33.000000000 +0200 -@@ -1043,6 +1043,8 @@ - message(MESS_ERROR, "error running first action script " - "for %s\n", log->pattern); - hasErrors = 1; -+ /* finish early, firstaction failed, affects all logs in set */ -+ return hasErrors; - } - } - } -@@ -1067,16 +1069,25 @@ - hasErrors |= logHasErrors[i]; - } - -- if (log->pre) { -+ if (log->pre -+ && (! ( (logHasErrors[j] && !(log->flags & LOG_FLAG_SHAREDSCRIPTS)) -+ || (hasErrors && (log->flags & LOG_FLAG_SHAREDSCRIPTS)) ) )) { - if (!numRotated) { - message(MESS_DEBUG, "not running prerotate script, " - "since no logs will be rotated\n"); - } else { - message(MESS_DEBUG, "running prerotate script\n"); - if (runScript(log->pattern, log->pre)) { -- message(MESS_ERROR, -- "error running shared prerotate script " -- "for %s\n", log->pattern); -+ if (log->flags & LOG_FLAG_SHAREDSCRIPTS) -+ message(MESS_ERROR, -+ "error running shared prerotate script " -+ "for '%s'\n", log->pattern); -+ else { -+ message(MESS_ERROR, -+ "error running non-shared prerotate script " -+ "for %s of '%s'\n", log->files[j], log->pattern); -+ } -+ logHasErrors[j] = 1; - hasErrors = 1; - } - } -@@ -1085,22 +1096,33 @@ - for (i = j; - ((log->flags & LOG_FLAG_SHAREDSCRIPTS) && i < log->numFiles) - || (!(log->flags & LOG_FLAG_SHAREDSCRIPTS) && i == j); i++) { -- if (!logHasErrors[i]) { -+ if (! ( (logHasErrors[i] && !(log->flags & LOG_FLAG_SHAREDSCRIPTS)) -+ || (hasErrors && (log->flags & LOG_FLAG_SHAREDSCRIPTS)) ) ) { - logHasErrors[i] |= - rotateSingleLog(log, i, state[i], rotNames[i]); - hasErrors |= logHasErrors[i]; - } - } - -- if (log->post) { -+ if (log->post -+ && (! ( (logHasErrors[j] && !(log->flags & LOG_FLAG_SHAREDSCRIPTS)) -+ || (hasErrors && (log->flags & LOG_FLAG_SHAREDSCRIPTS)) ) )) { - if (!numRotated) { - message(MESS_DEBUG, "not running postrotate script, " - "since no logs were rotated\n"); - } else { - message(MESS_DEBUG, "running postrotate script\n"); - if (runScript(log->pattern, log->post)) { -- message(MESS_ERROR, "error running postrotate script " -- "for %s\n", log->pattern); -+ if (log->flags & LOG_FLAG_SHAREDSCRIPTS) -+ message(MESS_ERROR, -+ "error running shared postrotate script " -+ "for '%s'\n", log->pattern); -+ else { -+ message(MESS_ERROR, -+ "error running non-shared postrotate script " -+ "for %s of '%s'\n", log->files[j], log->pattern); -+ } -+ logHasErrors[j] = 1; - hasErrors = 1; - } - } -@@ -1109,7 +1131,8 @@ - for (i = j; - ((log->flags & LOG_FLAG_SHAREDSCRIPTS) && i < log->numFiles) - || (!(log->flags & LOG_FLAG_SHAREDSCRIPTS) && i == j); i++) { -- if (!logHasErrors[i]) { -+ if (! ( (logHasErrors[i] && !(log->flags & LOG_FLAG_SHAREDSCRIPTS)) -+ || (hasErrors && (log->flags & LOG_FLAG_SHAREDSCRIPTS)) ) ) { - logHasErrors[i] |= - postrotateSingleLog(log, i, state[i], rotNames[i]); - hasErrors |= logHasErrors[i]; ---- logrotate-3.7.5/logrotate.8.errorHandling 2006-05-17 16:46:51.000000000 +0200 -+++ logrotate-3.7.5/logrotate.8 2007-03-31 12:37:06.000000000 +0200 -@@ -326,7 +326,8 @@ - \fBnosharedscripts\fR - Run \fBprerotate\fR and \fBpostrotate\fR scripts for every log file which - is rotated (this is the default, and overrides the \fBsharedscripts\fR --option). -+option). If the scripts exit with error, the remaining actions will -+not be executed for the affected log only. - - .TP - \fBnotifempty\fR -@@ -346,7 +347,8 @@ - The lines between \fBpostrotate\fR and \fBendscript\fR (both of which - must appear on lines by themselves) are executed after the log file is - rotated. These directives may only appear inside of a log file definition. --See \fBprerotate\fR as well. -+See \fBprerotate\fR as well. See \fBsharedscripts\fR and -+\fBnosharedscripts\fR for error handling. - - .TP - \fBprerotate\fR/\fBendscript\fR -@@ -354,7 +356,8 @@ - must appear on lines by themselves) are executed before the log file is - rotated and only if the log will actually be rotated. These directives - may only appear inside of a log file definition. See \fBpostrotate\fR --as well. -+as well. See \fBsharedscripts\fR and \fBnosharedscripts\fR for error -+handling. - - .TP - \fBfirstaction\fR/\fBendscript\fR -@@ -362,7 +365,8 @@ - must appear on lines by themselves) are executed once before all log - files that match the wildcarded pattern are rotated, before prerotate script - is run and only if at least one log will actually be rotated. These directives --may only appear inside of a log file definition. See \fBlastaction\fR as well. -+may only appear inside of a log file definition. If the script exits -+with error, no further processing is done. See \fBlastaction\fR as well. - - .TP - \fBlastaction\fR/\fBendscript\fR -@@ -370,7 +374,9 @@ - must appear on lines by themselves) are executed once after all log - files that match the wildcarded pattern are rotated, after postrotate script - is run and only if at least one log is rotated. These directives may only --appear inside of a log file definition. See \fBfirstaction\fR as well. -+appear inside of a log file definition. If the script exits with -+error, just an error message is shown (as this is the last -+action). See \fBfirstaction\fR as well. - - .TP - \fBrotate \fIcount\fR -@@ -393,8 +399,10 @@ - /var/log/news/* example). If \fBsharedscript\fR is specified, the scripts - are only run once, no matter how many logs match the wildcarded pattern. - However, if none of the logs in the pattern require rotating, the scripts --will not be run at all. This option overrides the \fBnosharedscripts\fR --option and implies \fBcreate\fR option. -+will not be run at all. If the scripts exit with error, the remaining -+actions will not be executed for any logs. This option overrides the -+\fBnosharedscripts\fR option and implies \fBcreate\fR option. -+ - - .TP - \fBstart \fIcount\fR diff --git a/logrotate-3.7.5-logfn.patch b/logrotate-3.7.5-logfn.patch deleted file mode 100644 index bcf84d7..0000000 --- a/logrotate-3.7.5-logfn.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- logrotate-3.7.5/logrotate.c.logfn 2007-05-30 14:52:21.000000000 +0200 -+++ logrotate-3.7.5/logrotate.c 2007-05-30 14:53:08.000000000 +0200 -@@ -151,7 +151,7 @@ - } - - if (!fork()) { -- execl("/bin/sh", "sh", "-c", script, NULL); -+ execl("/bin/sh", "sh", "-c", script, script, logfn, NULL); - exit(1); - } - diff --git a/logrotate-3.7.5-shred.patch b/logrotate-3.7.5-shred.patch deleted file mode 100644 index 14ef661..0000000 --- a/logrotate-3.7.5-shred.patch +++ /dev/null @@ -1,201 +0,0 @@ ---- logrotate-3.7.5/logrotate.h.shred 2007-05-14 09:25:50.000000000 +0200 -+++ logrotate-3.7.5/logrotate.h 2007-05-14 10:27:48.000000000 +0200 -@@ -16,6 +16,7 @@ - #define LOG_FLAG_SHAREDSCRIPTS (1 << 7) - #define LOG_FLAG_COPY (1 << 8) - #define LOG_FLAG_DATEEXT (1 << 9) -+#define LOG_FLAG_SHRED (1 << 10) - - #define NO_MODE ((mode_t) -1) - #define NO_UID ((uid_t) -1) -@@ -44,6 +45,7 @@ - char *uncompress_prog; - char *compress_ext; - int flags; -+ int shred_cycles; /* if !=0, pass -n shred_cycles to GNU shred */ - mode_t createMode; /* if any/all of these are -1, we use the */ - uid_t createUid; /* attributes from the log file just rotated */ - gid_t createGid; ---- logrotate-3.7.5/logrotate.c.shred 2007-05-14 09:25:30.000000000 +0200 -+++ logrotate-3.7.5/logrotate.c 2007-05-14 10:35:41.000000000 +0200 -@@ -53,6 +53,8 @@ - char *mailCommand = DEFAULT_MAIL_COMMAND; - time_t nowSecs = 0; - -+static int shred_file(char * filename, logInfo *log); -+ - static int globerr(const char *pathname, int theerr) - { - message(MESS_ERROR, "error accessing %s: %s\n", pathname, -@@ -188,11 +190,54 @@ - return fd; - } - --static int removeLogFile(char *name) -+#define SHRED_CALL "shred -u " -+#define SHRED_COUNT_FLAG "-n " -+#define DIGITS 10 -+/* unlink, but try to call shred from GNU fileutils */ -+static int shred_file(char * filename, logInfo *log) -+{ -+ int len, ret; -+ char *cmd; -+ char count[DIGITS]; /* that's a lot of shredding :) */ -+ -+ if (!(log->flags & LOG_FLAG_SHRED)) { -+ return unlink(filename); -+ } -+ -+ len = strlen(filename) + strlen(SHRED_CALL); -+ len += strlen(SHRED_COUNT_FLAG) + DIGITS; -+ cmd = malloc(len); -+ -+ if (!cmd) { -+ message(MESS_ERROR, "malloc error while shredding"); -+ return unlink(filename); -+ } -+ strcpy(cmd, SHRED_CALL); -+ if (log->shred_cycles != 0) { -+ strcat(cmd, SHRED_COUNT_FLAG); -+ snprintf(count, DIGITS - 1, "%d", log->shred_cycles); -+ strcat(count, " "); -+ strcat(cmd, count); -+ } -+ strcat(cmd, filename); -+ ret = system(cmd); -+ free(cmd); -+ if (ret != 0) { -+ message(MESS_ERROR, "Failed to shred %s\n, trying unlink", filename); -+ if (ret != -1) { -+ message(MESS_NORMAL, "Shred returned %d\n", ret); -+ } -+ return unlink(filename); -+ } else { -+ return ret; -+ } -+} -+ -+static int removeLogFile(char *name, logInfo *log) - { - message(MESS_DEBUG, "removing old log %s\n", name); - -- if (!debug && unlink(name)) { -+ if (!debug && shred_file(name, log)) { - message(MESS_ERROR, "Failed to remove old log %s: %s\n", - name, strerror(errno)); - return 1; -@@ -255,7 +300,7 @@ - return 1; - } - -- unlink(name); -+ shred_file(name, log); - - return 0; - } -@@ -697,7 +742,7 @@ - mailCommand, logNum, - log); - if (!hasErrors) -- hasErrors = removeLogFile(mailFilename); -+ hasErrors = removeLogFile(mailFilename, log); - } - mail_out = i; - } -@@ -737,7 +782,7 @@ - mailLogWrapper(mailFilename, mailCommand, - logNum, log); - if (!hasErrors) -- hasErrors = removeLogFile(mailFilename); -+ hasErrors = removeLogFile(mailFilename, log); - } - } - } -@@ -954,7 +999,7 @@ - } - - if (!hasErrors && rotNames->disposeName) -- hasErrors = removeLogFile(rotNames->disposeName); -+ hasErrors = removeLogFile(rotNames->disposeName, log); - - #ifdef WITH_SELINUX - if (selinux_enabled) { ---- logrotate-3.7.5/logrotate.8.shred 2007-05-14 09:26:02.000000000 +0200 -+++ logrotate-3.7.5/logrotate.8 2007-05-14 10:42:16.000000000 +0200 -@@ -330,6 +330,10 @@ - not be executed for the affected log only. - - .TP -+\fBnoshred\fR -+Do not use \fBshred\fR when deleting old log files. See also \fBshred\fR. -+ -+.TP - \fBnotifempty\fR - Do not rotate the log if it is empty (this overrides the \fBifempty\fR option). - -@@ -403,6 +407,16 @@ - actions will not be executed for any logs. This option overrides the - \fBnosharedscripts\fR option and implies \fBcreate\fR option. - -+.TP -+\fBshred\fR -+Delete log files using \fBshred\fR -u instead of unlink(). This should -+ensure that logs are not readable after their scheduled deletion; this is -+off by default. See also \fBnoshred\fR. -+ -+.TP -+\fBshredcycles\fR \fIcount\fR -+Asks GNU \fBshred\fR to overwite log files \fBcount\fR times before -+deletion. Without this option, \fBshred\fR's default will be used. - - .TP - \fBstart \fIcount\fR ---- logrotate-3.7.5/config.c.shred 2007-05-14 09:26:42.000000000 +0200 -+++ logrotate-3.7.5/config.c 2007-05-14 10:32:37.000000000 +0200 -@@ -432,6 +432,7 @@ - /* uncompress_prog */ NULL, - /* compress_ext */ NULL, - /* flags */ LOG_FLAG_IFEMPTY, -+ /* shred_cycles */ 0, - /* createMode/Uid/Gid */ NO_MODE, NO_UID, NO_GID, - /* compress_options_list/count */ NULL, 0 - }; -@@ -638,6 +639,14 @@ - newlog->flags &= ~LOG_FLAG_DELAYCOMPRESS; - - *endtag = oldchar, start = endtag; -+ } else if (!strcmp(start, "shred")) { -+ newlog->flags |= LOG_FLAG_SHRED; -+ -+ *endtag = oldchar, start = endtag; -+ } else if (!strcmp(start, "noshred")) { -+ newlog->flags &= ~LOG_FLAG_SHRED; -+ -+ *endtag = oldchar, start = endtag; - } else if (!strcmp(start, "sharedscripts")) { - newlog->flags |= LOG_FLAG_SHAREDSCRIPTS; - -@@ -833,7 +842,22 @@ - *endtag = oldchar, start = endtag; - } - #endif -- } else if (!strcmp(start, "daily")) { -+ } else if (!strcmp(start, "shredcycles")) { -+ *endtag = oldchar, start = endtag; -+ -+ if (!isolateValue(configFile, lineNum, "shred cycles", -+ &start, &endtag)) { -+ oldchar = *endtag, *endtag = '\0'; -+ -+ newlog->shred_cycles = strtoul(start, &chptr, 0); -+ if (*chptr || newlog->shred_cycles < 0) { -+ message(MESS_ERROR, "%s:%d bad shred cycles '%s'\n", -+ configFile, lineNum, start); -+ return 1; -+ } -+ *endtag = oldchar, start = endtag; -+ } -+ } else if (!strcmp(start, "daily")) { - *endtag = oldchar, start = endtag; - - newlog->criterium = ROT_DAYS; diff --git a/logrotate.spec b/logrotate.spec index 6b1605e..bd6469f 100644 --- a/logrotate.spec +++ b/logrotate.spec @@ -1,7 +1,7 @@ Summary: Rotates, compresses, removes and mails system log files Name: logrotate -Version: 3.7.5 -Release: 5%{?dist} +Version: 3.7.6 +Release: 1%{?dist} License: GPL Group: System Environment/Base # The source for this package was pulled from cvs. @@ -12,11 +12,6 @@ Group: System Environment/Base # cd logrotate # make create-archive Source: logrotate-%{version}.tar.gz -Patch1: logrotate-3.7.5-errorHandling.patch -Patch2: logrotate-3.7.5-shred.patch -Patch3: logrotate-3.7.5-cfengine.patch -Patch4: logrotate-3.7.5-date.patch -Patch5: logrotate-3.7.5-logfn.patch Requires: coreutils >= 5.92 BuildRequires: libselinux-devel BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -34,11 +29,6 @@ log files on your system. %prep %setup -q -%patch1 -p1 -b .errorHandling -%patch2 -p1 -b .shred -%patch3 -p1 -b .cfengine -%patch4 -p1 -b .dateext -%patch5 -p1 -b .logfn %build make %{?_smp_mflags} RPM_OPT_FLAGS="$RPM_OPT_FLAGS" WITH_SELINUX=yes @@ -68,6 +58,14 @@ rm -rf $RPM_BUILD_ROOT %attr(0644, root, root) %verify(not size md5 mtime) %config(noreplace) %{_localstatedir}/lib/logrotate.status %changelog +* Tue Aug 07 2007 Tomas Smetana 3.7.6-1 +- new upstream version +- fix #248565 logrotate never rotates /var/log/btmp +- fix compile warnings +- tabooext accepts wildcards (related #247816) +- fix minor errors and update man page (related #250059) +- fix handling of size directive (related #247410) + * Thu May 31 2007 Tomas Smetana 3.7.5-5 - fix ignoring pre/postrotate arguments (related #241766) diff --git a/sources b/sources index 775f4e6..d6b7c61 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -2b25c645bbcc52abc12ba6a4d52b18e5 logrotate-3.7.5.tar.gz +cafaaf07c0688398c80ef234d40ec0e4 logrotate-3.7.6.tar.gz