X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fsrc%2Fexicyclog.src;h=c491b205b6f7cadaa86fabaf93b32966ad5cbf9b;hb=493e0e6648552c0dce6c5225c8438d2829f1ac11;hp=56e3b664440ea2874a5b16598b21715c2641240d;hpb=df40aca4c4adf35e168c625f7fff589c90f1bb08;p=exim.git diff --git a/src/src/exicyclog.src b/src/src/exicyclog.src index 56e3b6644..c491b205b 100644 --- a/src/src/exicyclog.src +++ b/src/src/exicyclog.src @@ -1,7 +1,6 @@ #! /bin/sh -# $Cambridge: exim/src/src/exicyclog.src,v 1.7 2008/02/06 12:35:03 nm4 Exp $ -# Copyright (c) 2006 University of Cambridge. +# Copyright (c) University of Cambridge, 1995 - 2015 # See the file NOTICE for conditions of use and distribution. # This script takes the following command line arguments: @@ -53,12 +52,12 @@ keep=EXICYCLOG_MAX compress=COMPRESS_COMMAND suffix=COMPRESS_SUFFIX -chown=CHOWN_COMMAND chgrp=CHGRP_COMMAND chmod=CHMOD_COMMAND -touch=TOUCH_COMMAND +chown=CHOWN_COMMAND mv=MV_COMMAND rm=RM_COMMAND +touch=TOUCH_COMMAND # End of editable lines ######################################################################### @@ -84,7 +83,7 @@ done # in different places. We have a fudge that will search the usual suspects if # requested. -for cmd in chown chgrp mv rm ; do +for cmd in chgrp chmod chown mv rm touch; do eval "oldcmd=\$$cmd" if [ "$oldcmd" != "look_for_it" ] ; then continue ; fi newcmd=$cmd @@ -251,7 +250,7 @@ count=$keep if [ $count -lt 10 ]; then countt=0$count; else countt=$count; fi while [ $count -gt 1 ]; do - old=`expr $count - 1` + old=`expr -- $count - 1` if [ $keep -gt 99 ]; then if [ $old -lt 10 ]; then oldt=00$old elif [ $old -lt 100 ]; then oldt=0$old @@ -283,28 +282,34 @@ done if [ $keep -gt 99 ]; then first=001; else first=01; fi +# Grab our pid ro avoid race in file creation +ourpid=$$ + if [ -f $mainlog ]; then $mv $mainlog $mainlog.$first $chown $user:$group $mainlog.$first - $touch $mainlog - $chown $user:$group $mainlog - $chmod 640 $mainlog + $touch $mainlog.$ourpid + $chown $user:$group $mainlog.$ourpid + $chmod 640 $mainlog.$ourpid + $mv $mainlog.$ourpid $mainlog fi if [ -f $rejectlog ]; then $mv $rejectlog $rejectlog.$first $chown $user:$group $rejectlog.$first - $touch $rejectlog - $chown $user:$group $rejectlog - $chmod 640 $rejectlog + $touch $rejectlog.$ourpid + $chown $user:$group $rejectlog.$ourpid + $chmod 640 $rejectlog.$ourpid + $mv $rejectlog.$ourpid $rejectlog fi if [ -f $paniclog ]; then $mv $paniclog $paniclog.$first $chown $user:$group $paniclog.$first - $touch $paniclog - $chown $user:$group $paniclog - $chmod 640 $paniclog + $touch $paniclog.$ourpid + $chown $user:$group $paniclog.$ourpid + $chmod 640 $paniclog.$ourpid + $mv $paniclog.$ourpid $paniclog fi # Now scan the (0)02 and later files, compressing where necessary, and @@ -334,7 +339,7 @@ while [ $count -le $keep ]; do $chown $user:$group $paniclog.$countt.$suffix fi - count=`expr $count + 1` + count=`expr -- $count + 1` done # End of exicyclog