base-files: rc.common: fix enable() return code and logic

In current state, if there is START but no STOP, enbale()
will return 1 (failure), which is wrong.
Moreover there is no need to check for START/STOP twice.
Instead, add err variable to save success state and
and return it's value.
Also eliminate the need to disable() by using 'ln -sf',
which will first delete the old symlink if one exists.

Changes from v1:
- fixed description

Signed-off-by: Roman Yeryomin <roman@advem.lv>
This commit is contained in:
Roman Yeryomin 2017-12-22 13:04:46 +02:00 committed by John Crispin
parent b153745bfb
commit 0b1fa809d0

View File

@ -41,14 +41,15 @@ disable() {
} }
enable() { enable() {
err=1
name="$(basename "${initscript}")" name="$(basename "${initscript}")"
disable [ "$START" ] && \
[ -n "$START" -o -n "$STOP" ] || { ln -sf "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}" && \
echo "/etc/init.d/$name does not have a START or STOP value" err=0
return 1 [ "$STOP" ] && \
} ln -sf "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/K${STOP}${name##K[0-9][0-9]}" && \
[ "$START" ] && ln -s "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/S${START}${name##S[0-9][0-9]}" err=0
[ "$STOP" ] && ln -s "../init.d/$name" "$IPKG_INSTROOT/etc/rc.d/K${STOP}${name##K[0-9][0-9]}" return $err
} }
enabled() { enabled() {