This currently fails exactly when it is needed: when there is a
dangling link pointing into an unmounted filesystem. This happens
because [ -e <dangling-link> ] returns false. The solution is simply
to remove that check.
Now the first condition in the "if" statement catches the backward
compatibility case where $GANRECDIR used to be a directory. It will
also catch other problems, such as if a file has been created in this
location. If nothing exists then it will silently succeed (due to
-f).
The second case catches a symlink pointing to the wrong place (e.g. in
an unmounted filesystem).
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
_mntpt=$(echo "$_mounts" | sort | awk 'NR == 1 {print $3}')
_link_dst="${_mntpt}/${CTDB_GANESHA_REC_SUBDIR}"
mkdir -vp "$_link_dst"
- if [ -e "$GANRECDIR" ]; then
- if [ ! -L "$GANRECDIR" ] ; then
- rm -vrf "$GANRECDIR"
- else
- _t=$(readlink "$GANRECDIR")
- if [ "$_t" != "$_link_dst" ] ; then
- rm -v "$GANRECDIR"
- fi
- fi
+ if [ ! -L "$GANRECDIR" ] ; then
+ rm -vrf "$GANRECDIR"
+ else
+ _t=$(readlink "$GANRECDIR")
+ if [ "$_t" != "$_link_dst" ] ; then
+ rm -v "$GANRECDIR"
+ fi
fi
# This is not an "else". It also re-creates the link if it was
# removed above!