zshrc: updating bk()
[grml-etc-core.git] / etc / zsh / zshrc
index 1597b36..a97441c 100644 (file)
@@ -3022,13 +3022,18 @@ fi
 #f5# Backup \kbd{file_or_folder {\rm to} file_or_folder\_timestamp}
 bk() {
     emulate -L zsh
+    local current_date=$(date -u "+%Y-%m-%dT%H:%M:%SZ")
     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")"
+            cp -a "$1" "$1_$current_date"
+        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_$current_date"
+            fi
         else;
-            echo 'sorry, not yet implemented, send a patch!' >&2
+            cp -pR "$1" "$1_$current_date"
         fi
         shift
     done