Move 2 duplicate searches into a function.

The diff also ignores (RCS) subdirectories.

$ find /etc/rc.d ! -type f
/etc/rc.d
/etc/rc.d/RCS


Index: rcctl.sh
===================================================================
RCS file: /cvs/src/usr.sbin/rcctl/rcctl.sh,v
retrieving revision 1.43
diff -u -p -r1.43 rcctl.sh
--- rcctl.sh    11 Oct 2014 19:12:19 -0000      1.43
+++ rcctl.sh    13 Oct 2014 20:10:34 -0000
@@ -93,7 +93,7 @@ svc_get_defaults()
                print -r -- "$(svc_default_enabled_flags ${_svc})"
                svc_default_enabled ${_svc}
        else
-               for _i in $(ls -A /etc/rc.d | grep -v rc.subr); do
+               get_svc_list | while read _i; do
                        echo "${_i}_flags=$(svc_default_enabled_flags ${_i})"
                done
                for _i in ${_special_services}; do
@@ -134,7 +134,7 @@ svc_get_status()
                svc_get_flags ${_svc}
                svc_is_enabled ${_svc}
        else
-               for _i in $(ls -A /etc/rc.d | grep -v rc.subr); do
+               get_svc_list | while read _i; do
                        echo "${_i}_flags=$(svc_get_flags ${_i})"
                done
                for _i in ${_special_services}; do
@@ -175,6 +175,12 @@ svc_is_special()
        [ -n "${_svc}" ] || return
 
        echo ${_special_services} | grep -qw ${_svc}
+}
+
+get_svc_list()
+{
+       # Ignore rc.subr & (RCS) subdirectories:
+       find /etc/rc.d -type f -maxdepth 1 ! -name rc.subr
 }
 
 append_to_pkg_scripts()

Reply via email to