summaryrefslogtreecommitdiff
path: root/sh/init-functions.sh
diff options
context:
space:
mode:
Diffstat (limited to 'sh/init-functions.sh')
-rw-r--r--sh/init-functions.sh62
1 files changed, 62 insertions, 0 deletions
diff --git a/sh/init-functions.sh b/sh/init-functions.sh
new file mode 100644
index 0000000..59f0eb6
--- /dev/null
+++ b/sh/init-functions.sh
@@ -0,0 +1,62 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# void try(command)
+#
+# Try to execute 'command', if it fails, drop to a shell.
+#
+try() {
+ local errstr
+ local retval=0
+
+ if [ -c /dev/null ] ; then
+ errstr=$(eval $* 2>&1 >/dev/null)
+ else
+ errstr=$(eval $* 2>&1)
+ fi
+ retval=$?
+ if [ ${retval} -ne 0 ] ; then
+ #splash "critical" &
+ eend 1
+ eerror "The \"$*\" command failed with error:"
+ eerror " ${errstr#*: }"
+ echo
+ eerror "Since this is a critical task, startup cannot continue."
+ echo
+ single_user
+ fi
+
+ return ${retval}
+}
+
+# bool check_statedir(dir)
+#
+# Check that 'dir' exists, if not, drop to a shell.
+#
+check_statedir() {
+ [ -z "$1" ] && return 0
+
+ if [ ! -d "$1" ] ; then
+ if ! 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
+ fi
+
+ return 0
+}
+
+# vim: set ts=4 :