zshrc: bk() gets FreeBSD support
[grml-etc-core.git] / etc / zsh / zshrc
index d3d73b1..94561d3 100644 (file)
@@ -3019,10 +3019,25 @@ fi
 
 # useful functions
 
-#f5# Backup \kbd{file {\rm to} file\_timestamp}
+#f5# Backup \kbd{file_or_folder {\rm to} file_or_folder\_timestamp}
 bk() {
     emulate -L zsh
-    cp -b $1 $1_`date --iso-8601=m`
+    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