128263Spst#!/bin/sh
228263Spst#
350472Speter# $FreeBSD$
428263Spst#
561410Sbrian# Perform temporary directory cleaning so that long-lived systems
661981Sbrian# don't end up with excessively old files there.
728263Spst#
828263Spst
961410Sbrian# If there is a global system configuration file, suck it in.
1061410Sbrian#
1161981Sbrianif [ -r /etc/defaults/periodic.conf ]
1261981Sbrianthen
1361981Sbrian    . /etc/defaults/periodic.conf
1461981Sbrian    source_periodic_confs
1528263Spstfi
1628263Spst
1761981Sbriancase "$daily_clean_tmps_enable" in
1861410Sbrian    [Yy][Ee][Ss])
1965843Sbrian	if [ -z "$daily_clean_tmps_days" ]
2061458Sbrian	then
2165843Sbrian	    echo '$daily_clean_tmps_enable is set but' \
2265843Sbrian		'$daily_clean_tmps_days is not'
2365843Sbrian	    rc=2
2465843Sbrian	else
2561458Sbrian	    echo ""
2661458Sbrian	    echo "Removing old temporary files:"
2761410Sbrian
2861458Sbrian	    set -f noglob
2961981Sbrian	    args="-atime +$daily_clean_tmps_days -mtime +$daily_clean_tmps_days"
30104574Sjoerg	    args="${args} -ctime +$daily_clean_tmps_days"
31126342Sache	    dargs="-empty -mtime +$daily_clean_tmps_days"
32126342Sache	    [ -n "$daily_clean_tmps_ignore" ] && {
3361981Sbrian		args="$args "`echo " ${daily_clean_tmps_ignore% }" |
3461458Sbrian		    sed 's/[ 	][ 	]*/ ! -name /g'`
35126342Sache		dargs="$dargs "`echo " ${daily_clean_tmps_ignore% }" |
36126342Sache		    sed 's/[ 	][ 	]*/ ! -name /g'`
37126342Sache	    }
3861981Sbrian	    case "$daily_clean_tmps_verbose" in
3961458Sbrian		[Yy][Ee][Ss])
4061458Sbrian		    print=-print;;
4161458Sbrian		*)
4261458Sbrian		    print=;;
4361458Sbrian	    esac
4461410Sbrian
4565843Sbrian	    rc=$(for dir in $daily_clean_tmps_dirs
4665843Sbrian		do
4765843Sbrian		    [ ."${dir#/}" != ."$dir" -a -d $dir ] && cd $dir && {
48272430Sbdrewery			find -x -d . -type f $args -delete $print
49272430Sbdrewery			find -x -d . ! -name . -type d $dargs -delete $print
5065843Sbrian		    } | sed "s,^\\.,  $dir,"
5165843Sbrian		done | tee /dev/stderr | wc -l)
5265843Sbrian	    [ -z "$print" ] && rc=0
5365843Sbrian	    [ $rc -gt 1 ] && rc=1
5461458Sbrian	    set -f glob
5561458Sbrian	fi;;
5665843Sbrian
5765843Sbrian    *)  rc=0;;
5861410Sbrianesac
5965843Sbrian
6065843Sbrianexit $rc
61