zshrc: bk() gets FreeBSD support
[grml-etc-core.git] / etc / zsh / zshrc
index 8357683..94561d3 100644 (file)
@@ -3022,13 +3022,22 @@ fi
 #f5# Backup \kbd{file_or_folder {\rm to} file_or_folder\_timestamp}
 bk() {
     emulate -L zsh
-    if islinux; then
-        cp -a "$1" "$1_$(date --iso-8601=m)"
-    elif isopenbsd; then
-        cp -R "$1" "$1_$(date "+%FT%H:%M")"
-    else;
-        echo 'sorry, not yet implemented, send a patch!' >&2
-    fi
+    while (( $# > 0 )); do
+        if islinux; then
+            cp -a "$1" "$1_$(date --iso-8601=m)"
+        elif isopenbsd; then
+            cp -R "$1" "$1_$(date "+%FT%H:%M")"
+        elif isfreebsd; then
+            if [[ -d "$1" ]] && [[ "$1" == */ ]]; then
+                echo "cowardly refusing to copy $1 's content; see cp(1)" >&2; return 1
+            else
+                cp -a "$1" "$1_$(date "+%FT%H:%M")"
+            fi
+        else;
+            echo 'sorry, not yet implemented, send a patch!' >&2
+        fi
+        shift
+    done
 }
 
 #f5# cd to directoy and list files