If the link already exists, make it's ownership be the same as if it was
newly created (only chown if we are root). Removes existing files using
-trash-put or rm -rf if it is not available, or if trash-put fails due to a
-limitation such as a cross-filesystem link. Create directory of link if
-needed. Slightly more restrictive arguments than ln.
+rm -rf. Create directory of link if needed. Slightly more restrictive
+arguments than ln.
In the 1st form, create a link to TARGET with the name LINK_NAME. In the 2nd
form, create a link to TARGET in the current directory. In the 3rd form, create
if $do_exit; then return 0; fi
fi
if (( ${#to_remove[@]} >= 1 )); then
- if type -P trash-put >/dev/null; then
- if $verbose; then
- echo "lnf: trash-put -- ${to_remove[*]}"
- fi
- if ! $dry_run; then
- trash-put -- "${to_remove[@]}" || ret=$?
- fi
- # trash-put will fail to trash a link that goes across filesystems (72),
- # and for empty files (74)
- # so revert to rm -rf in that case
- if [[ $ret == 72 ]]; then
- echo "lnf: using rm -rf to overcome cross filesystem trash-put limitation"
- rm -rf -- "${to_remove[@]}" || return $?
- elif [[ $ret == 74 ]]; then
- echo "lnf: using rm -rf to overcome empty file & hardlink trash-put limitation"
- rm -rf -- "${to_remove[@]}"
- elif [[ $ret && $ret != 0 ]]; then
- return $x
- fi
- else
- if $verbose; then
- echo "lnf: rm -rf -- ${to_remove[*]}"
- fi
- if ! $dry_run; then
- rm -rf -- "${to_remove[@]}"
- fi
+ if $verbose; then
+ echo "lnf: rm -rf -- ${to_remove[*]}"
+ fi
+ if ! $dry_run; then
+ rm -rf -- "${to_remove[@]}"
fi
fi