fix error when deleting empty directories

With --ignore-fail-on-non-empty, non-emptiness is the only failure that
gets ignored by rmdir.
In the case that rmdir reaches $HOME and considers deleting it, it will
detect insufficient permissions and subsequently exit with an error,
even if $HOME is not empty.

Prevent this by calling rmdir with a relative path that excludes $HOME.
This commit is contained in:
Cornelius Mika 2017-08-19 09:49:05 +02:00
parent 3ef56576d3
commit 72bb564754

View file

@ -315,16 +315,17 @@ in
else else
echo "Checking $targetPath gone (deleting)" echo "Checking $targetPath gone (deleting)"
$DRY_RUN_CMD rm $VERBOSE_ARG "$targetPath" $DRY_RUN_CMD rm $VERBOSE_ARG "$targetPath"
targetDir="$(dirname "$targetPath")"
# Recursively remove the containing directory. We only # Recursively delete empty parent directories.
# do this if the containing folder is not $HOME since targetDir="$(dirname "$relativePath")"
# running rmdir on $HOME will result in a harmless but if [[ "$targetDir" != "." ]] ; then
# unpleasant error message. pushd "$HOME" > /dev/null
if [[ "$targetDir" != "$HOME" ]] ; then # Call rmdir with a relative path excluding $HOME. Otherwise, it
# might try to delete $HOME and exit with a permission error.
$DRY_RUN_CMD rmdir $VERBOSE_ARG \ $DRY_RUN_CMD rmdir $VERBOSE_ARG \
-p --ignore-fail-on-non-empty \ -p --ignore-fail-on-non-empty \
"$targetDir" "$targetDir"
popd > /dev/null
fi fi
fi fi
done done