diff options
author | Roy Marples <roy@marples.name> | 2008-11-04 07:45:05 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2008-11-04 07:45:05 +0000 |
commit | cc14b5541401dee18064417e82eab765410da95b (patch) | |
tree | bc72b60dda3ebce1faaa6855b4412d9c54073030 /init.d | |
parent | 33d4fba5be98a617ecc90fb32ae533148bce7c97 (diff) |
Now the linx fsck man page has return codes, I find them different from the BSD's so adjust accordingly.
Diffstat (limited to 'init.d')
-rw-r--r-- | init.d/fsck.in | 30 |
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() |