diff options
author | Marc Kleine-Budde <mkl@pengutronix.de> | 2006-09-04 15:17:48 +0000 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2006-09-04 15:17:48 +0000 |
commit | ef414ffc029cde393e4ef812629b20c1505f9174 (patch) | |
tree | a9d50c38a9c8ffcf01ce22b072d84df855006f14 /patches/logrotate-3.7.1 | |
parent | 7dcb203793f816b3a4dd529dd19ab18056a9b132 (diff) | |
download | ptxdist-ef414ffc029cde393e4ef812629b20c1505f9174.tar.gz ptxdist-ef414ffc029cde393e4ef812629b20c1505f9174.tar.xz |
git-svn-id: https://svn.pengutronix.de/svn/ptxdist/trunks/ptxdist-trunk@6027 33e552b5-05e3-0310-8538-816dae2090ed
Diffstat (limited to 'patches/logrotate-3.7.1')
26 files changed, 1662 insertions, 0 deletions
diff --git a/patches/logrotate-3.7.1/generic/compressutime.patch b/patches/logrotate-3.7.1/generic/compressutime.patch new file mode 100644 index 000000000..e2da5cba2 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/compressutime.patch @@ -0,0 +1,34 @@ +Preserve mtime/atime on compression. (Closes: #286957) + +--- ./logrotate.c 2005-09-03 14:07:42.000000000 +0100 ++++ /tmp/dpep-work.m2M7hf/logrotate-3.7.1/logrotate.c 2005-09-03 14:08:14.000000000 +0100 +@@ -12,6 +12,8 @@ + #include <time.h> + #include <unistd.h> + #include <glob.h> ++#include <sys/types.h> ++#include <utime.h> + + #ifdef WITH_SELINUX + #include <selinux/selinux.h> +@@ -120,6 +122,7 @@ + static int compressLogFile(char * name, logInfo * log, struct stat *sb) { + char * compressedName; + const char ** fullCommand; ++ struct utimbuf utim; + int inFile; + int outFile; + int i; +@@ -190,6 +193,12 @@ + message(MESS_ERROR, "failed to compress log %s\n", name); + return 1; + } ++ ++ utim.actime = sb->st_atime; ++ utim.modtime = sb->st_mtime; ++ utime(compressedName,&utim); ++ /* If we can't change atime/mtime, it's not a disaster. ++ It might possibly fail under SELinux. */ + + unlink(name); + diff --git a/patches/logrotate-3.7.1/generic/configparse.patch b/patches/logrotate-3.7.1/generic/configparse.patch new file mode 100644 index 000000000..a86eadb39 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/configparse.patch @@ -0,0 +1,25 @@ +# Loosens the config syntax checking to allow more flexibility. +# (Closes: #95617,#95630) + +Index: logrotate-3.7.1/config.c +=================================================================== +--- logrotate-3.7.1.orig/config.c 2006-04-08 20:46:40.250457779 +0100 ++++ logrotate-3.7.1/config.c 2006-04-08 20:48:15.188228344 +0100 +@@ -768,7 +768,7 @@ + + while (*start) { + chptr = start; +- while (!isspace(*chptr) && *chptr != ',' && *chptr) ++ while (!isspace(*chptr) && /* *chptr != ',' && */ *chptr) + chptr++; + + tabooExts = realloc(tabooExts, sizeof(*tabooExts) * +@@ -780,7 +780,7 @@ + tabooCount++; + + start = chptr; +- if (*start == ',') start++; ++ /* if (*start == ',') start++; */ + while (isspace(*start) && *start) start++; + } + diff --git a/patches/logrotate-3.7.1/generic/cpp-crossbuild.patch b/patches/logrotate-3.7.1/generic/cpp-crossbuild.patch new file mode 100644 index 000000000..783e405ce --- /dev/null +++ b/patches/logrotate-3.7.1/generic/cpp-crossbuild.patch @@ -0,0 +1,21 @@ +Closes: #284040 +Patch from: NIIBE Yutaka <gniibe@fsij.org> + +Cross-building logrotate with dpkg-cross, I encountered a problem. +dpkg-cross sets CPP variable, and compilation failures, because +the executable 'cpp' does not accept multiple input files. + + +Index: logrotate-3.7.1/Makefile +=================================================================== +--- logrotate-3.7.1.orig/Makefile 2003-10-09 21:05:07.000000000 +0100 ++++ logrotate-3.7.1/Makefile 2006-04-08 21:21:31.333853922 +0100 +@@ -88,7 +88,7 @@ + rm -f $(OBJS) $(PROG) core* .depend + + depend: +- $(CPP) $(CFLAGS) -M $(SOURCES) > .depend ++ $(CC) -E $(CFLAGS) -M $(SOURCES) > .depend + + .PHONY : test + test: $(TARGET) diff --git a/patches/logrotate-3.7.1/generic/datehack.patch b/patches/logrotate-3.7.1/generic/datehack.patch new file mode 100644 index 000000000..fa58fbd43 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/datehack.patch @@ -0,0 +1,16 @@ +No longer consider state file dates before 1996 as fatal errors. +(Closes: #65534) + +Index: logrotate-3.7.1/logrotate.c +=================================================================== +--- logrotate-3.7.1.orig/logrotate.c 2006-04-08 20:46:40.217463729 +0100 ++++ logrotate-3.7.1/logrotate.c 2006-04-08 20:52:51.770419373 +0100 +@@ -1145,7 +1145,7 @@ + } + + /* Hack to hide earlier bug */ +- if ((year != 1900) && (year < 1996 || year > 2100)) { ++ if ((year != 1900) && (year < 1970 || year > 2100)) { + message(MESS_ERROR, "bad year %d for file %s in state file %s\n", + year, argv[0], stateFilename); + fclose(f); diff --git a/patches/logrotate-3.7.1/generic/deb-config-h.patch b/patches/logrotate-3.7.1/generic/deb-config-h.patch new file mode 100644 index 000000000..3e78b509b --- /dev/null +++ b/patches/logrotate-3.7.1/generic/deb-config-h.patch @@ -0,0 +1,24 @@ +Fix locations of STATEFILE and DEFAULT_MAIL_COMMAND for Debian. + + +Index: logrotate-3.7.1/config.h +=================================================================== +--- logrotate-3.7.1.orig/config.h 2006-04-08 20:26:13.052651364 +0100 ++++ logrotate-3.7.1/config.h 2006-04-08 20:51:24.180005096 +0100 +@@ -20,7 +20,7 @@ + * Default settings for Linux - leave these last. + */ + #ifndef DEFAULT_MAIL_COMMAND +- #define DEFAULT_MAIL_COMMAND "/bin/mail" ++ #define DEFAULT_MAIL_COMMAND "/usr/bin/mail" + #endif + + #ifndef COMPRESS_COMMAND +@@ -36,6 +36,6 @@ + #endif + + #ifndef STATEFILE +- #define STATEFILE "/var/lib/logrotate.status" ++ #define STATEFILE "/var/lib/logrotate/status" + #endif + diff --git a/patches/logrotate-3.7.1/generic/deb-taboos.patch b/patches/logrotate-3.7.1/generic/deb-taboos.patch new file mode 100644 index 000000000..7d3d0f88d --- /dev/null +++ b/patches/logrotate-3.7.1/generic/deb-taboos.patch @@ -0,0 +1,17 @@ +Fix the taboo list to avoid .dpkg-old, etc. + + + +Index: logrotate-3.7.1/config.c +=================================================================== +--- logrotate-3.7.1.orig/config.c 2006-04-08 20:46:40.147476352 +0100 ++++ logrotate-3.7.1/config.c 2006-04-08 20:48:26.323326011 +0100 +@@ -30,6 +30,8 @@ + #endif + + static char * defTabooExts[] = { ".rpmsave", ".rpmorig", "~", ",v", ++ ".disabled", ".dpkg-old", ".dpkg-dist", ++ ".dpkg-new", + ".rpmnew", ".swp" }; + static int defTabooCount = sizeof(defTabooExts) / sizeof(char *); + diff --git a/patches/logrotate-3.7.1/generic/dst.patch b/patches/logrotate-3.7.1/generic/dst.patch new file mode 100644 index 000000000..08538eb4c --- /dev/null +++ b/patches/logrotate-3.7.1/generic/dst.patch @@ -0,0 +1,32 @@ +Closes: #278591 +Patch from: Holger Weiss <holger@ZEDAT.FU-Berlin.DE> + +If you call logrotate once a week between 00:00 and 01:00 AM and +daylight saving time is in effect, "weekly" rotations will be done only +once in two weeks. E.g., the following crontab won't work as expected: + +12 0 * * 1 /usr/sbin/logrotate + +logrotate uses the tm struct "lastRotated" in order to find out whether +a logfile needs rotating. "lastRotated" is filled by first setting +everything to zero, then setting the mday, month and year of the last +rotation and then calling mktime(3) in order to normalize the rest of +the struct. The problem is that if daylight saving time is in effect, +mktime() will increment "lastRotated.tm_isdst" from 0 to 1 and push +"lastRotated" by one hour. Hence, the current time will be compared +with the day of the last rotation, 01:00 AM. This can be solved by +setting lastRotated.tm_isdst correctly prior to the mktime() call. + + +Index: logrotate-3.7.1/logrotate.c +=================================================================== +--- logrotate-3.7.1.orig/logrotate.c 2006-04-08 21:36:03.268110593 +0100 ++++ logrotate-3.7.1/logrotate.c 2006-04-08 21:36:11.342764986 +0100 +@@ -78,6 +78,7 @@ + states[i].lastRotated.tm_mon = now.tm_mon; + states[i].lastRotated.tm_mday = now.tm_mday; + states[i].lastRotated.tm_year = now.tm_year; ++ states[i].lastRotated.tm_isdst = now.tm_isdst; + + /* fill in the rest of the st->lastRotated fields */ + lr_time = mktime(&states[i].lastRotated); diff --git a/patches/logrotate-3.7.1/generic/man-189243.patch b/patches/logrotate-3.7.1/generic/man-189243.patch new file mode 100644 index 000000000..46a5e4acc --- /dev/null +++ b/patches/logrotate-3.7.1/generic/man-189243.patch @@ -0,0 +1,22 @@ +Fix location of killall in the examples. (Closes: #189243) + +--- /home/pm/deb/logrotate/logrotate-3.7/logrotate.8 2004-02-11 21:18:23.000000000 +0000 ++++ logrotate-3.7/logrotate.8 2004-02-11 21:18:54.000000000 +0000 +@@ -83,7 +83,7 @@ + rotate 5 + weekly + postrotate +- /sbin/killall -HUP syslogd ++ /usr/bin/killall -HUP syslogd + endscript + } + +@@ -93,7 +93,7 @@ + size=100k + sharedscripts + postrotate +- /sbin/killall -HUP httpd ++ /usr/bin/killall -HUP httpd + endscript + } + diff --git a/patches/logrotate-3.7.1/generic/man-333996.patch b/patches/logrotate-3.7.1/generic/man-333996.patch new file mode 100644 index 000000000..11c2731db --- /dev/null +++ b/patches/logrotate-3.7.1/generic/man-333996.patch @@ -0,0 +1,58 @@ +Closes: #333996 +Patch from: Adrian Knoth <adi@drcomp.erfurt.thur.de> + +The manpage contains several sentences with the same mistake: +the use of "then" instead of "than". + + +Index: logrotate-3.7.1/logrotate.8 +=================================================================== +--- logrotate-3.7.1.orig/logrotate.8 2006-04-08 21:47:40.000000000 +0100 ++++ logrotate-3.7.1/logrotate.8 2006-04-08 21:48:43.456864197 +0100 +@@ -125,7 +125,7 @@ + \fI/var/log/httpd/access.log\fR and \fI/var/log/httpd/error.log\fR. + Each is rotated whenever it grows over 100k in size, and the old log + files are mailed (uncompressed) to www@my.org after going through 5 +-rotations, rather then being removed. The \fBsharedscripts\fR means that ++rotations, rather than being removed. The \fBsharedscripts\fR means that + the \fBpostrotate\fR script will only be run once (after the old logs + have been compressed), not once for each + log which is rotated. Note that log file names may be enclosed in +@@ -135,7 +135,7 @@ + + The last section defines the parameters for all of the files in + \fI/var/log/news\fR. Each file is rotated on a monthly basis. This is +-considered a single rotation directive and if errors occur for more then ++considered a single rotation directive and if errors occur for more than + one file, the log files are not compressed. + + Please use wildcards with caution. If you specify *, \fBlogrotate\fR will +@@ -366,7 +366,7 @@ + \fBrotate \fIcount\fR + Log files are rotated \fIcount\fR times before being removed or mailed to the + address specified in a \fBmail\fR directive. If \fIcount\fR is 0, old versions +-are removed rather then rotated. ++are removed rather than rotated. + + .TP + \fBsharedscripts\fR +@@ -381,7 +381,7 @@ + + .TP + \fBsize \fIsize\fR[\fBG\fR|\fBM\fR|\fBk\fR] +-Log files are rotated when they grow bigger then \fIsize\fR bytes. If ++Log files are rotated when they grow bigger than \fIsize\fR bytes. If + \fIsize\fR is followed by \fIM\fR, the size if assumed to be in megabytes. + If the \fIG\fR suffix is used, the size is in gigabytes. + If the \fIk\fR suffix is used, the size is in kilobytes. So \fBsize 100\fR, +@@ -408,8 +408,8 @@ + + .TP + \fBweekly\fR +-Log files are rotated if the current weekday is less then the weekday +-of the last rotation or if more then a week has passed since the last ++Log files are rotated if the current weekday is less than the weekday ++of the last rotation or if more than a week has passed since the last + rotation. This is normally the same as rotating logs on the first day + of the week, but if \fBlogrotate\fR is not being run every night a log + rotation will happen at the first valid opportunity. diff --git a/patches/logrotate-3.7.1/generic/man-lastaction.patch b/patches/logrotate-3.7.1/generic/man-lastaction.patch new file mode 100644 index 000000000..9babc4dfb --- /dev/null +++ b/patches/logrotate-3.7.1/generic/man-lastaction.patch @@ -0,0 +1,16 @@ +Fix typo in the lastaction section of the manpage. It refers to itself +rather than to firstaction. + +Index: logrotate-3.7.1/logrotate.8 +=================================================================== +--- logrotate-3.7.1.orig/logrotate.8 2006-04-08 21:11:37.760424103 +0100 ++++ logrotate-3.7.1/logrotate.8 2006-04-08 21:13:28.917607025 +0100 +@@ -359,7 +359,7 @@ + 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 a log file definition. See also \fBlastaction\fR. ++appear inside a log file definition. See also \fBfirstaction\fR. + + .TP + \fBrotate \fIcount\fR diff --git a/patches/logrotate-3.7.1/generic/man-mailtypo.patch b/patches/logrotate-3.7.1/generic/man-mailtypo.patch new file mode 100644 index 000000000..578d6694a --- /dev/null +++ b/patches/logrotate-3.7.1/generic/man-mailtypo.patch @@ -0,0 +1,16 @@ +Fix the markup on the "mail" part of the manpage (Closes: #300644) + + +Index: logrotate-3.7.1/logrotate.8 +=================================================================== +--- logrotate-3.7.1.orig/logrotate.8 2006-04-08 21:14:56.187543069 +0100 ++++ logrotate-3.7.1/logrotate.8 2006-04-08 21:16:19.525257240 +0100 +@@ -45,7 +45,7 @@ + correctly. + + .TP +-\fB-m\R, \B-\-mail <command>\fR ++\fB-m\fR, \fB-\-mail <command>\fR + Tells \fBlogrotate\fR which command to use when mailing logs. This + command should accept two arguments: 1) the subject of the message, and + 2) the recipient. The command must then read a message on standard input diff --git a/patches/logrotate-3.7.1/generic/man-overriden.patch b/patches/logrotate-3.7.1/generic/man-overriden.patch new file mode 100644 index 000000000..3a7cceacb --- /dev/null +++ b/patches/logrotate-3.7.1/generic/man-overriden.patch @@ -0,0 +1,16 @@ +Fix manpage typo (Closes: #310337) + + +Index: logrotate-3.7.1/logrotate.8 +=================================================================== +--- logrotate-3.7.1.orig/logrotate.8 2006-04-08 21:13:28.917607025 +0100 ++++ logrotate-3.7.1/logrotate.8 2006-04-08 21:14:56.187543069 +0100 +@@ -329,7 +329,7 @@ + and is assumed to be relative to the directory holding the log file + unless an absolute path name is specified. When this option is used all + old versions of the log end up in \fIdirectory\fR. This option may be +-overriden by the \fBnoolddir\fR option. ++overridden by the \fBnoolddir\fR option. + + .TP + \fBpostrotate\fR/\fBendscript\fR diff --git a/patches/logrotate-3.7.1/generic/man-rh-1.patch b/patches/logrotate-3.7.1/generic/man-rh-1.patch new file mode 100644 index 000000000..c4c6d8fd7 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/man-rh-1.patch @@ -0,0 +1,26 @@ +Fixes from upstream 3.7.1-4: + * Typo and missing information in man page (#139346) + +Index: logrotate-3.7.1/logrotate.8 +=================================================================== +--- logrotate-3.7.1.orig/logrotate.8 2006-04-08 21:16:19.525257240 +0100 ++++ logrotate-3.7.1/logrotate.8 2006-04-08 21:17:39.954145340 +0100 +@@ -126,7 +126,8 @@ + Each is rotated whenever it grows over 100k is size, and the old log + files are mailed (uncompressed) to www@my.org after going through 5 + rotations, rather then being removed. The \fBsharedscripts\fR means that +-the \fBpostrotate\fR script will only be run once, not once for each ++the \fBpostrotate\fR script will only be run once (after the old logs ++have been compressed), not once for each + log which is rotated. Note that log file names may be enclosed in + quotes (and that quotes are required if the name contains spaces). + Normal shell quoting rules apply, with \fB'\fR, \fB"\fR, and \fB\\\fR +@@ -384,7 +385,7 @@ + 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. ++option and implies \fBcreate\fR option. + + .TP + \fBstart \fIcount\fR diff --git a/patches/logrotate-3.7.1/generic/man-sizetypo.patch b/patches/logrotate-3.7.1/generic/man-sizetypo.patch new file mode 100644 index 000000000..ea9154c34 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/man-sizetypo.patch @@ -0,0 +1,13 @@ +Fix manpage typo in the size example. + +--- /home/pm/deb/logrotate/logrotate-3.7/logrotate.8 2004-09-13 22:50:08.000000000 +0100 ++++ logrotate-3.7/logrotate.8 2004-09-13 22:50:25.000000000 +0100 +@@ -90,7 +90,7 @@ + "/var/log/httpd/access.log" /var/log/httpd/error.log { + rotate 5 + mail www@my.org +- size=100k ++ size 100k + sharedscripts + postrotate + /usr/bin/killall -HUP httpd diff --git a/patches/logrotate-3.7.1/generic/man-startcount.patch b/patches/logrotate-3.7.1/generic/man-startcount.patch new file mode 100644 index 000000000..5553e6f74 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/man-startcount.patch @@ -0,0 +1,16 @@ +Inconsistency in manpage logrotate(8), start directive +(Closes: #290628) + +Index: logrotate-3.7.1/logrotate.8 +=================================================================== +--- logrotate-3.7.1.orig/logrotate.8 2006-04-08 21:09:24.530501346 +0100 ++++ logrotate-3.7.1/logrotate.8 2006-04-08 21:11:37.760424103 +0100 +@@ -392,7 +392,7 @@ + you specify 0, the logs will be created with a .0 extension as they are + rotated from the original log files. If you specify 9, log files will + be created with a .9, skipping 0-8. Files will still be rotated the +-number of times specified with the \fBcount\fR directive. ++number of times specified with the \fBrotate\fR directive. + + .TP + \fBtabooext\fR [+] \fIlist\fR diff --git a/patches/logrotate-3.7.1/generic/manpage.patch b/patches/logrotate-3.7.1/generic/manpage.patch new file mode 100644 index 000000000..0a43dbf1f --- /dev/null +++ b/patches/logrotate-3.7.1/generic/manpage.patch @@ -0,0 +1,399 @@ +Closes: #101272, #335060 +Patches from: J S Bygott <jsb_no_spm@jsbygott.fsnet.co.uk> + +General fixes to manpages. + + +Index: logrotate-3.7.1/logrotate.8 +=================================================================== +--- logrotate-3.7.1.orig/logrotate.8 2006-04-08 21:43:29.280038309 +0100 ++++ logrotate-3.7.1/logrotate.8 2006-04-08 21:45:53.721194620 +0100 +@@ -3,7 +3,8 @@ + .SH NAME + logrotate \- rotates, compresses, and mails system logs + .SH SYNOPSIS +-\fBlogrotate\fR [-dv] [-f|--force] [-s|--state \fIfile\fR] \fIconfig_file\fR+ ++\fBlogrotate\fR [\fB\-dv\fR] [\fB\-f\fR|\fB\-\-force\fR] ++[\fB\-s\fR|\fB-\-state\ \fIstatefile\fR] \fIconfig_file\fR .. + .SH DESCRIPTION + \fBlogrotate\fR is designed to ease administration of systems that generate + large numbers of log files. It allows automatic rotation, compression, +@@ -11,16 +12,16 @@ + weekly, monthly, or when it grows too large. + .P + Normally, \fBlogrotate\fR is run as a daily cron job. It will not modify +-a log multiple times in one day unless the criterium for that log is +-based on the log's size and \fBlogrotate\fR is being run multiple times +-each day, or unless the \fB-f\fR or \fB-force\fR option is used. ++a log more than once in one day unless the criterion for that log is ++based on the log's size and \fBlogrotate\fR is being run more than once ++each day, or unless the \fB-f\fR or \fB-\-force\fR option is used. + .P + Any number of config files may be given on the command line. Later config + files may override the options given in earlier files, so the order +-in which the \fBlogrotate\fR config files are listed in is important. ++in which the \fBlogrotate\fR config files are listed is important. + Normally, a single config file which includes any other config files + which are needed should be used. See below for more information on how +-to use the \fIinclude\fR directive to accomplish this. If a directory ++to use the \fBinclude\fR directive to accomplish this. If a directory + is given on the command line, every file in that directory is used as + a config file. + .P +@@ -36,37 +37,42 @@ + be made to the logs or to the \fBlogrotate\fR state file. + + .TP +-\fB-f, -\-force\fR ++\fB-f\fR, \fB-\-force\fR + Tells \fBlogrotate\fR to force the rotation, even if it doesn't think + this is necessary. Sometimes this is useful after adding new entries to +-\fBlogrotate\fR, or if old log files have been removed by hand, as the +-new files will be created, and logging will continue correctly. ++a \fBlogrotate\fR config file, or if old log files have been removed ++by hand, as the new files will be created, and logging will continue ++correctly. + + .TP +-\fB-m, -\-mail <command>\fR ++\fB-m\R, \B-\-mail <command>\fR + Tells \fBlogrotate\fR which command to use when mailing logs. This + command should accept two arguments: 1) the subject of the message, and + 2) the recipient. The command must then read a message on standard input +-and mail it to the recipient. The default mail command is \fB/bin/mail ++and mail it to the recipient. The default mail command is \fB/usr/bin/mail + -s\fR. + + .TP +-\fB-s, -\-state <statefile>\fR ++\fB-s\fR, \fB-\-state <statefile>\fR + Tells \fBlogrotate\fR to use an alternate state file. This is useful +-if logrotate is being run as a different user for various sets of ++if \fBlogrotate\fR is being run as a different user for various sets of + log files. The default state file is \fI/var/lib/logrotate/status\fR. + + .TP + \fB-\-usage\fR + Prints a short usage message. + ++.TP ++\fB-v\fR, \fB--verbose\fR ++Display messages during rotation. ++ + .SH CONFIGURATION FILE + + \fBlogrotate\fR reads everything about the log files it should be handling + from the series of configuration files specified on the command line. Each + configuration file can set global options (local definitions override + global ones, and later definitions override earlier ones) and specify +-a logfile to rotate. A simple configuration file looks like this: ++some logfiles to rotate. A simple configuration file looks like this: + + .nf + .ta +3i +@@ -77,7 +83,7 @@ + rotate 5 + weekly + postrotate +- /sbin/killall -HUP syslogd ++ /sbin/killall -HUP syslogd + endscript + } + +@@ -87,7 +93,7 @@ + size=100k + sharedscripts + postrotate +- /sbin/killall -HUP httpd ++ /sbin/killall -HUP httpd + endscript + } + +@@ -97,7 +103,7 @@ + olddir /var/log/news/old + missingok + postrotate +- kill -HUP `cat /var/run/inn.pid` ++ kill -HUP `cat /var/run/inn.pid` + endscript + nocompress + } +@@ -107,9 +113,9 @@ + The first few lines set global options; in the example, logs are + compressed after they are rotated. Note that comments may appear + anywhere in the config file as long as the first non-whitespace +-character on the line is a #. ++character on the line is a \fB#\fR. + +-The next section of the config files defined how to handle the log file ++The next section of the config file defines how to handle the log file + \fI/var/log/messages\fR. The log will go through five weekly rotations before + being removed. After the log file has been rotated (but before the old + version of the log has been compressed), the command +@@ -117,13 +123,13 @@ + + The next section defines the parameters for both + \fI/var/log/httpd/access.log\fR and \fI/var/log/httpd/error.log\fR. +-They are rotated whenever is grows over 100k is size, and the old logs ++Each is rotated whenever it grows over 100k in size, and the old log + files are mailed (uncompressed) to www@my.org after going through 5 + rotations, rather then being removed. The \fBsharedscripts\fR means that + the \fBpostrotate\fR script will only be run once, not once for each +-log which is rotated. Note that the double quotes around the first filename +-at the beginning of this section allows logrotate to rotate logs with +-spaces in the name. Normal shell quoting rules apply, with ', ", and \\ ++log which is rotated. Note that log file names may be enclosed in ++quotes (and that quotes are required if the name contains spaces). ++Normal shell quoting rules apply, with \fB'\fR, \fB"\fR, and \fB\\\fR + characters supported. + + The last section defines the parameters for all of the files in +@@ -135,29 +141,33 @@ + rotate all files, including previously rotated ones. A way around this + is to use the \fBolddir\fR directive or a more exact wildcard (such as *.log). + ++If the directory \fI/var/log/news\fR does not exist, this will cause ++\fBlogrotate\fR to report an error. This error cannot be stopped with ++the \fBmissingok\fR directive. ++ + Here is more information on the directives which may be included in + a \fBlogrotate\fR configuration file: + + .TP + \fBcompress\fR +-Old versions of log files are compressed with \fBgzip\fR by default. See also +-\fBnocompress\fR. ++Old versions of log files are compressed with \fBgzip\fR(1) by default. ++See also \fBnocompress\fR. + + .TP + \fBcompresscmd\fR + Specifies which command to use to compress log files. The default is +-\fBgzip\fR. See also \fBcompress\fR. ++\fBgzip\fR(1). See also \fBcompress\fR. + + .TP + \fBuncompresscmd\fR + Specifies which command to use to uncompress log files. The default is +-\fBgunzip\fR. ++\fBgunzip\fR(1). + + .TP + \fBcompressext\fR + Specifies which extension to use on compressed logfiles, if compression +-is enabled. The default follows that of the configured compression +-command. ++is enabled. The default follows that of the default compression ++command (.gz). + + .TP + \fBcompressoptions\fR +@@ -174,9 +184,9 @@ + + .TP + \fBcopytruncate\fR +-Truncate the original log file in place after creating a copy, +-instead of moving the old log file and optionally creating a new one, +-It can be used when some program can not be told to close its logfile ++Truncate the original log file to zero size in place after creating a copy, ++instead of moving the old log file and optionally creating a new one. ++It can be used when some program cannot be told to close its logfile + and thus might continue writing (appending) to the previous log file forever. + Note that there is a very small time slice between copying the file and + truncating it, so some logging data might be lost. +@@ -188,7 +198,7 @@ + Immediately after rotation (before the \fBpostrotate\fR script is run) + the log file is created (with the same name as the log file just rotated). + \fImode\fR specifies the mode for the log file in octal (the same +-as \fBchmod(2)\fR), \fIowner\fR specifies the user name who will own the ++as \fBchmod\fR(2)), \fIowner\fR specifies the user name who will own the + log file, and \fIgroup\fR specifies the group the log file will belong + to. Any of the log file attributes may be omitted, in which case those + attributes for the new file will use the same values as the original log +@@ -207,20 +217,20 @@ + .TP + \fBdelaycompress\fR + Postpone compression of the previous log file to the next rotation cycle. +-This has only effect when used in combination with \fBcompress\fR. +-It can be used when some program can not be told to close its logfile ++This only has effect when used in combination with \fBcompress\fR. ++It can be used when some program cannot be told to close its logfile + and thus might continue writing to the previous log file for some time. + + .TP + \fBextension \fIext\fR + Log files are given the final extension \fIext\fR after rotation. If +-compression is used, the compression extension (normally \fB.gz\fR) ++compression is used, the compression extension (normally \fI.gz\fR) + appears after \fIext\fR. + + .TP + \fBifempty\fR +-Rotate the log file even if it is empty, overiding the \fBnotifempty\fR +-option (ifempty is the default). ++Rotate the log file even if it is empty, overriding the \fBnotifempty\fR ++option (\fBifempty\fR is the default). + + .TP + \fBinclude \fIfile_or_directory\fR +@@ -231,12 +241,12 @@ + which are ignored are files which are not regular files (such as + directories and named pipes) and files whose names end with one of + the taboo extensions, as specified by the \fBtabooext\fR directive. +-The \fBinclude\fR directive may not appear inside of a log file ++The \fBinclude\fR directive may not appear inside a log file + definition. + + .TP + \fBmail \fIaddress\fR +-When a log is rotated out-of-existence, it is mailed to \fIaddress\fR. If ++When a log is rotated out of existence, it is mailed to \fIaddress\fR. If + no mail should be generated by a particular log, the \fBnomail\fR directive + may be used. + +@@ -268,8 +278,7 @@ + + .TP + \fBnocompress\fR +-Old versions of log files are not compressed with \fBgzip\fR. See also +-\fBcompress\fR. ++Old versions of log files are not compressed. See also \fBcompress\fR. + + .TP + \fBnocopy\fR +@@ -292,7 +301,7 @@ + + .TP + \fBnomail\fR +-Don't mail old log files to any address. ++Do not mail old log files to any address. + + .TP + \fBnomissingok\fR +@@ -300,12 +309,12 @@ + + .TP + \fBnoolddir\fR +-Logs are rotated in the same directory the log normally resides in (this ++Logs are rotated in the directory they normally reside in (this + overrides the \fBolddir\fR option). + + .TP + \fBnosharedscripts\fR +-Run \fBprerotate\fR and \fBpostrotate\fR scripts for every script which ++Run \fBprerotate\fR and \fBpostrotate\fR scripts for every log which + is rotated (this is the default, and overrides the \fBsharedscripts\fR + option). + +@@ -326,16 +335,15 @@ + \fBpostrotate\fR/\fBendscript\fR + 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. ++rotated. These directives may only appear inside a log file definition. ++See also \fBprerotate\fR. + + .TP + \fBprerotate\fR/\fBendscript\fR + The lines between \fBprerotate\fR and \fBendscript\fR (both of which + 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. ++may only appear inside a log file definition. See also \fBpostrotate\fR. + + .TP + \fBfirstaction\fR/\fBendscript\fR +@@ -351,33 +359,34 @@ + 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 \fBlastaction\fR as well. ++appear inside a log file definition. See also \fBlastaction\fR. + + .TP + \fBrotate \fIcount\fR +-Log files are rotated <count> times before being removed or mailed to the ++Log files are rotated \fIcount\fR times before being removed or mailed to the + address specified in a \fBmail\fR directive. If \fIcount\fR is 0, old versions + are removed rather then rotated. + + .TP +-\fBsize \fIsize\fR +-Log files are rotated when they grow bigger then \fIsize\fR bytes. If +-\fIsize\fR is followed by \fIM\fR, the size if assumed to be in megabytes. +-If the \fIk\fR is used, the size is in kilobytes. So \fBsize 100\fR, +-\fIsize 100k\fR, and \fIsize 100M\fR are all valid. +- +-.TP + \fBsharedscripts\fR +-Normally, \fBprescript\fR and \fBpostscript\fR scripts are run for each ++Normally, \fBprerotate\fR and \fBpostrotate\fR scripts are run for each + log which is rotated, meaning that a single script may be run multiple + times for log file entries which match multiple files (such as the +-/var/log/news/* example). If \fBsharedscript\fR is specified, the scripts ++\fI/var/log/news/*\fR example). If \fBsharedscripts\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 ++will not be run at all. This option overrides the \fBnosharedscripts\fR + option. + + .TP ++\fBsize \fIsize\fR[\fBG\fR|\fBM\fR|\fBk\fR] ++Log files are rotated when they grow bigger then \fIsize\fR bytes. If ++\fIsize\fR is followed by \fIM\fR, the size if assumed to be in megabytes. ++If the \fIG\fR suffix is used, the size is in gigabytes. ++If the \fIk\fR suffix is used, the size is in kilobytes. So \fBsize 100\fR, ++\fIsize 100k\fR, \fIsize 100M\fR and \fIsize 1G\fR are all valid. ++ ++.TP + \fBstart \fIcount\fR + This is the number to use as the base for rotation. For example, if + you specify 0, the logs will be created with a .0 extension as they are +@@ -388,18 +397,21 @@ + .TP + \fBtabooext\fR [+] \fIlist\fR + The current taboo extension list is changed (see the \fBinclude\fR directive +-for information on the taboo extensions). If a + precedes the list of +-extensions, the current taboo extension list is augmented, otherwise it ++for information on the taboo extensions). If a \fB+\fR precedes \fIlist\fR, ++the current taboo extension list is augmented by \fIlist\fR, otherwise it + is replaced. At startup, the taboo extension list +-contains .rpmorig, .rpmsave, ,v, .swp, .rpmnew, and ~. ++contains .rpmorig, .rpmsave, .dpkg-dist, .dpkg-old, .dpkg-new, .disabled, ++,v, .swp, .rpmnew, and ~. The members of the list are separated by spaces, ++not commas. ++ + + .TP + \fBweekly\fR + Log files are rotated if the current weekday is less then the weekday + of the last rotation or if more then a week has passed since the last + rotation. This is normally the same as rotating logs on the first day +-of the week, but it works better if \fIlogrotate\fR is not run every +-night. ++of the week, but if \fBlogrotate\fR is not being run every night a log ++rotation will happen at the first valid opportunity. + + .SH FILES + .PD 0 +@@ -411,11 +423,16 @@ + Configuration options. + + .SH SEE ALSO +-.IR gzip (1) ++.BR gzip (1) ++ ++.SH NOTES ++The \fBkillall\fR(1) program in Debian is found in the \fIpsmisc\fR package. + + .SH AUTHORS + .nf + Erik Troan <ewt@redhat.com> + .nf + Preston Brown <pbrown@redhat.com> ++.nf ++Corrections and changes for Debian by Paul Martin <pm@debian.org> + .fi diff --git a/patches/logrotate-3.7.1/generic/ptx-timeext.patch b/patches/logrotate-3.7.1/generic/ptx-timeext.patch new file mode 100644 index 000000000..8931e3ab6 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/ptx-timeext.patch @@ -0,0 +1,154 @@ +Index: logrotate.h +=================================================================== +--- a/logrotate.h.orig ++++ b/logrotate.h +@@ -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_TIMEEXT (1 << 10) + + #define NO_FORCE_ROTATE 0 + #define FORCE_ROTATE 1 +Index: config.c +=================================================================== +--- a/config.c.orig ++++ b/config.c +@@ -521,6 +521,14 @@ static int readConfigFile(const char * c + newlog->flags &= ~LOG_FLAG_DATEEXT; + + *endtag = oldchar, start = endtag; ++ } else if (!strcmp(start, "timeext")) { ++ newlog->flags |= (LOG_FLAG_TIMEEXT); ++ ++ *endtag = oldchar, start = endtag; ++ } else if (!strcmp(start, "notimeext")) { ++ newlog->flags &= ~LOG_FLAG_TIMEEXT; ++ ++ *endtag = oldchar, start = endtag; + } else if (!strcmp(start, "noolddir")) { + newlog->oldDir = NULL; + +Index: logrotate.8 +=================================================================== +--- a/logrotate.8.orig ++++ b/logrotate.8 +@@ -216,6 +216,14 @@ Archive old versions of log files adding + instead of simply adding a number. + + .TP ++\fBtimeext\fR ++Archive old versions of log files adding a timestamp extension like ++YYYYMMDDThhmmssZ instead of simply adding a number. ++The timestamp conforms to International Standard ISO 8601. ++20060307T114252Z -> 2006/03/07 11:42:52 Zulu (UTC) ++ ++ ++.TP + \fBdelaycompress\fR + Postpone compression of the previous log file to the next rotation cycle. + This only has effect when used in combination with \fBcompress\fR. +Index: logrotate.c +=================================================================== +--- a/logrotate.c.orig ++++ b/logrotate.c +@@ -542,7 +542,7 @@ int rotateSingleLog(logInfo * log, int l + + alloc_size = strlen(dirName) + strlen(baseName) + + strlen(log->files[logNum]) + strlen(fileext) + +- strlen(compext) + 18; ++ strlen(compext) + 18 + 8; + + oldName = alloca(alloc_size); + newName = alloca(alloc_size); +@@ -564,13 +564,17 @@ int rotateSingleLog(logInfo * log, int l + /* First compress the previous log when necessary */ + if (log->flags & LOG_FLAG_COMPRESS && + log->flags & LOG_FLAG_DELAYCOMPRESS) { +- if (log->flags & LOG_FLAG_DATEEXT) { ++ if (log->flags & LOG_FLAG_DATEEXT || ++ log->flags & LOG_FLAG_TIMEEXT) { + /* glob for uncompressed files with our pattern */ + glob_pattern = malloc(strlen(dirName) + strlen(baseName) +- + strlen(fileext) + 44 ); ++ + strlen(fileext) + 44 + 32); + sprintf(glob_pattern, +- "%s/%s-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%s", +- dirName, baseName, fileext); ++ "%s/%s%s%s", ++ dirName, baseName, log->flags & LOG_FLAG_TIMEEXT ? ++ "-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]T[0-9][0-9][0-9][0-9][0-9][0-9]Z" : ++ "-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]", ++ fileext); + rc = glob(glob_pattern, 0, globerr, &globResult); + if (!rc && globResult.gl_pathc > 0) { + for (i = 0; i < globResult.gl_pathc && !hasErrors; i++) { +@@ -605,16 +609,20 @@ int rotateSingleLog(logInfo * log, int l + } + + firstRotated = alloca(strlen(dirName) + strlen(baseName) + +- strlen(fileext) + strlen(compext) + 30); ++ strlen(fileext) + strlen(compext) + 30 + 8); + +- if(log->flags & LOG_FLAG_DATEEXT) { ++ if(log->flags & LOG_FLAG_DATEEXT || ++ log->flags & LOG_FLAG_TIMEEXT) { + /* glob for compressed files with our pattern + * and compress ext */ + glob_pattern = malloc(strlen(dirName)+strlen(baseName) +- +strlen(fileext)+strlen(compext)+44); ++ +strlen(fileext)+strlen(compext)+44+32); + sprintf(glob_pattern, +- "%s/%s-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%s%s", +- dirName, baseName, fileext, compext); ++ "%s/%s%s%s%s", ++ dirName, baseName, log->flags & LOG_FLAG_TIMEEXT ? ++ "-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]T[0-9][0-9][0-9][0-9][0-9][0-9]Z" : ++ "-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]", ++ fileext, compext); + rc = glob(glob_pattern, 0, globerr, &globResult); + if (!rc) { + /* search for files to drop, if we find one remember it, +@@ -654,9 +662,17 @@ int rotateSingleLog(logInfo * log, int l + disposeName = NULL; + } + /* firstRotated is most recently created/compressed rotated log */ ++ if(log->flags & LOG_FLAG_TIMEEXT) ++ sprintf(firstRotated, "%s/%s-%04d%02d%02dT%02d%02d%02dZ%s%s", ++ dirName, baseName, now.tm_year+1900, ++ now.tm_mon+1, now.tm_mday, ++ now.tm_hour, now.tm_min, now.tm_sec, ++ fileext, compext); ++ else + sprintf(firstRotated, "%s/%s-%04d%02d%02d%s%s", + dirName, baseName, now.tm_year+1900, + now.tm_mon+1, now.tm_mday, fileext, compext); ++ + globfree(&globResult); + free(glob_pattern); + } else { +@@ -743,13 +759,22 @@ int rotateSingleLog(logInfo * log, int l + + finalName = oldName; + +- if(log->flags & LOG_FLAG_DATEEXT) { ++ if(log->flags & LOG_FLAG_DATEEXT || ++ log->flags & LOG_FLAG_TIMEEXT) { + char * destFile = alloca(strlen(dirName) + strlen(baseName) + +- strlen(fileext) + strlen(compext) + 30); ++ strlen(fileext) + strlen(compext) + 30 + 8); + struct stat fst_buf; ++ if(log->flags & LOG_FLAG_TIMEEXT) ++ sprintf(finalName, "%s/%s-%04d%02d%02dT%02d%02d%02dZ%s", ++ dirName, baseName, now.tm_year+1900, ++ now.tm_mon+1, now.tm_mday, ++ now.tm_hour, now.tm_min, now.tm_sec, ++ fileext); ++ else + sprintf(finalName, "%s/%s-%04d%02d%02d%s", + dirName, baseName, now.tm_year+1900, + now.tm_mon+1, now.tm_mday, fileext); ++ + sprintf(destFile, "%s%s", finalName, compext); + if(!stat(destFile,&fst_buf)) { + message (MESS_DEBUG, "destination %s already exists, skipping rotation\n", firstRotated); diff --git a/patches/logrotate-3.7.1/generic/rh-dateext.patch b/patches/logrotate-3.7.1/generic/rh-dateext.patch new file mode 100644 index 000000000..7efbf896f --- /dev/null +++ b/patches/logrotate-3.7.1/generic/rh-dateext.patch @@ -0,0 +1,319 @@ +Enhance logrotate with "dateext". +From RedHat patches + +Index: logrotate-3.7.1/logrotate.h +=================================================================== +--- logrotate-3.7.1.orig/logrotate.h 2006-04-08 20:32:36.772133783 +0100 ++++ logrotate-3.7.1/logrotate.h 2006-04-08 20:36:00.250859767 +0100 +@@ -15,6 +15,7 @@ + #define LOG_FLAG_MAILFIRST (1 << 6) + #define LOG_FLAG_SHAREDSCRIPTS (1 << 7) + #define LOG_FLAG_COPY (1 << 8) ++#define LOG_FLAG_DATEEXT (1 << 9) + + #define NO_FORCE_ROTATE 0 + #define FORCE_ROTATE 1 +Index: logrotate-3.7.1/logrotate.c +=================================================================== +--- logrotate-3.7.1.orig/logrotate.c 2006-04-08 20:32:36.773133590 +0100 ++++ logrotate-3.7.1/logrotate.c 2006-04-08 20:36:00.254859022 +0100 +@@ -11,6 +11,7 @@ + #include <sys/wait.h> + #include <time.h> + #include <unistd.h> ++#include <glob.h> + + #ifdef WITH_SELINUX + #include <selinux/selinux.h> +@@ -22,6 +23,10 @@ + #include "log.h" + #include "logrotate.h" + ++#if !defined(GLOB_ABORTED) && defined(GLOB_ABEND) ++#define GLOB_ABORTED GLOB_ABEND ++#endif ++ + typedef struct { + char * fn; + struct tm lastRotated; /* only tm.mon, tm_mday, tm_year are good! */ +@@ -42,6 +47,14 @@ + char * mailCommand = DEFAULT_MAIL_COMMAND; + time_t nowSecs = 0; + ++static int globerr(const char * pathname, int theerr) { ++ message(MESS_ERROR, "error accessing %s: %s\n", pathname, ++ strerror(theerr)); ++ ++ /* We want the glob operation to continue, so return 0 */ ++ return 1; ++} ++ + static logState * findState(const char * fn, struct stateSet * sip) { + int i; + logState * states = sip->states; +@@ -121,6 +134,17 @@ + return rc; + } + ++static int removeLogFile(char * name) { ++ message(MESS_DEBUG, "removing old log %s\n", name); ++ ++ if (!debug && unlink(name)) { ++ message(MESS_ERROR, "Failed to remove old log %s: %s\n", ++ name, strerror(errno)); ++ return 1; ++ } ++ return 0; ++} ++ + static int compressLogFile(char * name, logInfo * log, struct stat *sb) { + char * compressedName; + const char ** fullCommand; +@@ -265,6 +289,25 @@ + return rc; + } + ++static int mailLogWrapper (char * mailFilename, char * mailCommand, int logNum, logInfo * log) { ++ /* if the log is compressed (and we're not mailing a ++ * file whose compression has been delayed), we need ++ * to uncompress it */ ++ if ((log->flags & LOG_FLAG_COMPRESS) && ++ !((log->flags & LOG_FLAG_DELAYCOMPRESS) && ++ (log->flags & LOG_FLAG_MAILFIRST))) { ++ if (mailLog(mailFilename, mailCommand, ++ log->uncompress_prog, log->logAddress, ++ log->files[logNum])) ++ return 1; ++ } else { ++ if (mailLog(mailFilename, mailCommand, NULL, ++ log->logAddress, mailFilename)) ++ return 1; ++ } ++ return 0; ++} ++ + static int copyTruncate(char * currLog, char * saveLog, struct stat * sb, int flags) { + char buf[BUFSIZ]; + int fdcurr = -1, fdsave = -1; +@@ -479,6 +522,9 @@ + char * baseName; + char * dirName; + char * firstRotated; ++ char * glob_pattern; ++ glob_t globResult; ++ int rc; + size_t alloc_size; + int rotateCount = log->rotateCount ? log->rotateCount : 1; + int logStart = (log->logStart == -1) ? 1 : log->logStart; +@@ -509,7 +555,7 @@ + + alloc_size = strlen(dirName) + strlen(baseName) + + strlen(log->files[logNum]) + strlen(fileext) + +- strlen(compext) + 10; ++ strlen(compext) + 18; + + oldName = alloca(alloc_size); + newName = alloca(alloc_size); +@@ -531,25 +577,106 @@ + /* First compress the previous log when necessary */ + if (log->flags & LOG_FLAG_COMPRESS && + log->flags & LOG_FLAG_DELAYCOMPRESS) { +- struct stat sbprev; +- +- sprintf(oldName, "%s/%s.%d%s", dirName, baseName, logStart, fileext); +- if (stat(oldName, &sbprev)) { +- message(MESS_DEBUG, "previous log %s does not exist\n", +- oldName); +- } else { +- hasErrors = compressLogFile(oldName, log, &sbprev); ++ if (log->flags & LOG_FLAG_DATEEXT) { ++ /* glob for uncompressed files with our pattern */ ++ glob_pattern = malloc(strlen(dirName) + strlen(baseName) ++ + strlen(fileext) + 44 ); ++ sprintf(glob_pattern, ++ "%s/%s-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%s", ++ dirName, baseName, fileext); ++ rc = glob(glob_pattern, 0, globerr, &globResult); ++ if (!rc && globResult.gl_pathc > 0) { ++ for (i = 0; i < globResult.gl_pathc && !hasErrors; i++) { ++ struct stat sbprev; ++ ++ sprintf(oldName,"%s",(globResult.gl_pathv)[i]); ++ if (stat(oldName, &sbprev)) { ++ message(MESS_DEBUG, "previous log %s does not exist\n", ++ oldName); ++ } else { ++ hasErrors = compressLogFile(oldName, log, &sbprev); ++ } ++ } ++ } else { ++ message (MESS_DEBUG, "glob finding logs to compress failed\n"); ++ /* fallback to old behaviour */ ++ sprintf(oldName, "%s/%s.%d%s", dirName, baseName, logStart, fileext); ++ } ++ globfree(&globResult); ++ free(glob_pattern); ++ } else { ++ struct stat sbprev; ++ ++ sprintf(oldName, "%s/%s.%d%s", dirName, baseName, logStart, fileext); ++ if (stat(oldName, &sbprev)) { ++ message(MESS_DEBUG, "previous log %s does not exist\n", ++ oldName); ++ } else { ++ hasErrors = compressLogFile(oldName, log, &sbprev); ++ } + } + } + ++ firstRotated = alloca(strlen(dirName) + strlen(baseName) + ++ strlen(fileext) + strlen(compext) + 30); ++ ++ if(log->flags & LOG_FLAG_DATEEXT) { ++ /* glob for compressed files with our pattern ++ * and compress ext */ ++ glob_pattern = malloc(strlen(dirName)+strlen(baseName) ++ +strlen(fileext)+strlen(compext)+44); ++ sprintf(glob_pattern, ++ "%s/%s-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%s%s", ++ dirName, baseName, fileext, compext); ++ rc = glob(glob_pattern, 0, globerr, &globResult); ++ if (!rc) { ++ /* search for files to drop, if we find one remember it, ++ * if we find another one mail and remove the first and ++ * remember the second and so on */ ++ struct stat fst_buf; ++ int mail_out = -1; ++ /* remove the first (n - rotateCount) matches ++ * no real rotation needed, since the files have ++ * the date in their name */ ++ for (i = 0; i < globResult.gl_pathc; i++) { ++ if( !stat((globResult.gl_pathv)[i],&fst_buf) ) { ++ if (i <= ((int)globResult.gl_pathc - rotateCount)) { ++ if ( mail_out != -1 ) { ++ if (!hasErrors && log->logAddress) { ++ char * mailFilename = (globResult.gl_pathv)[mail_out]; ++ hasErrors = mailLogWrapper(mailFilename, mailCommand, logNum, log); ++ if (!hasErrors) ++ hasErrors = removeLogFile(mailFilename); ++ } ++ } ++ mail_out = i; ++ } ++ } ++ } ++ if ( mail_out != -1 ) { ++ /* oldName is oldest Backup found (for unlink later) */ ++ sprintf(oldName, "%s", (globResult.gl_pathv)[mail_out]); ++ strcpy(disposeName, oldName); ++ } else ++ disposeName = NULL; ++ } else { ++ message (MESS_DEBUG, "glob finding old rotated logs failed\n"); ++ disposeName = NULL; ++ } ++ /* firstRotated is most recently created/compressed rotated log */ ++ sprintf(firstRotated, "%s/%s-%04d%02d%02d%s%s", ++ dirName, baseName, now.tm_year+1900, ++ now.tm_mon+1, now.tm_mday, fileext, compext); ++ globfree(&globResult); ++ free(glob_pattern); ++ } else { ++ + sprintf(oldName, "%s/%s.%d%s%s", dirName, baseName, + logStart + rotateCount, fileext, compext); + strcpy(newName, oldName); + + strcpy(disposeName, oldName); + +- firstRotated = alloca(strlen(dirName) + strlen(baseName) + +- strlen(fileext) + strlen(compext) + 30); + sprintf(firstRotated, "%s/%s.%d%s%s", dirName, baseName, + logStart, fileext, + (log->flags & LOG_FLAG_DELAYCOMPRESS) ? "" : compext); +@@ -599,12 +726,27 @@ + hasErrors = 1; + } + } +- } +- ++ } ++ } /* !LOG_FLAG_DATEEXT */ ++ + finalName = oldName; + +- /* note: the gzip extension is *not* used here! */ +- sprintf(finalName, "%s/%s.%d%s", dirName, baseName, logStart, fileext); ++ if(log->flags & LOG_FLAG_DATEEXT) { ++ char * destFile = alloca(strlen(dirName) + strlen(baseName) + ++ strlen(fileext) + strlen(compext) + 30); ++ struct stat fst_buf; ++ sprintf(finalName, "%s/%s-%04d%02d%02d%s", ++ dirName, baseName, now.tm_year+1900, ++ now.tm_mon+1, now.tm_mday, fileext); ++ sprintf(destFile, "%s%s", finalName, compext); ++ if(!stat(destFile,&fst_buf)) { ++ message (MESS_DEBUG, "destination %s already exists, skipping rotation\n", firstRotated); ++ hasErrors = 1; ++ } ++ } else { ++ /* note: the gzip extension is *not* used here! */ ++ sprintf(finalName, "%s/%s.%d%s", dirName, baseName, logStart, fileext); ++ } + + /* if the last rotation doesn't exist, that's okay */ + if (!debug && access(disposeName, F_OK)) { +@@ -613,9 +755,6 @@ + disposeName = NULL; + } + +- free(dirName); +- free(baseName); +- + if (!hasErrors) { + if (log->pre && !(log->flags & LOG_FLAG_SHAREDSCRIPTS)) { + message(MESS_DEBUG, "running prerotate script\n"); +@@ -761,6 +900,8 @@ + } + } + #endif ++ free(dirName); ++ free(baseName); + return hasErrors; + } + +Index: logrotate-3.7.1/config.c +=================================================================== +--- logrotate-3.7.1.orig/config.c 2006-04-08 20:32:36.774133397 +0100 ++++ logrotate-3.7.1/config.c 2006-04-08 20:36:00.256858650 +0100 +@@ -511,6 +511,14 @@ + newlog->flags &= ~LOG_FLAG_IFEMPTY; + + *endtag = oldchar, start = endtag; ++ } else if (!strcmp(start, "dateext")) { ++ newlog->flags |= LOG_FLAG_DATEEXT; ++ ++ *endtag = oldchar, start = endtag; ++ } else if (!strcmp(start, "nodateext")) { ++ newlog->flags &= ~LOG_FLAG_DATEEXT; ++ ++ *endtag = oldchar, start = endtag; + } else if (!strcmp(start, "noolddir")) { + newlog->oldDir = NULL; + +Index: logrotate-3.7.1/logrotate.8 +=================================================================== +--- logrotate-3.7.1.orig/logrotate.8 2006-04-08 20:32:36.775133204 +0100 ++++ logrotate-3.7.1/logrotate.8 2006-04-08 20:36:00.257858464 +0100 +@@ -200,6 +200,11 @@ + Log files are rotated every day. + + .TP ++\fBdateext\fR ++Archive old versions of log files adding a daily extension like YYYYMMDD ++instead of simply adding a number. ++ ++.TP + \fBdelaycompress\fR + Postpone compression of the previous log file to the next rotation cycle. + This has only effect when used in combination with \fBcompress\fR. diff --git a/patches/logrotate-3.7.1/generic/rh-maxage.patch b/patches/logrotate-3.7.1/generic/rh-maxage.patch new file mode 100644 index 000000000..03d15a102 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/rh-maxage.patch @@ -0,0 +1,108 @@ +Enhance logrotate with "maxage". +From upstream RedHat patch. + +Index: logrotate-3.7.1/logrotate.c +=================================================================== +--- logrotate-3.7.1.orig/logrotate.c 2006-04-08 20:38:58.277761983 +0100 ++++ logrotate-3.7.1/logrotate.c 2006-04-08 20:38:58.314755223 +0100 +@@ -640,7 +640,10 @@ + * the date in their name */ + for (i = 0; i < globResult.gl_pathc; i++) { + if( !stat((globResult.gl_pathv)[i],&fst_buf) ) { +- if (i <= ((int)globResult.gl_pathc - rotateCount)) { ++ if ((i <= ((int)globResult.gl_pathc - rotateCount)) ++ || ((log->rotateAge > 0) ++ && (((nowSecs - fst_buf.st_mtime)/60/60/24) ++ > log->rotateAge))) { + if ( mail_out != -1 ) { + if (!hasErrors && log->logAddress) { + char * mailFilename = (globResult.gl_pathv)[mail_out]; +@@ -670,6 +673,22 @@ + globfree(&globResult); + free(glob_pattern); + } else { ++ if ( log->rotateAge ) { ++ struct stat fst_buf; ++ for (i=1; i <= rotateCount; i++) { ++ sprintf(oldName, "%s/%s.%d%s%s", dirName, baseName, ++ rotateCount + 1, fileext, compext); ++ if(!stat(oldName,&fst_buf) ++ && (((nowSecs - fst_buf.st_mtime)/60/60/24) ++ > log->rotateAge)) { ++ char * mailFilename = (globResult.gl_pathv)[i]; ++ if (!hasErrors && log->logAddress) ++ hasErrors = mailLogWrapper(mailFilename, mailCommand, logNum, log); ++ if (!hasErrors) ++ hasErrors = removeLogFile(mailFilename); ++ } ++ } ++ } + + sprintf(oldName, "%s/%s.%d%s%s", dirName, baseName, + logStart + rotateCount, fileext, compext); +@@ -1188,7 +1207,9 @@ + + int main(int argc, const char ** argv) { + logInfo defConfig = { NULL, NULL, 0, NULL, ROT_SIZE, +- /* threshHold */ 1024 * 1024, 0, ++ /* threshHold */ 1024 * 1024, ++ /* rotateCount */ 0, ++ /* rotateAge */ 0, + /* log start */ -1, + /* pre, post */ NULL, NULL, + /* first, last */ NULL, NULL, +Index: logrotate-3.7.1/logrotate.h +=================================================================== +--- logrotate-3.7.1.orig/logrotate.h 2006-04-08 20:38:58.274762531 +0100 ++++ logrotate-3.7.1/logrotate.h 2006-04-08 20:38:58.315755040 +0100 +@@ -35,6 +35,7 @@ + enum { ROT_DAYS, ROT_WEEKLY, ROT_MONTHLY, ROT_SIZE, ROT_FORCE } criterium; + unsigned int threshhold; + int rotateCount; ++ int rotateAge; + int logStart; + char * pre, * post, * first, * last; + char * logAddress; +Index: logrotate-3.7.1/config.c +=================================================================== +--- logrotate-3.7.1.orig/config.c 2006-04-08 20:38:58.279761617 +0100 ++++ logrotate-3.7.1/config.c 2006-04-08 20:38:58.317754675 +0100 +@@ -678,6 +678,21 @@ + } + *endtag = oldchar, start = endtag; + } ++ } else if (!strcmp(start, "maxage")) { ++ *endtag = oldchar, start = endtag; ++ ++ if (!isolateValue(configFile, lineNum, "maxage count", &start, ++ &endtag)) { ++ oldchar = *endtag, *endtag = '\0'; ++ ++ newlog->rotateAge = strtoul(start, &chptr, 0); ++ if (*chptr || newlog->rotateAge < 0) { ++ message(MESS_ERROR, "%s:%d bad maximum age '%s'\n", ++ configFile, lineNum, start); ++ return 1; ++ } ++ *endtag = oldchar, start = endtag; ++ } + } else if (!strcmp(start, "errors")) { + message(MESS_DEBUG, "%s: %d: the errors directive is deprecated and no longer used.\n", + configFile, lineNum); +Index: logrotate-3.7.1/logrotate.8 +=================================================================== +--- logrotate-3.7.1.orig/logrotate.8 2006-04-08 20:38:58.280761435 +0100 ++++ logrotate-3.7.1/logrotate.8 2006-04-08 20:38:58.318754492 +0100 +@@ -251,6 +251,12 @@ + instead of the just-rotated file (this is the default). + + .TP ++\fBmaxage\fR \fIcount\fR ++Remove rotated logs older than <count> days. The age is only checked ++if the logfile is to be rotated. The files are mailed to the ++configured address if \fBmaillast\fR and \fBmail\fR are configured. ++ ++.TP + \fBmissingok\fR + If the log file is missing, go on to the next one without issuing an error + message. See also \fBnomissingok\fR. diff --git a/patches/logrotate-3.7.1/generic/rh-noTMPDIR.patch b/patches/logrotate-3.7.1/generic/rh-noTMPDIR.patch new file mode 100644 index 000000000..2b277f940 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/rh-noTMPDIR.patch @@ -0,0 +1,58 @@ +Do not use tmpfile to run script anymore (Closes: #149270) +From RedHat patches. + +Index: logrotate-3.7.1/logrotate.c +=================================================================== +--- logrotate-3.7.1.orig/logrotate.c 2006-04-08 20:38:58.314755223 +0100 ++++ logrotate-3.7.1/logrotate.c 2006-04-08 20:42:11.628324134 +0100 +@@ -88,10 +88,7 @@ + } + + static int runScript(char * logfn, char * script) { +- int fd; +- char *filespec; + int rc; +- char buf[256]; + + if (debug) { + message(MESS_DEBUG, "running script with arg %s: \"%s\"\n", +@@ -99,38 +96,12 @@ + return 0; + } + +- filespec = buf; +- snprintf(buf, sizeof(buf), "%s/logrotate.XXXXXX", getenv("TMPDIR") ?: "/tmp"); +- fd = -1; +- if (!filespec || (fd = mkstemp(filespec)) < 0 || fchmod(fd, 0700)) { +- message(MESS_DEBUG, "error creating %s: %s\n", filespec, +- strerror(errno)); +- if (fd >= 0) { +- close(fd); +- unlink(filespec); +- } +- return -1; +- } +- +- if (write(fd, "#!/bin/sh\n\n", 11) != 11 || +- write(fd, script, strlen(script)) != strlen(script)) { +- message(MESS_DEBUG, "error writing %s\n", filespec); +- close(fd); +- unlink(filespec); +- return -1; +- } +- +- close(fd); +- + if (!fork()) { +- execlp(filespec, filespec, logfn, NULL); ++ execl("/bin/sh", "sh", "-c", script, NULL); + exit(1); + } + + wait(&rc); +- +- unlink(filespec); +- + return rc; + } + diff --git a/patches/logrotate-3.7.1/generic/rh-selinux.patch b/patches/logrotate-3.7.1/generic/rh-selinux.patch new file mode 100644 index 000000000..0e1a3bbdf --- /dev/null +++ b/patches/logrotate-3.7.1/generic/rh-selinux.patch @@ -0,0 +1,173 @@ +Add selinux_getenforce() calls to work when not in enforcing mode +- use security_getenforce() instead of selinux_getenforcemode +From RedHat patches. + +Index: logrotate-3.7.1/logrotate.c +=================================================================== +--- logrotate-3.7.1.orig/logrotate.c 2006-04-08 20:42:37.114533654 +0100 ++++ logrotate-3.7.1/logrotate.c 2006-04-08 20:44:17.311634566 +0100 +@@ -17,6 +17,7 @@ + #include <selinux/selinux.h> + static security_context_t prev_context=NULL; + int selinux_enabled=0; ++int selinux_enforce=0; + #endif + + #include "basenames.h" +@@ -293,38 +294,43 @@ + return 1; + } + #ifdef WITH_SELINUX +- if ((selinux_enabled=(is_selinux_enabled()>0))) +- { +- security_context_t oldContext; +- if (fgetfilecon(fdcurr, &oldContext) >=0) { +- if (getfscreatecon(&prev_context) < 0) { +- message(MESS_ERROR, "error getting default context: %s\n", +- strerror(errno)); +- freecon(oldContext); +- return 1; +- } +- if (setfscreatecon(oldContext) < 0) { +- message(MESS_ERROR, "error setting file context %s to %s: %s\n", +- saveLog, oldContext,strerror(errno)); +- freecon(oldContext); +- return 1; +- } +- freecon(oldContext); +- } else { +- message(MESS_ERROR, "error getting file context %s: %s\n", currLog, +- strerror(errno)); +- return 1; +- } +- } ++ if (selinux_enabled) { ++ security_context_t oldContext; ++ if (fgetfilecon(fdcurr, &oldContext) >=0) { ++ if (getfscreatecon(&prev_context) < 0) { ++ message(MESS_ERROR, "error getting default context: %s\n", ++ strerror(errno)); ++ if (selinux_enforce) { ++ freecon(oldContext); ++ return 1; ++ } ++ } ++ if (setfscreatecon(oldContext) < 0) { ++ message(MESS_ERROR, "error setting file context %s to %s: %s\n", ++ saveLog, oldContext,strerror(errno)); ++ if (selinux_enforce) { ++ freecon(oldContext); ++ return 1; ++ } ++ } ++ freecon(oldContext); ++ } else { ++ message(MESS_ERROR, "error getting file context %s: %s\n", currLog, ++ strerror(errno)); ++ if (selinux_enforce) { ++ return 1; ++ } ++ } ++ } + #endif + fdsave = open(saveLog, O_WRONLY | O_CREAT | O_TRUNC,sb->st_mode); + #ifdef WITH_SELINUX + if (selinux_enabled) { +- setfscreatecon(prev_context); +- if (prev_context!= NULL) { +- freecon(prev_context); +- prev_context=NULL; +- } ++ setfscreatecon(prev_context); ++ if (prev_context!= NULL) { ++ freecon(prev_context); ++ prev_context=NULL; ++ } + } + #endif + if (fdsave < 0) { +@@ -672,28 +678,34 @@ + (log->flags & LOG_FLAG_DELAYCOMPRESS) ? "" : compext); + + #ifdef WITH_SELINUX +- if ((selinux_enabled=(is_selinux_enabled()>0))) { +- security_context_t oldContext=NULL; +- if (getfilecon(log->files[logNum], &oldContext)>0) { +- if (getfscreatecon(&prev_context) < 0) { +- message(MESS_ERROR, "error getting default context: %s\n", +- strerror(errno)); +- freecon(oldContext); +- return 1; +- } +- if (setfscreatecon(oldContext) < 0) { +- message(MESS_ERROR, "error setting file context %s to %s: %s\n", +- log->files[logNum], oldContext,strerror(errno)); +- freecon(oldContext); +- return 1; +- } +- freecon(oldContext); +- } else { +- message(MESS_ERROR, "error getting file context %s: %s\n", +- log->files[logNum], +- strerror(errno)); +- return 1; +- } ++ if (selinux_enabled) { ++ security_context_t oldContext=NULL; ++ if (getfilecon(log->files[logNum], &oldContext)>0) { ++ if (getfscreatecon(&prev_context) < 0) { ++ message(MESS_ERROR, "error getting default context: %s\n", ++ strerror(errno)); ++ if (selinux_enforce) { ++ freecon(oldContext); ++ return 1; ++ } ++ } ++ if (setfscreatecon(oldContext) < 0) { ++ message(MESS_ERROR, "error setting file context %s to %s: %s\n", ++ log->files[logNum], oldContext,strerror(errno)); ++ if (selinux_enforce) { ++ freecon(oldContext); ++ return 1; ++ } ++ } ++ freecon(oldContext); ++ } else { ++ message(MESS_ERROR, "error getting file context %s: %s\n", ++ log->files[logNum], ++ strerror(errno)); ++ if (selinux_enforce) { ++ return 1; ++ } ++ } + } + #endif + for (i = rotateCount + logStart - 1; (i >= 0) && !hasErrors; i--) { +@@ -883,11 +895,11 @@ + + #ifdef WITH_SELINUX + if (selinux_enabled) { +- setfscreatecon(prev_context); +- if (prev_context!= NULL) { +- freecon(prev_context); +- prev_context=NULL; +- } ++ setfscreatecon(prev_context); ++ if (prev_context!= NULL) { ++ freecon(prev_context); ++ prev_context=NULL; ++ } + } + #endif + free(dirName); +@@ -1249,6 +1261,10 @@ + exit(1); + } + ++#ifdef WITH_SELINUX ++ selinux_enabled=(is_selinux_enabled()>0); ++ selinux_enforce=security_getenforce(); ++#endif + for (file = files; *file; file++) { + if (readConfigPath(*file, &defConfig, &logs, &numLogs)) { + exit(1); diff --git a/patches/logrotate-3.7.1/generic/script-argument.patch b/patches/logrotate-3.7.1/generic/script-argument.patch new file mode 100644 index 000000000..86ac656b0 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/script-argument.patch @@ -0,0 +1,18 @@ +Closes: #330783 + +Allow the use of $1 in scripts. + + +Index: logrotate-3.7.1/logrotate.c +=================================================================== +--- logrotate-3.7.1.orig/logrotate.c 2006-04-08 21:47:41.000000000 +0100 ++++ logrotate-3.7.1/logrotate.c 2006-04-08 22:01:23.722498089 +0100 +@@ -101,7 +101,7 @@ + } + + if (!fork()) { +- execl("/bin/sh", "sh", "-c", script, NULL); ++ execl("/bin/sh", "sh", "-c", script, "sh", logfn, NULL); + exit(1); + } + diff --git a/patches/logrotate-3.7.1/generic/scripterrors.patch b/patches/logrotate-3.7.1/generic/scripterrors.patch new file mode 100644 index 000000000..628897582 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/scripterrors.patch @@ -0,0 +1,28 @@ +Give error messages identifying log file on script errors +(Closes: #122691, #195790, #222050, #306020) + +Index: logrotate-3.7.1/logrotate.c +=================================================================== +--- logrotate-3.7.1.orig/logrotate.c 2006-04-08 21:03:38.961646055 +0100 ++++ logrotate-3.7.1/logrotate.c 2006-04-08 21:05:20.850933782 +0100 +@@ -770,8 +770,8 @@ + if (log->pre && !(log->flags & LOG_FLAG_SHAREDSCRIPTS)) { + message(MESS_DEBUG, "running prerotate script\n"); + if (runScript(log->files[logNum], log->pre)) { +- message(MESS_ERROR, "error running prerotate script, " +- "leaving old log in place\n"); ++ message(MESS_ERROR, "error running prerotate script for %s, " ++ "leaving old log in place\n", log->files[logNum]); + hasErrors = 1; + } + } +@@ -853,7 +853,8 @@ + !(log->flags & LOG_FLAG_SHAREDSCRIPTS)) { + message(MESS_DEBUG, "running postrotate script\n"); + if (runScript(log->files[logNum], log->post)) { +- message(MESS_ERROR, "error running postrotate script\n"); ++ message(MESS_ERROR, "error running postrotate script for %s\n", ++ log->files[logNum]); + hasErrors = 1; + } + } diff --git a/patches/logrotate-3.7.1/generic/series b/patches/logrotate-3.7.1/generic/series new file mode 100644 index 000000000..3f2595bf4 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/series @@ -0,0 +1,25 @@ +rh-dateext.patch +rh-maxage.patch +rh-noTMPDIR.patch +rh-selinux.patch +deb-taboos.patch +configparse.patch +taboo-to-debug.patch +deb-config-h.patch +datehack.patch +compressutime.patch +scripterrors.patch +manpage.patch +man-189243.patch +man-sizetypo.patch +man-startcount.patch +man-lastaction.patch +man-overriden.patch +man-mailtypo.patch +man-rh-1.patch +cpp-crossbuild.patch +dst.patch +man-333996.patch +script-argument.patch +uncompressChild-warning.patch +ptx-timeext.patch diff --git a/patches/logrotate-3.7.1/generic/taboo-to-debug.patch b/patches/logrotate-3.7.1/generic/taboo-to-debug.patch new file mode 100644 index 000000000..d4086d354 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/taboo-to-debug.patch @@ -0,0 +1,15 @@ +Quietens the taboo list from ERROR to a DEBUG (Closes: #249073) + +Index: logrotate-3.7.1/config.c +=================================================================== +--- logrotate-3.7.1.orig/config.c 2006-04-08 20:48:47.169764580 +0100 ++++ logrotate-3.7.1/config.c 2006-04-08 20:49:55.460798704 +0100 +@@ -149,7 +149,7 @@ + for (i = 0; i < tabooCount; i++) { + if (!strcmp(fname + strlen(fname) - strlen(tabooExts[i]), + tabooExts[i])) { +- message(MESS_ERROR, "Ignoring %s, because of %s " ++ message(MESS_DEBUG, "Ignoring %s, because of %s " + "ending\n", fname, tabooExts[i]); + + return 0; diff --git a/patches/logrotate-3.7.1/generic/uncompressChild-warning.patch b/patches/logrotate-3.7.1/generic/uncompressChild-warning.patch new file mode 100644 index 000000000..b8fde6e69 --- /dev/null +++ b/patches/logrotate-3.7.1/generic/uncompressChild-warning.patch @@ -0,0 +1,13 @@ +Index: logrotate-3.7.1/logrotate.c +=================================================================== +--- logrotate-3.7.1.orig/logrotate.c 2006-04-08 22:58:51.000000000 +0100 ++++ logrotate-3.7.1/logrotate.c 2006-04-08 23:01:00.459602124 +0100 +@@ -209,7 +209,7 @@ + static int mailLog(char * logFile, char * mailCommand, char * uncompressCommand, + char * address, char * subject) { + int mailInput; +- pid_t mailChild, uncompressChild; ++ pid_t mailChild, uncompressChild=-1; + int mailStatus, uncompressStatus; + int uncompressPipe[2]; + char * mailArgv[] = { mailCommand, "-s", subject, address, NULL }; |