summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gryniewicz <dang@gentoo.org>2005-05-24 21:08:00 +0000
committerDaniel Gryniewicz <dang@gentoo.org>2005-05-24 21:08:00 +0000
commit4647466e95c86e18326530b7d1004edd0b683c9f (patch)
treecba8b26128fb5d0fb568b9a289bf71425f2b8829 /app-admin/logrotate
parentadd back in a better named patch (diff)
downloadhistorical-4647466e95c86e18326530b7d1004edd0b683c9f.tar.gz
historical-4647466e95c86e18326530b7d1004edd0b683c9f.tar.bz2
historical-4647466e95c86e18326530b7d1004edd0b683c9f.zip
Added 3.7.1, took maintainership
Package-Manager: portage-2.0.51.19
Diffstat (limited to 'app-admin/logrotate')
-rw-r--r--app-admin/logrotate/ChangeLog30
-rw-r--r--app-admin/logrotate/Manifest21
-rw-r--r--app-admin/logrotate/files/digest-logrotate-3.7.11
-rw-r--r--app-admin/logrotate/files/logrotate-3.7.1-dateext-maxage.patch433
-rw-r--r--app-admin/logrotate/files/logrotate-3.7.1-datehack.patch12
-rw-r--r--app-admin/logrotate/files/logrotate-3.7.1-ignore-hidden.patch14
-rw-r--r--app-admin/logrotate/files/logrotate-3.7.1-manpage-fixes.patch386
-rw-r--r--app-admin/logrotate/files/logrotate-3.7.1-taboo-to-debug.patch12
-rw-r--r--app-admin/logrotate/logrotate-3.7.1.ebuild70
-rw-r--r--app-admin/logrotate/metadata.xml1
10 files changed, 972 insertions, 8 deletions
diff --git a/app-admin/logrotate/ChangeLog b/app-admin/logrotate/ChangeLog
index c77ca6a15460..33c7ca7b676c 100644
--- a/app-admin/logrotate/ChangeLog
+++ b/app-admin/logrotate/ChangeLog
@@ -1,6 +1,34 @@
# ChangeLog for app-admin/logrotate
# Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-admin/logrotate/ChangeLog,v 1.33 2005/01/02 03:56:46 pebenito Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-admin/logrotate/ChangeLog,v 1.34 2005/05/24 21:08:00 dang Exp $
+
+*logrotate-3.7.1 (24 May 2005)
+
+ 24 May 2005; <dang@gentoo.org>
+ +files/logrotate-3.7.1-dateext-maxage.patch,
+ +files/logrotate-3.7.1-datehack.patch,
+ +files/logrotate-3.7.1-ignore-hidden.patch,
+ +files/logrotate-3.7.1-manpage-fixes.patch,
+ +files/logrotate-3.7.1-taboo-to-debug.patch, metadata.xml,
+ +logrotate-3.7.1.ebuild:
+
+ Taking over as maintainer.
+
+ New version of logrotate from upstream.
+ Fixes from upstream:
+ - Rotated files now have correct ownership and permissions
+ Fixes from Debian 3.7-3:
+ - Manpage fixes
+ - Improved datehack fix for bug in old versions of logrotate
+ - Make printing of messages related to skipped logroate.d files DEBUG
+ messages rather than ERROR messages
+ Fixes from Suse:
+ - dateext - Enable usage of the rotation date as the file extension,
+ rather than sequential numbering
+ - maxage - Enable deletion of rotated files older than a certain age
+ Local fixes:
+ - Ignore dotfiles in logrotate.d/ directory, to keep emerges from
+ breaking logrotate via ._cfg* files
01 Jan 2005; Chris PeBenito <pebenito@gentoo.org> logrotate-3.7.ebuild:
SELinux code is now integrated in 3.7. Adjust ebuild accordingly.
diff --git a/app-admin/logrotate/Manifest b/app-admin/logrotate/Manifest
index de58f9e57d02..96d4ca026f95 100644
--- a/app-admin/logrotate/Manifest
+++ b/app-admin/logrotate/Manifest
@@ -1,19 +1,26 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
+MD5 ce6cc3c8473d2b7a00b4078d1cf02e91 logrotate-3.7.1.ebuild 1726
MD5 098cc168fade54d752abb4316bf4860f logrotate-3.7.ebuild 1679
-MD5 dffd46174e78b327c834fc3e4b1cf848 metadata.xml 160
-MD5 c91000d75cded213bc6dc76306f5e24c ChangeLog 4544
MD5 67f6426c285df9fc96384c47d68ae3a6 logrotate-3.6.5-r1.ebuild 1730
+MD5 e0045388b2875ed4503ed3206191a40c ChangeLog 5572
+MD5 c7533062993ae53a9a32d0a58416cd84 metadata.xml 216
+MD5 81c68aeb06c91c02ebbea3c42123fb38 files/logrotate-3.7.1-manpage-fixes.patch 15470
+MD5 d268cc741e71398dc2a14bcdc0bcfeb2 files/logrotate-3.7.1-ignore-hidden.patch 517
+MD5 b6b2dec981e0b573366f5d0e74783b5b files/logrotate-3.7.1-taboo-to-debug.patch 517
+MD5 8d4271dd12289c4da96b3e4f1fbd0868 files/logrotate-3.7.1-datehack.patch 516
MD5 ef1405c48d23249f97330709d1d2a093 files/logrotate-3.6.5-selinux.diff.bz2 1440
+MD5 4942e4ea3f05b91d9d24504c4ddbc776 files/digest-logrotate-3.7 69
MD5 bdf48119e016d4ee8b829da9e83959bf files/digest-logrotate-3.6.5-r1 71
-MD5 cf1ca2cfa810abaefc504a76ca38b52a files/logrotate.cron 52
+MD5 8259bf9cd3b5bc37dd4cdda62cc9c2de files/logrotate-3.7.1-dateext-maxage.patch 14282
MD5 5692e613153f372df5b7510b39ba9c5c files/logrotate.conf 731
-MD5 4942e4ea3f05b91d9d24504c4ddbc776 files/digest-logrotate-3.7 69
+MD5 cf1ca2cfa810abaefc504a76ca38b52a files/logrotate.cron 52
+MD5 746e982f984139e917c7d7ee39af40fa files/digest-logrotate-3.7.1 67
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
-iD8DBQFCZNeRjUHll2nfF60RAhFZAKDF+ZjTVblooNsCKsZGIzZ9/3w9yQCePGAC
-aKjdp90JbX6X7PNU7s09Bkk=
-=fbT2
+iD8DBQFCk5e/omPajV0RnrERAmykAJ9nk9rm6zHHEfHg8SpJZ1UiP1HlGQCfUm0v
+Mf/3XgUz30j//QqbhAuBXSs=
+=T/WR
-----END PGP SIGNATURE-----
diff --git a/app-admin/logrotate/files/digest-logrotate-3.7.1 b/app-admin/logrotate/files/digest-logrotate-3.7.1
new file mode 100644
index 000000000000..8b29cfeb69d0
--- /dev/null
+++ b/app-admin/logrotate/files/digest-logrotate-3.7.1
@@ -0,0 +1 @@
+MD5 1fc20d457b35bbfb0c5bc2e2b47759df logrotate-3.7.1.tar.bz2 31953
diff --git a/app-admin/logrotate/files/logrotate-3.7.1-dateext-maxage.patch b/app-admin/logrotate/files/logrotate-3.7.1-dateext-maxage.patch
new file mode 100644
index 000000000000..1623b4bf1281
--- /dev/null
+++ b/app-admin/logrotate/files/logrotate-3.7.1-dateext-maxage.patch
@@ -0,0 +1,433 @@
+diff -u -ruN logrotate-3.7.1.orig/config.c logrotate-3.7.1/config.c
+--- logrotate-3.7.1.orig/config.c 2003-08-07 07:13:14.000000000 -0400
++++ logrotate-3.7.1/config.c 2005-05-24 12:21:09.000000000 -0400
+@@ -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;
+
+@@ -670,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);
+diff -u -ruN logrotate-3.7.1.orig/logrotate.8 logrotate-3.7.1/logrotate.8
+--- logrotate-3.7.1.orig/logrotate.8 2003-08-07 07:13:14.000000000 -0400
++++ logrotate-3.7.1/logrotate.8 2005-05-24 12:21:09.000000000 -0400
+@@ -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.
+@@ -246,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 -u -ruN logrotate-3.7.1.orig/logrotate.c logrotate-3.7.1/logrotate.c
+--- logrotate-3.7.1.orig/logrotate.c 2004-10-19 17:41:24.000000000 -0400
++++ logrotate-3.7.1/logrotate.c 2005-05-24 12:21:09.000000000 -0400
+@@ -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;
+@@ -49,9 +62,11 @@
+ struct tm now = *localtime(&nowSecs);
+ time_t lr_time;
+
++ /* find the filename fn in the statesPtr list */
+ for (i = 0; i < numStates; i++)
+ if (!strcmp(fn, states[i].fn)) break;
+
++ /* not in statesPtr list, so add new entry */
+ if (i == numStates) {
+ i = numStates++;
+ states = realloc(states, sizeof(*states) * numStates);
+@@ -121,6 +136,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 +291,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 +524,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 +557,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,16 +579,116 @@
+ /* 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))
++ || ((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];
++ 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 {
++ 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);
+@@ -548,8 +696,6 @@
+
+ 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);
+@@ -600,12 +746,27 @@
+ }
+ }
+ }
+-
++ } /* !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)) {
+ message(MESS_DEBUG, "log %s doesn't exist -- won't try to "
+@@ -613,9 +774,6 @@
+ disposeName = NULL;
+ }
+
+- free(dirName);
+- free(baseName);
+-
+ if (!hasErrors) {
+ if (log->pre && !(log->flags & LOG_FLAG_SHAREDSCRIPTS)) {
+ message(MESS_DEBUG, "running prerotate script\n");
+@@ -722,33 +880,12 @@
+ else
+ mailFilename = disposeName;
+
+- if (mailFilename) {
+- /* 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]))
+- hasErrors = 1;
+- } else {
+- if (mailLog(mailFilename, mailCommand, NULL,
+- log->logAddress, mailFilename))
+- hasErrors = 1;
+- }
+- }
++ if (mailFilename)
++ hasErrors = mailLogWrapper(mailFilename, mailCommand, logNum, log);
+ }
+
+ if (!hasErrors && disposeName) {
+- message(MESS_DEBUG, "removing old log %s\n", disposeName);
+-
+- if (!debug && unlink(disposeName)) {
+- message(MESS_ERROR, "Failed to remove old log %s: %s\n",
+- disposeName, strerror(errno));
+- hasErrors = 1;
+- }
++ hasErrors = removeLogFile(disposeName);
+ }
+ }
+
+@@ -761,6 +898,8 @@
+ }
+ }
+ #endif
++ free(dirName);
++ free(baseName);
+ return hasErrors;
+ }
+
+@@ -1047,7 +1186,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,
+diff -u -ruN logrotate-3.7.1.orig/logrotate.h logrotate-3.7.1/logrotate.h
+--- logrotate-3.7.1.orig/logrotate.h 2003-08-07 07:13:14.000000000 -0400
++++ logrotate-3.7.1/logrotate.h 2005-05-24 12:21:09.000000000 -0400
+@@ -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
+@@ -34,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;
diff --git a/app-admin/logrotate/files/logrotate-3.7.1-datehack.patch b/app-admin/logrotate/files/logrotate-3.7.1-datehack.patch
new file mode 100644
index 000000000000..69121aafa9a0
--- /dev/null
+++ b/app-admin/logrotate/files/logrotate-3.7.1-datehack.patch
@@ -0,0 +1,12 @@
+diff -u -ruN logrotate-3.7.1.orig/logrotate.c logrotate-3.7.1/logrotate.c
+--- logrotate-3.7.1.orig/logrotate.c 2004-10-19 17:41:24.000000000 -0400
++++ logrotate-3.7.1/logrotate.c 2005-05-24 12:12:26.000000000 -0400
+@@ -1002,7 +1002,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/app-admin/logrotate/files/logrotate-3.7.1-ignore-hidden.patch b/app-admin/logrotate/files/logrotate-3.7.1-ignore-hidden.patch
new file mode 100644
index 000000000000..390de7537c67
--- /dev/null
+++ b/app-admin/logrotate/files/logrotate-3.7.1-ignore-hidden.patch
@@ -0,0 +1,14 @@
+--- logrotate-3.7/config.c.orig 2005-04-26 22:57:53.000000000 -0400
++++ logrotate-3.7/config.c 2005-04-26 22:59:36.000000000 -0400
+@@ -142,6 +142,11 @@
+ (!fname[1] || (fname[1] == '.' && !fname[2])))
+ return 0;
+
++ /* Don't include 'hidden' files either; this breaks Gentoo
++ portage config file management http://bugs.gentoo.org/87683 */
++ if (fname[0] == '.')
++ return 0;
++
+ /* Check if fname is ending in a taboo-extension; if so, return
+ false */
+ for (i = 0; i < tabooCount; i++) {
diff --git a/app-admin/logrotate/files/logrotate-3.7.1-manpage-fixes.patch b/app-admin/logrotate/files/logrotate-3.7.1-manpage-fixes.patch
new file mode 100644
index 000000000000..d4492447ed73
--- /dev/null
+++ b/app-admin/logrotate/files/logrotate-3.7.1-manpage-fixes.patch
@@ -0,0 +1,386 @@
+diff -u -ruN logrotate-3.7.1.orig/logrotate.8 logrotate-3.7.1/logrotate.8
+--- logrotate-3.7.1.orig/logrotate.8 2003-08-07 07:13:14.000000000 -0400
++++ logrotate-3.7.1/logrotate.8 2005-05-24 12:13:09.000000000 -0400
+@@ -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,14 +37,15 @@
+ 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
+@@ -51,22 +53,26 @@
+ -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,17 +83,17 @@
+ rotate 5
+ weekly
+ postrotate
+- /sbin/killall -HUP syslogd
++ /bin/killall -HUP syslogd
+ endscript
+ }
+
+ "/var/log/httpd/access.log" /var/log/httpd/error.log {
+ rotate 5
+ mail www@my.org
+- size=100k
++ size 100k
+ sharedscripts
+ postrotate
+- /sbin/killall -HUP httpd
++ /bin/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,23 +113,23 @@
+ 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
+-\fI/sbin/killall -HUP syslogd\fR will be executed.
++\fI/bin/killall -HUP syslogd\fR will be executed.
+
+ 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 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
+-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
+@@ -202,20 +212,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
+@@ -226,12 +236,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.
+
+@@ -257,8 +267,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
+@@ -281,7 +290,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
+@@ -289,12 +298,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).
+
+@@ -315,16 +324,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
+@@ -340,30 +348,31 @@
+ 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 \fBfirstaction\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
++\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 \fIk\fR is used, the size is in kilobytes. So \fBsize 100\fR,
+-\fIsize 100k\fR, and \fIsize 100M\fR are all valid.
++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
+ \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 \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
++will not be run at all. This option overrides the \fBnosharedscripts\fR
+ option.
+
+ .TP
+@@ -377,18 +386,20 @@
+ .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, ,v, .swp, .rpmnew, and ~. Note that all hidden
++files (files starting with .) are ignored.
++
+
+ .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
+@@ -400,11 +411,15 @@
+ Configuration options.
+
+ .SH SEE ALSO
+-.IR gzip (1)
++.BR gzip (1)
+
+ .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>
++.nf
++Corrections and changes for Gentoo by Daniel Gryniewicz <dang@gentoo.org>
+ .fi
diff --git a/app-admin/logrotate/files/logrotate-3.7.1-taboo-to-debug.patch b/app-admin/logrotate/files/logrotate-3.7.1-taboo-to-debug.patch
new file mode 100644
index 000000000000..2e07188f5ad9
--- /dev/null
+++ b/app-admin/logrotate/files/logrotate-3.7.1-taboo-to-debug.patch
@@ -0,0 +1,12 @@
+diff -u -ruN logrotate-3.7.1.orig/config.c logrotate-3.7.1/config.c
+--- logrotate-3.7.1.orig/config.c 2003-08-07 07:13:14.000000000 -0400
++++ logrotate-3.7.1/config.c 2005-05-24 12:13:41.000000000 -0400
+@@ -147,7 +147,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/app-admin/logrotate/logrotate-3.7.1.ebuild b/app-admin/logrotate/logrotate-3.7.1.ebuild
new file mode 100644
index 000000000000..39cd8ac5b087
--- /dev/null
+++ b/app-admin/logrotate/logrotate-3.7.1.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-admin/logrotate/logrotate-3.7.1.ebuild,v 1.1 2005/05/24 21:08:00 dang Exp $
+
+inherit eutils
+
+DESCRIPTION="Rotates, compresses, and mails system logs"
+HOMEPAGE="http://www.gentoo.org"
+SRC_URI="mirror://gentoo/${PN}-${PV}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~x86 ~ppc ~sparc ~alpha ~ia64 ~amd64 ~ppc64 ~s390 ~hppa"
+IUSE="selinux"
+
+RDEPEND="
+ >=dev-libs/popt-1.5
+ selinux? ( sys-libs/libselinux )"
+
+DEPEND="${DEPEND}
+ >=sys-apps/portage-2.0.47-r10
+ >=sys-apps/sed-4
+ selinux? ( sec-policy/selinux-logrotate )"
+
+src_unpack() {
+ unpack ${P}.tar.bz2
+
+ cd ${S}
+
+ sed -i \
+ -e "s:CFLAGS += -g:CFLAGS += -g ${CFLAGS}:" \
+ -e "/CVSROOT =/d" \
+ Makefile || die "sed failed"
+
+ epatch ${FILESDIR}/${P}-dateext-maxage.patch
+ epatch ${FILESDIR}/${P}-datehack.patch
+ epatch ${FILESDIR}/${P}-ignore-hidden.patch
+ epatch ${FILESDIR}/${P}-manpage-fixes.patch
+ epatch ${FILESDIR}/${P}-taboo-to-debug.patch
+}
+
+src_compile() {
+ local myconf
+ useq selinux && myconf='WITH_SELINUX=yes'
+ emake ${myconf} || die "emake failed"
+}
+
+src_install() {
+ insinto /usr
+ dosbin logrotate
+ doman logrotate.8
+ dodoc examples/logrotate*
+
+ exeinto /etc/cron.daily
+ doexe ${FILESDIR}/logrotate.cron
+
+ insinto /etc
+ doins ${FILESDIR}/logrotate.conf
+
+ keepdir /etc/logrotate.d
+}
+
+pkg_postinst() {
+ einfo "If you wish to have logrotate e-mail you updates, please"
+ einfo "emerge mail-client/mailx and configure logrotate in"
+ einfo "/etc/logrotate.conf appropriately"
+ einfo
+ einfo "Additionally, /etc/logrotate.conf may need to be modified"
+ einfo "for your particular needs. See man logrotate for details."
+}
diff --git a/app-admin/logrotate/metadata.xml b/app-admin/logrotate/metadata.xml
index 20ce219711a2..9871f0dcebcc 100644
--- a/app-admin/logrotate/metadata.xml
+++ b/app-admin/logrotate/metadata.xml
@@ -2,4 +2,5 @@
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<herd>no-herd</herd>
+<maintainer><email>dang@gentoo.org</email></maintainer>
</pkgmetadata>