summaryrefslogtreecommitdiffstats
path: root/etc/rc.d
diff options
context:
space:
mode:
authordougb <dougb@FreeBSD.org>2005-12-19 10:57:00 +0000
committerdougb <dougb@FreeBSD.org>2005-12-19 10:57:00 +0000
commitc9292fd99587d6b4b4b6c2d4d766fe6394410469 (patch)
tree9f4b4470a1178cab80eeca6943edbdc5e7a581c9 /etc/rc.d
parent239343cecc20abf2855c9c85f2ecf7fae8884031 (diff)
downloadFreeBSD-src-c9292fd99587d6b4b4b6c2d4d766fe6394410469.zip
FreeBSD-src-c9292fd99587d6b4b4b6c2d4d766fe6394410469.tar.gz
Clear up problems with /etc/rc.d/{abi|cleanvar|cleartmp} brought
to light by the PR. Specifically, convert these three scripts into good rc.d citizens, making sure that their functionality is preserved, but the rc.d framework rules are not broken. Add support for cleanvar as a regular rc.d script in the default rc.conf, and document this in the man page. Add a descriptive comment to rc.conf that regarding the three emulation/compatibility services provided by abi so users will not be confused by these services not having their own startup scripts. PR: conf/84574 Submitted by: Alexander Botero-Lowry
Diffstat (limited to 'etc/rc.d')
-rw-r--r--etc/rc.d/abi39
-rw-r--r--etc/rc.d/cleanvar52
-rwxr-xr-xetc/rc.d/cleartmp23
3 files changed, 67 insertions, 47 deletions
diff --git a/etc/rc.d/abi b/etc/rc.d/abi
index 53c5447..a60fd68 100644
--- a/etc/rc.d/abi
+++ b/etc/rc.d/abi
@@ -10,12 +10,9 @@
. /etc/rc.subr
-echo -n 'Additional ABI support:'
-
-name="sysvipc"
-rcvar=`set_rcvar`
-start_cmd="sysv_start"
-stop_cmd=":"
+name="abi"
+start_precmd="${name}_prestart"
+start_cmd=":"
sysv_start()
{
@@ -24,12 +21,6 @@ sysv_start()
kldload sysvsem >/dev/null 2>&1
kldload sysvshm >/dev/null 2>&1
}
-load_rc_config $name
-run_rc_command "$1"
-
-name="linux"
-rcvar=`set_rcvar`
-start_cmd="linux_start"
linux_start()
{
@@ -41,15 +32,23 @@ linux_start()
/compat/linux/sbin/ldconfig
fi
}
-load_rc_config $name
-run_rc_command "$1"
-name="svr4"
-rcvar=`set_rcvar`
-start_precmd="echo -n ' svr4'"
-start_cmd="kldload svr4 > /dev/null 2>&1"
+svr4_start()
+{
+ echo -n ' svr4'
+ kldload svr4 > /dev/null 2>&1
+}
+
+abi_prestart()
+{
+ echo -n 'Additional ABI support:'
+
+ checkyesno sysvipc_enable && sysv_start
+ checkyesno linux_enable && linux_start
+ checkyesno svr4_enable && svr4_start
+
+ echo '.'
+}
load_rc_config $name
run_rc_command "$1"
-
-echo '.'
diff --git a/etc/rc.d/cleanvar b/etc/rc.d/cleanvar
index 8178fef..b075738 100644
--- a/etc/rc.d/cleanvar
+++ b/etc/rc.d/cleanvar
@@ -6,6 +6,18 @@
# PROVIDE: cleanvar
# REQUIRE: mountcritlocal var
+. /etc/rc.subr
+
+name="cleanvar"
+rcvar=`set_rcvar`
+
+start_precmd="${name}_prestart"
+start_cmd="${name}_start"
+stop_cmd=":"
+
+extra_commands="reload"
+reload_cmd="${name}_start"
+
purgedir()
{
local dir file
@@ -34,20 +46,28 @@ purgedir()
fi
}
-# These files must be removed only the first time this script is run
-# on boot.
-#
-[ "$1" != "reload" ] && rm -f /var/run/clean_var /var/spool/lock/clean_var
-
-if [ -d /var/run -a ! -f /var/run/clean_var ]; then
- purgedir /var/run
- # And an initial utmp file
- (cd /var/run && cp /dev/null utmp && chmod 644 utmp;)
- >/var/run/clean_var
-fi
-if [ -d /var/spool/lock -a ! -f /var/spool/lock/clean_var ]; then
- purgedir /var/spool/lock
- >/var/spool/lock/clean_var
-fi
-rm -rf /var/spool/uucp/.Temp/*
+cleanvar_prestart()
+{
+ # These files must be removed only the first time this script is run
+ # on boot.
+ #
+ rm -f /var/run/clean_var /var/spool/lock/clean_var
+}
+
+cleanvar_start ()
+{
+ if [ -d /var/run -a ! -f /var/run/clean_var ]; then
+ purgedir /var/run
+ # And an initial utmp file
+ (cd /var/run && cp /dev/null utmp && chmod 644 utmp;)
+ >/var/run/clean_var
+ fi
+ if [ -d /var/spool/lock -a ! -f /var/spool/lock/clean_var ]; then
+ purgedir /var/spool/lock
+ >/var/spool/lock/clean_var
+ fi
+ rm -rf /var/spool/uucp/.Temp/*
+}
+load_rc_config $name
+run_rc_command "$1"
diff --git a/etc/rc.d/cleartmp b/etc/rc.d/cleartmp
index bacc235..2220fc4 100755
--- a/etc/rc.d/cleartmp
+++ b/etc/rc.d/cleartmp
@@ -1,6 +1,5 @@
#!/bin/sh
#
-# $NetBSD: cleartmp,v 1.4 2002/03/22 04:33:58 thorpej Exp $
# $FreeBSD$
#
@@ -12,12 +11,12 @@
name="cleartmp"
rcvar=`set_rcvar clear_tmp`
-start_cmd="cleartmp_start"
-stop_cmd=":"
-x11_socket_dirs="/tmp/.X11-unix /tmp/.ICE-unix /tmp/.font-unix /tmp/.XIM-unix"
+start_cmd="${name}_start"
cleartmp_start()
{
+
+ local x11_socket_dirs="/tmp/.X11-unix /tmp/.ICE-unix /tmp/.font-unix /tmp/.XIM-unix"
echo "Clearing /tmp."
#
# Prune quickly with one rm, then use find to clean up
@@ -27,14 +26,16 @@ cleartmp_start()
(cd /tmp && rm -rf [a-km-pr-zA-Z]* &&
find -x . ! -name . ! -name lost+found ! -name quota.user \
! -name quota.group -exec rm -rf -- {} \; -type d -prune)
+
+ # Remove X lock files, since they will prevent you from restarting X.
+ rm -f /tmp/.X[0-9]-lock
+
+ # Create socket directories with correct permissions to avoid
+ # security problem.
+ #
+ rm -fr ${x11_socket_dirs}
+ mkdir -m 1777 ${x11_socket_dirs}
}
load_rc_config $name
run_rc_command "$1"
-
-# Remove X lock files, since they will prevent you from restarting X.
-rm -f /tmp/.X[0-9]-lock
-
-# Create socket directories with correct permissions to avoid security problem.
-rm -fr ${x11_socket_dirs}
-mkdir -m 1777 ${x11_socket_dirs}
OpenPOWER on IntegriCloud