The attached patch to the sh.rotate script sets an environment variable ROTATE_LOGFILE with the name of the current file being processed before invoking the epilog or prolog programs. This permits the epilog/prolog script to do things such as calling webalizer to process the file being rotated.
The problem is that defining multiple log files in the rc.conf file with lines like the follow cause the epilog/prolog programs to be execute multiple times without knowledge of which file is being processed. apache_log_files="/opkg/var/apache/log/*access*log" I first tried having the sh.rotate script add an argument to the eval of the epilog/prolog command, but this does not work when the command is compound as in the rc.apache daily processing: -E "${apache_log_epilog} && rc apache reload" Creating a new environment variable avoids this problem and cannot break any existing epilog/prolog programs as they will not be aware of the variable. Bill -- INTERNET: [EMAIL PROTECTED] Bill Campbell; Celestial Software LLC URL: http://www.celestial.com/ PO Box 820; 6641 E. Mercer Way Voice: (206) 236-1676 Mercer Island, WA 98040-0820 Fax: (206) 232-9186 Breathe fire, slay dragons, and take chances. Failure is temporary, regret is eternal.
--- sh.rotate.orig 2008-04-02 13:10:17.000000000 -0700 +++ sh.rotate 2008-09-19 11:48:40.504881762 -0700 @@ -205,6 +205,10 @@ if [ ".$opt_t" = .yes ]; then echo "$opt_P" fi + # pass current log file name to prolog + # prolog cannot be handed an argument as it may be + # called as "prolog && something" + ROTATE_LOGFILE="$ldir/$file"; export ROTATE_LOGFILE eval $opt_P [ $? -ne 0 ] && shtool_exit $? fi @@ -394,6 +398,10 @@ if [ ".$opt_t" = .yes ]; then echo "$opt_E" fi + # pass archive file name to epilog command + # epilog cannot be handed an argument as it is often + # called as "epilog && something" + ROTATE_LOGFILE="${adir}/${file}.${n}"; export ROTATE_LOGFILE eval $opt_E [ $? -ne 0 ] && shtool_exit $? fi