fsck revision 78344
178344Sobrien#!/bin/sh
278344Sobrien#
378344Sobrien# $NetBSD$
478344Sobrien#
578344Sobrien
678344Sobrien# PROVIDE: fsck
778344Sobrien# REQUIRE: localswap
878344Sobrien
978344Sobrien. /etc/rc.subr
1078344Sobrien
1178344Sobrienname="fsck"
1278344Sobrienstart_cmd="fsck_start"
1378344Sobrienstop_cmd=":"
1478344Sobrien
1578344Sobrienstop_boot()
1678344Sobrien{
1778344Sobrien	#	Terminate the process (which may include the parent /etc/rc)
1878344Sobrien	#	if booting directly to multiuser mode.
1978344Sobrien	#
2078344Sobrien	if [ "$autoboot" = yes ]; then
2178344Sobrien		kill -TERM $$
2278344Sobrien	fi
2378344Sobrien	exit 1
2478344Sobrien}
2578344Sobrien
2678344Sobrienfsck_start()
2778344Sobrien{
2878344Sobrien	if [ -e /fastboot ]; then
2978344Sobrien		echo "Fast boot: skipping disk checks."
3078344Sobrien	elif [ "$autoboot" = yes ]; then
3178344Sobrien					# During fsck ignore SIGQUIT
3278344Sobrien		trap : 3
3378344Sobrien
3478344Sobrien		echo "Automatic boot in progress: starting file system checks."
3578344Sobrien		fsck -p
3678344Sobrien		case $? in
3778344Sobrien		0)
3878344Sobrien			;;
3978344Sobrien		2)
4078344Sobrien			stop_boot
4178344Sobrien			;;
4278344Sobrien		4)
4378344Sobrien			echo "Rebooting..."
4478344Sobrien			reboot
4578344Sobrien			echo "Reboot failed; help!"
4678344Sobrien			stop_boot
4778344Sobrien			;;
4878344Sobrien		8)
4978344Sobrien			echo "Automatic file system check failed; help!"
5078344Sobrien			stop_boot
5178344Sobrien			;;
5278344Sobrien		12)
5378344Sobrien			echo "Boot interrupted."
5478344Sobrien			stop_boot
5578344Sobrien			;;
5678344Sobrien		130)
5778344Sobrien			stop_boot
5878344Sobrien			;;
5978344Sobrien		*)
6078344Sobrien			echo "Unknown error; help!"
6178344Sobrien			stop_boot
6278344Sobrien			;;
6378344Sobrien		esac
6478344Sobrien	fi
6578344Sobrien}
6678344Sobrien
6778344Sobrienload_rc_config $name
6878344Sobrienrun_rc_command "$1"
69