blob: 922bb870b926cac11e2f2c1aa41aed9992865ae2 (
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
# 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.glusterfs 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
}
save_variables() {
mkdir -p "${RC_SVCDIR}"/env/
local _envname
if [ -n "${export_vars}" ]; then
rm "${RC_SVCDIR}/env/${RC_SVCNAME}"
for _envname in ${export_vars}; do
eval echo "${_envname}=\$${_envname}" >> "${RC_SVCDIR}/env/${RC_SVCNAME}"
done
fi
}
load_variables() {
sourcex -e "${RC_SVCDIR}/env/*"
}
# Add our sbin to $PATH
case "$PATH" in
"$RC_LIBEXECDIR"/sbin|"$RC_LIBEXECDIR"/sbin:*);;
*) PATH="$RC_LIBEXECDIR/sbin:$PATH" ; export PATH ;;
esac
|