178344Sobrien#!/bin/sh 278344Sobrien# 398184Sgordon# $FreeBSD$ 478344Sobrien# 578344Sobrien 678344Sobrien# PROVIDE: cleartmp 7127345Sbrooks# REQUIRE: mountcritremote tmp 898184Sgordon# BEFORE: DAEMON 978344Sobrien 1078344Sobrien. /etc/rc.subr 1178344Sobrien 1278344Sobrienname="cleartmp" 13163427Syar# Disguise rcvar for the start method to run irrespective of its setting. 14230099Sdougbrcvar1="clear_tmp_enable" 15153537Sdougbstart_cmd="${name}_start" 16163427Syarstop_cmd=":" 1778344Sobrien 18163427Syarcleartmp_start() 1978344Sobrien{ 20163427Syar # Make /tmp location variable for easier debugging. 21163427Syar local tmp="/tmp" 22153537Sdougb 23163427Syar # X related directories to create in /tmp. 24163427Syar local x11_socket_dirs="${tmp}/.X11-unix ${tmp}/.XIM-unix \ 25163427Syar ${tmp}/.ICE-unix ${tmp}/.font-unix" 26153537Sdougb 27163427Syar if checkyesno ${rcvar1}; then 28197947Sdougb check_startmsgs && echo "Clearing ${tmp}." 29153537Sdougb 30163427Syar # This is not needed for mfs, but doesn't hurt anything. 31163427Syar # Things to note: 32163427Syar # + The dot in ${tmp}/. is important. 33163427Syar # + Put -prune before -exec so find never descends 34163427Syar # into a directory that was already passed to rm -rf. 35163427Syar # + "--" in rm arguments isn't strictly necessary, but 36163427Syar # it can prevent foot-shooting in future. 37163427Syar # + /tmp/lost+found is preserved, but its contents are removed. 38163427Syar # + lost+found and quota.* in subdirectories are removed. 39212222Sdaichi # + .sujournal and .snap are preserved. 40163427Syar find -x ${tmp}/. ! -name . \ 41212222Sdaichi ! \( -name .sujournal -type f -user root \) \ 42212222Sdaichi ! \( -name .snap -type d -user root \) \ 43163427Syar ! \( -name lost+found -type d -user root \) \ 44163427Syar ! \( \( -name quota.user -or -name quota.group \) \ 45163427Syar -type f -user root \) \ 46163427Syar -prune -exec rm -rf -- {} + 47163427Syar elif checkyesno clear_tmp_X; then 48163427Syar # Remove X lock files, since they will prevent you from 49163427Syar # restarting X. Remove other X related directories. 50197947Sdougb check_startmsgs && echo "Clearing ${tmp} (X related)." 51163427Syar rm -rf ${tmp}/.X[0-9]-lock ${x11_socket_dirs} 52163427Syar fi 53163427Syar if checkyesno clear_tmp_X; then 54163427Syar # Create X related directories with proper permissions. 55163427Syar mkdir -m 1777 ${x11_socket_dirs} 56163427Syar fi 5778344Sobrien} 5878344Sobrien 5978344Sobrienload_rc_config $name 6078344Sobrienrun_rc_command "$1" 61