bug fix: fails when using -T and broken link dir
authorIan Kelling <ian@iankelling.org>
Tue, 9 Aug 2016 22:07:43 +0000 (15:07 -0700)
committerIan Kelling <ian@iankelling.org>
Tue, 9 Aug 2016 23:09:51 +0000 (16:09 -0700)
lnf

diff --git a/lnf b/lnf
index b4701df..d6dc5f2 100755 (executable)
--- a/lnf
+++ b/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 "$@"