Removed the additional '-f "${LOGFILE2}' per the bug report and it works
correctly.
--- /usr/local/src/acct	2008-09-04 17:34:59.000000000 -0400
+++ /usr/local/src/acct.new	2008-09-04 17:49:20.000000000 -0400
@@ -1,44 +1,53 @@
 #!/bin/sh
+#
+# cron script to perform monthly login accounting.
+#
+# Written by Ian A. Murdock <[EMAIL PROTECTED]>
+# Modified by Dirk Eddelbuettel <[EMAIL PROTECTED]>   
+# Modified by Tero Tilus <[EMAIL PROTECTED]>
+#   patch adopted by Christian Perrier <[EMAIL PROTECTED]> for #187538
 
 LOGROTATE="/etc/cron.daily/logrotate"
 
-test -x /usr/sbin/accton || exit 0
-
-echo "Login accounting for the month ended `date`:" > /var/log/wtmp.report
-echo >> /var/log/wtmp.report
+if [ -x /usr/sbin/accton ]
+then
+	echo "Login accounting for the month ended `date`:" > /var/log/wtmp.report
+	echo >> /var/log/wtmp.report
 
-# The logrotate script happens to run before this one, effectively swallowing
-# all information out of wtmp before we can use it. Hence, we need to use the
-# previous file. Bad hack. Too bad we never heard from the logrotate maintainer
-# about this ...
+	# The logrotate script happens to run before this one, effectively 
+	# swallowing all information out of wtmp before we can use it. 
+	# Hence, we need to use the previous file. Bad hack.
+	# Too bad we never heard from the logrotate maintainer about this ...
+	
+	# edd 18 May 2002  make sure wtmp.1 exists
 
-if [ -f "${LOGROTATE}" ] && [ -x /usr/sbin/logrotate ]
-then
-	# make sure wtmp.1 exists
-	if [ -f /var/log/wtmp.1 ]
+	if [ -f "${LOGROTATE}" ] && [ -x /usr/sbin/logrotate ]
 	then
-		LOGFILE="/var/log/wtmp.1"
-	fi
-		if [ -f /var/log/wtmp.1.gz ]
-	then
-		LOGFILE2="`tempfile`"
-	fi
-		if [ -n "${LOGFILE}" ] && [ -n "${LOGFILE2}" ]
-	then
-		ac -f "${LOGFILE2}" -f "${LOGFILE}" -p | sort -nr -k2 >> /var/log/wtmp.report
+		if [ -f /var/log/wtmp.1 ]
+		then
+			WTMP="/var/log/wtmp.1"
+		elif [ -f /var/log/wtmp.1.gz ]
+		then
+			WTMP_WAS_GZIPPED="1"
+			WTMP="`tempfile`"
+
+			gunzip -c /var/log/wtmp.1.gz > "${WTMP}"
+		fi
+
+		ac -f "${WTMP}" -p | sort -nr -k2 >> /var/log/wtmp.report
 		echo >> /var/log/wtmp.report
-		last -f "${LOGFILE2}" >> /var/log/wtmp.report
-	elif [ -n "${LOGFILE}" ] && [ -z "${LOGFILE2}" ]
-	then
-		ac -f "${LOGFILE}" -p | sort -nr -k2 >> /var/log/wtmp.report
+		last -f "${WTMP}" >> /var/log/wtmp.report
+
+		if [ -n "${WTMP_WAS_GZIPPED}" ]
+		then
+			# remove temporary file
+			rm -f "${WTMP}"
+		fi
+	else
+		ac -p | sort -nr -k2 >> /var/log/wtmp.report
 		echo >> /var/log/wtmp.report
-		last -f "${LOGFILE}" >> /var/log/wtmp.report
+		last >> /var/log/wtmp.report
 	fi
-		rm -f "${LOGFILE2}"
-else
-	ac -p | sort -nr -k2 >> /var/log/wtmp.report
-	echo >> /var/log/wtmp.report
-	last >> /var/log/wtmp.report
 fi
 
 chown root:adm /var/log/wtmp.report

Reply via email to