Add _hwclock which ensures that hwclock returns 1 on error, simplifying our code

This commit is contained in:
Roy Marples 2008-01-08 14:58:56 +00:00
parent 2e35d2a73c
commit 666be0faa0

View File

@ -75,6 +75,15 @@ setupopts() {
esac esac
} }
# hwclock doesn't always return non zero on error
_hwclock() {
local err="$(hwclock "$@" 2>&1 >/dev/null)"
[ -z "${err}" ] && return 0
echo "${err}" >&2
return 1
}
start() { start() {
local retval=0 errstr="" local retval=0 errstr=""
setupopts setupopts
@ -89,22 +98,22 @@ start() {
modprobe -q rtc || modprobe -q genrtc modprobe -q rtc || modprobe -q genrtc
fi fi
# Since hwclock always exit's with a 0, need to check its output.
if [ -e /etc/adjtime ] && yesno ${clock_adjfile}; then if [ -e /etc/adjtime ] && yesno ${clock_adjfile}; then
errstr="$(hwclock --adjust ${utc_cmd} 2>&1 >/dev/null)" _hwclock --adjust ${utc_cmd}
fi retval=$((${retval} + $?))
# If setting UTC, don't bother to run hwclock when first booting
# as that's the default
if [ "${PREVLEVEL}" != "N" -o "${utc_cmd}" != "--utc" -o -n "${clock_args}" ]; then
errstr="${errstr}$(hwclock --hctosys ${utc_cmd} ${clock_args} 2>&1 >/dev/null)"
fi fi
if [ -n "${errstr}" ]; then # If setting UTC, don't bother to run hwclock when first booting
ewarn "${errstr}" # as that's the default
retval=1 if [ "${PREVLEVEL}" != "N" -o \
"${utc_cmd}" != "--utc" -o \
-n "${clock_args}" ];
then
_hwclock --hctosys ${utc_cmd} ${clock_args}
retval=$((${retval} + $?))
fi fi
errstr="Failed to set clock"
eend ${retval} "${errstr}" "You will need to set the clock yourself" eend ${retval} "Failed to set the system clock"
return 0 return 0
} }
@ -120,19 +129,18 @@ stop() {
[ -z "${utc_cmd}" ] && return 0 [ -z "${utc_cmd}" ] && return 0
ebegin "Setting hardware clock using the system clock" "[${utc}]" ebegin "Setting hardware clock using the system clock" "[${utc}]"
if ! yesno "${clock_adjfile}"; then if ! yesno "${clock_adjfile}"; then
# Some implementations don't handle adjustments # Some implementations don't handle adjustments
if LC_ALL=C hwclock --help | grep -q "\-\-noadjfile"; then if LC_ALL=C hwclock --help | grep -q "\-\-noadjfile"; then
utc_cmd="${utc_cmd} --noadjfile" utc_cmd="${utc_cmd} --noadjfile"
fi fi
fi fi
errstr="$(LC_ALL=C hwclock --systohc ${utc_cmd} ${clock_args} 2>&1 >/dev/null)"
if [ -n "${errstr}" ]; then _hwclock --systohc ${utc_cmd} ${clock_args}
ewarn "${errstr}" retval=$?
retval=1
fi eend ${retval} "Failed to sync clocks"
errstr="Failed to sync clocks"
eend ${retval} "${errstr}"
} }
save() { save() {