Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Nov 2011 03:01:59 +0000 (UTC)
From:      Doug Barton <dougb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r227482 - head/etc/periodic/daily
Message-ID:  <201111130301.pAD31xYK073443@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dougb
Date: Sun Nov 13 03:01:58 2011
New Revision: 227482
URL: http://svn.freebsd.org/changeset/base/227482

Log:
  The default setting, daily_accounting_compress="NO", was causing
  only 1 old file to be saved, so fix this. Problem raised in the PR,
  but actually required a different solution.
  
  While I'm here, fix a very old off-by-one error causing 1 more file
  than specified in daily_accounting_save to be saved because acct.0
  was not taken into account (pun intended). Change that, and use a more
  thorough method of finding old files to delete. Partly just because this
  is the right thing to do, but also to silently fix the extra log that
  would have been left behind forever with the previous method.
  
  PR:		conf/160848
  Submitted by:	Andrey Zonov <andrey@zonov.org>

Modified:
  head/etc/periodic/daily/310.accounting

Modified: head/etc/periodic/daily/310.accounting
==============================================================================
--- head/etc/periodic/daily/310.accounting	Sun Nov 13 02:32:10 2011	(r227481)
+++ head/etc/periodic/daily/310.accounting	Sun Nov 13 03:01:58 2011	(r227482)
@@ -30,8 +30,13 @@ case "$daily_accounting_enable" in
 	    cd /var/account
 	    rc=0
 
-	    n=$daily_accounting_save
-	    rm -f acct.$n.gz acct.$n || rc=3
+	    n=$(( $daily_accounting_save - 1 ))
+	    for f in acct.*; do
+	    	case "$f" in acct.\*) continue ;; esac	# No files match
+	    	m=${f%.gz} ; m=${m#acct.}
+		[ $m -ge $n ] && { rm $f || rc=3; }
+	    done
+
 	    m=$n
 	    n=$(($n - 1))
 	    while [ $n -ge 0 ]
@@ -44,13 +49,14 @@ case "$daily_accounting_enable" in
 
 	    /etc/rc.d/accounting rotate_log || rc=3
 
+	    rm -f acct.merge && cp acct.0 acct.merge || rc=3
+	    sa -s $daily_accounting_flags /var/account/acct.merge || rc=3
+	    rm acct.merge
+
 	    case "$daily_accounting_compress" in
 		[Yy][Ee][Ss])
-		    gzip --keep -f acct.0 || rc=3;;
+		    gzip -f acct.0 || rc=3;;
 	    esac
-
-	    sa -s $daily_accounting_flags /var/account/acct.0 &&
-		unlink acct.0 || rc=3
 	fi;;
 
     *)  rc=0;;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201111130301.pAD31xYK073443>