summaryrefslogtreecommitdiffstats
path: root/etc/rc.d/localpkg
diff options
context:
space:
mode:
authoreik <eik@FreeBSD.org>2004-07-28 00:09:19 +0000
committereik <eik@FreeBSD.org>2004-07-28 00:09:19 +0000
commitac2fecdcf2ab22abbc2181ae2023eefe7389adf5 (patch)
treee87b0657f556698390be4cd9c706ffd998e1a053 /etc/rc.d/localpkg
parentc9f1212225d641bb2113e6eb41a95fdd58247751 (diff)
downloadFreeBSD-src-ac2fecdcf2ab22abbc2181ae2023eefe7389adf5.zip
FreeBSD-src-ac2fecdcf2ab22abbc2181ae2023eefe7389adf5.tar.gz
back out the localkg changes until things have settled.
Discussed with: mtm
Diffstat (limited to 'etc/rc.d/localpkg')
-rw-r--r--etc/rc.d/localpkg155
1 files changed, 21 insertions, 134 deletions
diff --git a/etc/rc.d/localpkg b/etc/rc.d/localpkg
index 257743e..add28fe 100644
--- a/etc/rc.d/localpkg
+++ b/etc/rc.d/localpkg
@@ -11,120 +11,31 @@
. /etc/rc.subr
name="localpkg"
-_arg1="$1"
-
-# script_is_rcd script
-# Checks that script is an rc.d style script.
-# Returns 0 if it is, otherwise, it returns 1.
-#
-script_is_rcd()
-{
- local _s match
- _s="$1"
-
- [ -z "$_s" ] && return 1
- match=`grep -I -c -m1 '^# PROVIDE:' "$_s" 2> /dev/null`
- [ "$match" = "1" ] && return 0
- return 1
-}
-
-# cooked_scriptlist type
-# Uses values from rc.conf(5) to prepare a list of scripts to
-# execute. It assumes the global variable script_name_sep and IFS are set
-# properly. If type is set to the string "rcd" the list will contain only
-# rc.d style scripts and they will be ordered according to thier
-# dependencies. If it is set to "rcOG" then it will contain
-# only old style ports startup scripts. The list is echoed on stdout.
-#
-cooked_scriptlist()
-{
- local _type slist fpattern skip
-
- slist=""
- _type="$1"
- case "$_type" in
- rcd)
- fpattern="*"
- ;;
- rcOG)
- fpattern="*.sh"
- ;;
- *)
- return
- ;;
- esac
- for dir in ${local_startup}; do
- if [ -d "${dir}" ]; then
- for script in ${dir}/${fpattern}; do
-
- # Weed out scripts that don't belong in the
- # category that we are preparing.
- #
- if [ "$_type" = "rcd" ]; then
- case "$script" in
- *.sample|*-dist)
- continue;;
- esac
- script_is_rcd "$script" || continue
- else
- script_is_rcd "$script" && continue
- fi
-
- slist="${slist}${script_name_sep}${script}"
- done
- fi
- done
-
- # If this is an rc.d list put the scripts in the right order.
- #
- if [ "$_type" = "rcd" ]; then
- skip="-s nostart"
- [ `/sbin/sysctl -n security.jail.jailed` -eq 1 ] && \
- skip="$skip -s nojail"
-
- # Some scripts do not define a FreeBSD keyword, so we can't
- # specify it in a keep list.
- slist=`/sbin/rcorder ${skip} ${slist} 2>/dev/null`
-
- # Substitute the newlines used by rcorder(8) with the
- # script separator.
- slist=`echo $slist | /usr/bin/tr "\n" "$script_name_sep"`
- fi
-
- echo -n $slist
-}
+start_cmd="pkg_start"
+stop_cmd="pkg_stop"
pkg_start()
{
- local slist
-
+ # For each dir in $local_startup, search for init scripts matching *.sh
+ #
case ${local_startup} in
[Nn][Oo] | '')
;;
*)
+ echo -n 'Local package initialization:'
slist=""
if [ -z "${script_name_sep}" ]; then
script_name_sep=" "
fi
-
- # Do rc.d style scripts.
- #
- script_save_sep="$IFS"
- IFS="${script_name_sep}"
- slist=`cooked_scriptlist rcd`
- debug "localpkg rc.d scripts: $slist"
- for script in ${slist}; do
- run_rc_script "$script" "$_arg1"
+ for dir in ${local_startup}; do
+ if [ -d "${dir}" ]; then
+ for script in ${dir}/*.sh; do
+ slist="${slist}${script_name_sep}${script}"
+ done
+ fi
done
- IFS="${script_save_sep}"
-
- # Do old-style ports startup scripts.
- #
- echo -n 'Local package initialization:'
script_save_sep="$IFS"
IFS="${script_name_sep}"
- slist=`cooked_scriptlist rcOG`
- debug "localpkg rcOG scripts: $slist"
for script in ${slist}; do
if [ -x "${script}" ]; then
(set -T
@@ -142,24 +53,26 @@ pkg_start()
pkg_stop()
{
- local slist
+ echo -n 'Shutting down daemon processes:'
# For each dir in $local_startup, search for init scripts matching *.sh
case ${local_startup} in
[Nn][Oo] | '')
;;
*)
+ slist=""
if [ -z "${script_name_sep}" ]; then
script_name_sep=" "
fi
-
- # Do old-style scripts
- #
+ for dir in ${local_startup}; do
+ if [ -d "${dir}" ]; then
+ for script in ${dir}/*.sh; do
+ slist="${slist}${script_name_sep}${script}"
+ done
+ fi
+ done
script_save_sep="$IFS"
IFS="${script_name_sep}"
- slist=`cooked_scriptlist rcOG`
- debug "localpkg rcOG scripts: $slist"
- echo -n 'Shutting down local packages:'
for script in `reverse_list ${slist}`; do
if [ -x "${script}" ]; then
(set -T
@@ -169,35 +82,9 @@ pkg_stop()
done
IFS="${script_save_sep}"
echo '.'
-
- # Do rc.d style scripts
- #
- script_save_sep="$IFS"
- IFS="${script_name_sep}"
- slist=`cooked_scriptlist rcd`
- debug "localpkg rc.d scripts: $slist"
- for script in `reverse_list ${slist}`; do
- run_rc_script "$script" $_arg1
- done
;;
esac
}
load_rc_config $name
-
-# We can't use the normal rc.subr(8) start/stop plumbing
-# because we call run_rc_script(), which unsets all the
-# global variables that said plumbing needs.
-#
-case "$1" in
-start|faststart)
- pkg_start
- ;;
-stop|faststop)
- pkg_stop
- ;;
-restart|fastrestart)
- pkg_stop
- pkg_start
- ;;
-esac
+run_rc_command "$1"
OpenPOWER on IntegriCloud