diff options
author | eik <eik@FreeBSD.org> | 2004-07-28 00:09:19 +0000 |
---|---|---|
committer | eik <eik@FreeBSD.org> | 2004-07-28 00:09:19 +0000 |
commit | ac2fecdcf2ab22abbc2181ae2023eefe7389adf5 (patch) | |
tree | e87b0657f556698390be4cd9c706ffd998e1a053 /etc/rc.d | |
parent | c9f1212225d641bb2113e6eb41a95fdd58247751 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | etc/rc.d/localpkg | 155 |
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" |