X-Git-Url: https://iankelling.org/git/?p=lnf;a=blobdiff_plain;f=lnf;h=0620b32929d87c19ef5f79217094a9012f3df3ce;hp=8a9df12631969a491bee07b1abad07685aa79174;hb=HEAD;hpb=f973cd867151f0aea61775936bfa2d69824f09e0 diff --git a/lnf b/lnf index 8a9df12..28f77ee 100755 --- a/lnf +++ b/lnf @@ -1,6 +1,25 @@ #!/bin/bash -# Copyright (C) 2014-2016 Ian Kelling -# This program is under GPL v. 3 or later, see +# I, Ian Kelling, follow the GNU license recommendations at +# https://www.gnu.org/licenses/license-recommendations.en.html. They +# recommend that small programs, < 300 lines, be licensed under the +# Apache License 2.0. This file contains or is part of one or more small +# programs. If a small program grows beyond 300 lines, I plan to switch +# its license to GPL. + +# Copyright 2024 Ian Kelling + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + _lnf_existing_link() { local target dest_file dest_dir @@ -43,9 +62,8 @@ Create symlinks forcefully 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 @@ -92,7 +110,7 @@ links to each TARGET in DIRECTORY. local -a to_remove to_link - local x ret prefix dest_dir grp target + local ret prefix dest_dir grp target local mkdir=false if [[ $nodir ]]; then @@ -132,32 +150,11 @@ links to each TARGET in DIRECTORY. 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