aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-11-04 07:45:05 +0000
committerRoy Marples <roy@marples.name>2008-11-04 07:45:05 +0000
commitcc14b5541401dee18064417e82eab765410da95b (patch)
treebc72b60dda3ebce1faaa6855b4412d9c54073030
parent33d4fba5be98a617ecc90fb32ae533148bce7c97 (diff)
Now the linx fsck man page has return codes, I find them different from the BSD's so adjust accordingly.
-rw-r--r--init.d/fsck.in30
1 files changed, 20 insertions, 10 deletions
diff --git a/init.d/fsck.in b/init.d/fsck.in
index 5f7099a6..f2aa62aa 100644
--- a/init.d/fsck.in
+++ b/init.d/fsck.in
@@ -27,7 +27,7 @@ _reboot() {
start()
{
- local reboot_opts= fsck_opts= p= check_extra=
+ local fsck_opts= p= check_extra=
if [ -e /fastboot ]; then
ewarn "Skipping fsck due to /fastboot"
@@ -60,21 +60,31 @@ start()
fsck_opts="${fsck_opts} -R"
fi
fi
- reboot_opts="-f"
fi
trap : INT 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} || return 1;;
- 8) ewend 1 "Operational error"; return 0;;
- 12) ewend 1 "fsck interupted"; return 1;;
- *) eend 2 "Filesystems couldn't be fixed"
- _abort || return 1;;
+ 0) eend 0; return 0;;
+ 1) ewend 1 "Filesystems repaired"; return 0;;
+ 2|3) if [ "${RC_UNAME}" = "Linux" ]; then
+ ewend 1 "Filesystems repaired, but reboot needed"
+ _reboot -f
+ else
+ ewend 1 "Filesystems still have errors; manual fsck required"
+ fi;;
+ 4) if [ "${RC_UNAME}" = "Linux" ]; then
+ ewend 1 "Fileystem errors left uncorrected"
+ return 0
+ else
+ ewend 1 "Filesystems repaired, but reboot needed"
+ _reboot
+ fi;;
+ 8) ewend 1 "Operational error"; return 0;;
+ 12) ewend 1 "fsck interupted";;
+ *) eend 2 "Filesystems couldn't be fixed";;
esac
+ _abort || return 1
}
stop()