summaryrefslogtreecommitdiff
blob: 04a1f1318442d263a75f85368e1693c1abea7e10 (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
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

# bool check_statedir(dir)
#
#   Check that 'dir' exists, if not, drop to a shell.
#
check_statedir() {
	[[ -z $1 ]] && return 0

	if [[ ! -d $1 ]] && ! mkdir -p "$1" &>/dev/null ; then
		splash "critical" &
		echo
		eerror "For Gentoo to function properly, \"$1\" needs to exist."
		if [[ ${RC_FORCE_AUTO} == "yes" ]] ; then
			eerror "Attempting to create \"$1\" for you ..."
			mount -o remount,rw /
			mkdir -p "$1"
		fi
		if [[ ! -d $1 ]] ; then
			eerror "Please mount your root partition read/write, and execute:"
			echo
			eerror "  # mkdir -p $1"
			echo; echo
			single_user
		fi
	fi

	return 0
}

# void start_critical_service()
#
#   Start critical services needed for bootup
#
start_critical_service() {
	(
	local retval=
	local service=$1
	# Needed for some addons like dm-crypt that starts in critical services
	local myservice=$1

	source "/etc/init.d/${service}" || eerror "Failed to source /etc/init.d/${service}"
	retval=$?
	[[ ${retval} -ne 0 ]] && return "${retval}"
	[[ -e /etc/conf.d/${service} ]] && source "/etc/conf.d/${service}"
	source /etc/rc.conf

	start || eerror "Failed to start /etc/init.d/${service}"
	retval=$?

	return "${retval}"
	)
}


# vim:ts=4