minor doc update
[lnf] / lnf
diff --git a/lnf b/lnf
index b4701dff636fad888363677ddac4d716dfdea61d..1dd62f9822a5a723488615d89f81999f97290104 100755 (executable)
--- a/lnf
+++ b/lnf
@@ -1,17 +1,17 @@
 #!/bin/bash
-# Copyright (C) 2014 Ian Kelling
+# Copyright (C) 2014-2016 Ian Kelling
 # This program is under GPL v. 3 or later, see <http://www.gnu.org/licenses/>
 
 lnf() {
-    local help="lnf - Create symlinks conveniently and forcefully.
-Usage:
+    local help="Usage:
        lnf -T TARGET LINK_NAME     (1st form)
        lnf TARGET                  (2nd form)
        lnf TARGET... DIRECTORY     (3rd form)
+Create symlinks conveniently and forcefully
 
-Remove existing file in the using trash-put or rm -rf if it is not available,
-or trash-put fails due to a cross-filesystem link.
-Create directory if needed. Slightly more restrictive arguments than ln.
+Removes existing files using trash-put or rm -rf if it is not available,
+or trash-put fails due to a cross-filesystem link.  Create directory 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
@@ -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 "$@"