summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorschwarze <schwarze@openbsd.org>2014-08-26 22:39:09 +0000
committerschwarze <schwarze@openbsd.org>2014-08-26 22:39:09 +0000
commit3a94a8df01936e87a5ae5db769cc70d992a4acf5 (patch)
tree4fa19bbe5e66598c786f46c1f7258958e3969502
parentfix SEE ALSO; (diff)
downloadwireguard-openbsd-3a94a8df01936e87a5ae5db769cc70d992a4acf5.tar.xz
wireguard-openbsd-3a94a8df01936e87a5ae5db769cc70d992a4acf5.zip
Simplify the function add_flags().
Do not validate input twice, scrap needless array, and avoid needless expensive function calls to svc_get_flags(), svc_default_enabled_flags(), _rc_parse_conf(), and resolve code duplication. No functional change. Feedback and OK ajacoutot@.
-rw-r--r--usr.sbin/rcctl/rcctl.sh55
1 files changed, 17 insertions, 38 deletions
diff --git a/usr.sbin/rcctl/rcctl.sh b/usr.sbin/rcctl/rcctl.sh
index 549d14a9570..f4ab15ea30c 100644
--- a/usr.sbin/rcctl/rcctl.sh
+++ b/usr.sbin/rcctl/rcctl.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# $OpenBSD: rcctl.sh,v 1.27 2014/08/25 23:15:37 schwarze Exp $
+# $OpenBSD: rcctl.sh,v 1.28 2014/08/26 22:39:09 schwarze Exp $
#
# Copyright (c) 2014 Antoine Jacoutot <ajacoutot@openbsd.org>
#
@@ -209,54 +209,33 @@ add_flags()
return
fi
- local _deflags _flags _numargs=$#
-
- _deflags="$(svc_default_enabled_flags ${_svc})"
+ local _flags
if [ -n "$3" ]; then
- # there is an early check for this; but this function is fed with $*
- [ "$3" = "flags" ] || return
- if [ -n "$4" ]; then
- while [ "${_numargs}" -ge 4 ]
- do
- eval _flags=\"\$${_numargs} ${_flags}\"
- let _numargs--
- done
- set -A _flags -- ${_flags}
- fi
+ shift 3
+ _flags=$*
else
- # set our flags since none was given
- set -A _flags -- $(svc_get_flags ${_svc})
- if [[ "${_flags[@]}" = "NO" ]]; then
- set -A _flags -- ${_deflags}
- fi
+ # keep our flags since none were given
+ eval "_flags=\${${_svc}_flags}"
+ [[ "${_flags}" = "NO" ]] && unset _flags
fi
# unset flags if they match the default enabled ones
- if [[ "${_deflags}" = "${_flags[@]}" ]]; then
- unset _flags
+ if [ -n "${_flags}" ]; then
+ [[ "${_flags}" = "$(svc_default_enabled_flags ${_svc})" ]] && \
+ unset _flags
fi
- if svc_is_base ${_svc}; then
- rcconf_edit_begin
- grep -v "^${_svc}_flags.*=" /etc/rc.conf.local >${_TMP_RCCONF}
- if ! svc_default_enabled ${_svc} || test "${#_flags[*]}" -gt 0; then
- echo ${_svc}_flags=${_flags[@]} >>${_TMP_RCCONF}
- fi
- rcconf_edit_end
- else
- rcconf_edit_begin
- grep -v "^${_svc}_flags.*=" /etc/rc.conf.local >${_TMP_RCCONF}
- if [ "${#_flags[*]}" -gt 0 ]; then
- echo ${_svc}_flags=${_flags[@]} >>${_TMP_RCCONF}
- fi
- rcconf_edit_end
+ rcconf_edit_begin
+ grep -v "^${_svc}_flags.*=" /etc/rc.conf.local >${_TMP_RCCONF}
+ if [ -n "${_flags}" ] || \
+ ( svc_is_base ${_svc} && ! svc_default_enabled ${_svc} ); then
+ echo ${_svc}_flags=${_flags} >>${_TMP_RCCONF}
fi
+ rcconf_edit_end
# update daemon_flags
- unset ${_svc}_flags
- _rc_parse_conf
- eval ${_svc}_flags=\"$(svc_get_flags ${_svc})\"
+ eval "${_svc}_flags=\${_flags}"
}
rm_flags()