Changeset View
Changeset View
Standalone View
Standalone View
contrib/openrc/sh/rc-functions.sh.in
- This file was added.
Property | Old Value | New Value |
---|---|---|
svn:eol-style | null | native \ No newline at end of property |
svn:keywords | null | FreeBSD=%H \ No newline at end of property |
svn:mime-type | null | text/plain \ No newline at end of property |
# Copyright (c) 2007 Gentoo Foundation | |||||
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> | |||||
# Released under the 2-clause BSD license. | |||||
has_addon() | |||||
{ | |||||
[ -e /@LIB@/rc/addons/"$1".sh -o -e /@LIB@/rcscripts/addons/"$1".sh ] | |||||
} | |||||
_addon_warn() | |||||
{ | |||||
eindent | |||||
ewarn "$RC_SVCNAME uses addon code which is deprecated" | |||||
ewarn "and may not be available in the future." | |||||
eoutdent | |||||
} | |||||
import_addon() | |||||
{ | |||||
if [ -e /@LIB@/rc/addons/"$1".sh ]; then | |||||
_addon_warn | |||||
. /@LIB@/rc/addons/"$1".sh | |||||
elif [ -e /@LIB@/rcscripts/addons/"$1".sh ]; then | |||||
_addon_warn | |||||
. /@LIB@/rcscripts/addons/"$1".sh | |||||
else | |||||
return 1 | |||||
fi | |||||
} | |||||
start_addon() | |||||
{ | |||||
( import_addon "$1-start" ) | |||||
} | |||||
stop_addon() | |||||
{ | |||||
( import_addon "$1-stop" ) | |||||
} | |||||
net_fs_list="afs ceph cifs coda davfs fuse fuse.sshfs gfs glusterfs lustre | |||||
ncpfs nfs nfs4 ocfs2 shfs smbfs" | |||||
is_net_fs() | |||||
{ | |||||
[ -z "$1" ] && return 1 | |||||
# Check OS specific flags to see if we're local or net mounted | |||||
mountinfo --quiet --netdev "$1" && return 0 | |||||
mountinfo --quiet --nonetdev "$1" && return 1 | |||||
# Fall back on fs types | |||||
local t=$(mountinfo --fstype "$1") | |||||
for x in $net_fs_list $extra_net_fs_list; do | |||||
[ "$x" = "$t" ] && return 0 | |||||
done | |||||
return 1 | |||||
} | |||||
is_union_fs() | |||||
{ | |||||
[ ! -x /sbin/unionctl ] && return 1 | |||||
unionctl "$1" --list >/dev/null 2>&1 | |||||
} | |||||
get_bootparam() | |||||
{ | |||||
local match="$1" | |||||
[ -z "$match" -o ! -r /proc/cmdline ] && return 1 | |||||
set -- $(cat /proc/cmdline) | |||||
while [ -n "$1" ]; do | |||||
[ "$1" = "$match" ] && return 0 | |||||
case "$1" in | |||||
gentoo=*) | |||||
local params="${1##*=}" | |||||
local IFS=, x= | |||||
for x in $params; do | |||||
[ "$x" = "$match" ] && return 0 | |||||
done | |||||
;; | |||||
esac | |||||
shift | |||||
done | |||||
return 1 | |||||
} | |||||
get_bootparam_value() | |||||
{ | |||||
local match="$1" which_value="$2" sep="$3" result value | |||||
if [ -n "$match" -a -r /proc/cmdline ]; then | |||||
set -- $(cat /proc/cmdline) | |||||
while [ -n "$1" ]; do | |||||
case "$1" in | |||||
$match=*) | |||||
value="${1##*=}" | |||||
case "$which_value" in | |||||
all) | |||||
[ -z "$sep" ] && sep=' ' | |||||
if [ -z "$result" ]; then | |||||
result="$value" | |||||
else | |||||
result="${result}${sep}${value}" | |||||
fi | |||||
;; | |||||
last) | |||||
result="$value" | |||||
;; | |||||
*) | |||||
result="$value" | |||||
break | |||||
;; | |||||
esac | |||||
;; | |||||
esac | |||||
shift | |||||
done | |||||
fi | |||||
echo $result | |||||
} | |||||
need_if_exists() | |||||
{ | |||||
for x; do | |||||
rc-service --exists "${x}" && need "${x}" | |||||
done | |||||
} | |||||
# Called from openrc-run.sh or gendepends.sh | |||||
_get_containers() { | |||||
local c | |||||
case "${RC_UNAME}" in | |||||
FreeBSD) | |||||
c="-jail" | |||||
;; | |||||
Linux) | |||||
c="-docker -lxc -openvz -rkt -systemd-nspawn -uml -vserver" | |||||
;; | |||||
esac | |||||
echo $c | |||||
} | |||||
_get_containers_remove() { | |||||
local c | |||||
for x in $(_get_containers); do | |||||
c="${c}!${x} " | |||||
done | |||||
echo $c | |||||
} | |||||
_depend() { | |||||
depend | |||||
local _rc_svcname=$(shell_var "$RC_SVCNAME") _deptype= _depends= | |||||
# Add any user defined depends | |||||
for _deptype in config:CONFIG need:NEED use:USE want:WANT \ | |||||
after:AFTER before:BEFORE \ | |||||
provide:PROVIDE keyword:KEYWORD; do | |||||
IFS=: | |||||
set -- $_deptype | |||||
unset IFS | |||||
eval _depends=\$rc_${_rc_svcname}_$1 | |||||
[ -z "$_depends" ] && eval _depends=\$rc_$1 | |||||
[ -z "$_depends" ] && eval _depends=\$RC_${_rc_svcname}_$2 | |||||
[ -z "$_depends" ] && eval _depends=\$RC_$2 | |||||
$1 $_depends | |||||
done | |||||
} | |||||
# Add our sbin to $PATH | |||||
case "$PATH" in | |||||
"$RC_LIBEXECDIR"/sbin|"$RC_LIBEXECDIR"/sbin:*);; | |||||
*) PATH="$RC_LIBEXECDIR/sbin:$PATH" ; export PATH ;; | |||||
esac |