#!/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"