#!/bin/sh # # $NetBSD: fsck,v 1.2 2001/06/18 06:42:35 lukem Exp $ # $FreeBSD: src/etc/rc.d/fsck,v 1.4 2002/10/12 10:31:31 schweikh Exp $ # $DragonFly: src/etc/rc.d/fsck,v 1.4 2005/11/19 21:47:32 swildner Exp $ # # 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 [ "$autoboot" = no ]; then echo "Fast boot: skipping disk checks." elif [ "$autoboot" = yes ]; then # During fsck ignore SIGQUIT trap : 3 echo "Starting file system checks:" fsck -p case $? in 0) ;; 2) stop_boot ;; 4) echo "Rebooting..." reboot echo "Reboot failed; help!" stop_boot ;; 8) if checkyesno fsck_y_enable; then echo "File system preen failed, trying fsck -y." fsck -y case $? in 0) ;; *) echo "Automatic file system check failed; help!" stop_boot ;; esac else echo "Automatic file system check failed; help!" stop_boot fi ;; 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"