aboutsummaryrefslogtreecommitdiff
path: root/etc/rc.d/fsck
diff options
context:
space:
mode:
authorDavid E. O'Brien <obrien@FreeBSD.org>2001-06-16 07:16:14 +0000
committerDavid E. O'Brien <obrien@FreeBSD.org>2001-06-16 07:16:14 +0000
commit9d62501fd8278c7cde01dcb4d0f2b3c7c757bf86 (patch)
tree0deb0532b31a1530d216ab3fb40d91256496fc7b /etc/rc.d/fsck
parentd6e91b3149feddfba4e7be11a6a946ef85474d0f (diff)
downloadsrc-9d62501fd8278c7cde01dcb4d0f2b3c7c757bf86.tar.gz
src-9d62501fd8278c7cde01dcb4d0f2b3c7c757bf86.zip
Notes
Diffstat (limited to 'etc/rc.d/fsck')
-rwxr-xr-xetc/rc.d/fsck68
1 files changed, 68 insertions, 0 deletions
diff --git a/etc/rc.d/fsck b/etc/rc.d/fsck
new file mode 100755
index 000000000000..ddd43024740f
--- /dev/null
+++ b/etc/rc.d/fsck
@@ -0,0 +1,68 @@
+#!/bin/sh
+#
+# $NetBSD$
+#
+
+# PROVIDE: fsck
+# REQUIRE: localswap
+
+. /etc/rc.subr
+
+name="fsck"
+start_cmd="fsck_start"
+stop_cmd=":"
+
+stop_boot()
+{
+ # Terminate the process (which may include the parent /etc/rc)
+ # if booting directly to multiuser mode.
+ #
+ if [ "$autoboot" = yes ]; then
+ kill -TERM $$
+ fi
+ exit 1
+}
+
+fsck_start()
+{
+ if [ -e /fastboot ]; then
+ echo "Fast boot: skipping disk checks."
+ elif [ "$autoboot" = yes ]; then
+ # During fsck ignore SIGQUIT
+ trap : 3
+
+ echo "Automatic boot in progress: starting file system checks."
+ fsck -p
+ case $? in
+ 0)
+ ;;
+ 2)
+ stop_boot
+ ;;
+ 4)
+ echo "Rebooting..."
+ reboot
+ echo "Reboot failed; help!"
+ stop_boot
+ ;;
+ 8)
+ echo "Automatic file system check failed; help!"
+ stop_boot
+ ;;
+ 12)
+ echo "Boot interrupted."
+ stop_boot
+ ;;
+ 130)
+ stop_boot
+ ;;
+ *)
+ echo "Unknown error; help!"
+ stop_boot
+ ;;
+ esac
+ fi
+}
+
+load_rc_config $name
+run_rc_command "$1"