blob: d77c5dd39305b5fb70bf869410cd22ebf4c3cbd3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
# Copyright (c) 2007 Gentoo Foundation
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license.
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
|