X-Git-Url: https://iankelling.org/git/?p=lnf;a=blobdiff_plain;f=lnf;h=ac5ebcc020d04c0a49999bc2488080a5fbbba675;hp=b4701dff636fad888363677ddac4d716dfdea61d;hb=5da4a11f4c6f6cd7f0dd79d2402acaa78eb66f03;hpb=e51702380450ee0b4719a17744208975730ddff7 diff --git a/lnf b/lnf index b4701df..ac5ebcc 100755 --- a/lnf +++ b/lnf @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright (C) 2014 Ian Kelling +# Copyright (C) 2014-2016 Ian Kelling # This program is under GPL v. 3 or later, see lnf() { @@ -38,6 +38,7 @@ links to each TARGET in DIRECTORY." local x ret prefix dir to_remove + local mkdir=false to_remove=() if [[ $nodir ]]; then @@ -45,13 +46,10 @@ links to each TARGET in DIRECTORY." if [[ -e $2 || -L $2 ]]; then to_remove+=("$2") elif [[ ! -d $dir ]]; then + mkdir=true if [[ -e $dir || -L $dir ]]; then to_remove+=("$dir") fi - if ! mkdir -p "$(dirname "$2")"; then - echo "lnf error: failed to make directory $(dirname "$2")" - return 1 - fi fi elif (( $# >= 2 )); then if [[ -d ${!#} ]]; then @@ -93,6 +91,14 @@ links to each TARGET in DIRECTORY." fi $reset_extglob && shopt -u extglob + + if $mkdir; then + if ! mkdir -p "$(dirname "$2")"; then + echo "lnf error: failed to make directory $(dirname "$2")" + return 1 + fi + fi + ln -s $nodir -- "$@" } lnf "$@"