#!/sbin/runscript # Copyright 2007-2008 Roy Marples # All rights reserved. Released under the 2-clause BSD license. description="Check and repair filesystems according to /etc/fstab" _ISF=" " depend() { after clock modules keyword nojail notimeout } start() { local reboot_opts= fsck_opts= p= ebegin "Checking local filesystems" for p in ${fsck_passno}; do local IFS="${_IFS}" case "${p}" in [0-9]*) p="=${p}";; esac set -- "$@" "$(fstabinfo --passno "${p}")" unset IFS done if [ "${RC_UNAME}" = "Linux" ]; then fsck_opts="-C0 -T" if [ -z "${fsck_passno}" ]; then fsck_args=${fsck_args--A -p} if echo 2>/dev/null >/.test.$$; then rm -f /.test.$$ fsck_opts="-R" fi fi reboot_opts="-f" fi trap : QUIT fsck ${fsck_args--p} ${fsck_opts} "$@" case $? in 0) eend 0; return 0;; 1) ewend 1 "Filesystems repaired"; return 0;; 2|3|4) ewend 1 "Filesystems repaired, but reboot needed" reboot ${reboot_opts}; exec rc-abort; return 1;; 8) ewend 1 "Operational error"; return 0;; 12) ewend 1 "fsck interupted"; return 1;; *) eend 2 "Filesystems couldn't be fixed" exec rc-abort; return 1;; esac } stop() { yesno "${fsck_shutdown}" && start return 0 }