diff --git a/.metadata b/.metadata index 1b8c701..ef06ac0 100644 Binary files a/.metadata and b/.metadata differ diff --git a/.templates/bin/rotate_folder b/.templates/bin/rotate_folder index 7f74299..18c0647 100755 --- a/.templates/bin/rotate_folder +++ b/.templates/bin/rotate_folder @@ -55,6 +55,8 @@ # Author: Kovács Zoltán # Kovács Zoltán # License: GNU/GPL v3+ (https://www.gnu.org/licenses/gpl-3.0.en.html) +# 2025-09-15 v1.3 +# fix: now correctly handles "zero elements to keep" directives. # 2025-08-12 v1.2 # fix: now correctly handles configuration file pathnames containing spaces. # 2025-03-06 v1.1 @@ -304,13 +306,15 @@ function rotate_class { # This week concluded. done # The weekly schedule concluded. - # If we didn't save any file within this schedule we'll retain this file. - if [[ -z "$last_retained" && $pointer -lt ${#class_files[@]} ]]; then - last_retained="$file_mtime" - [[ -z "$DOIT" ]] && echo "WR ${class_files[$pointer]}" - (( pointer++ )) - [[ $pointer -lt ${#class_files[@]} ]] \ - && file_mtime=$("$STAT" -c %Y "$BACKUP_FOLDER/${class_files[$pointer]}") + if [[ "$RETAIN_WEEKS" -ge 1 ]]; then + # If we didn't save any file within this schedule we'll retain this file. + if [[ -z "$last_retained" && $pointer -lt ${#class_files[@]} ]]; then + last_retained="$file_mtime" + [[ -z "$DOIT" ]] && echo "WR ${class_files[$pointer]}" + (( pointer++ )) + [[ $pointer -lt ${#class_files[@]} ]] \ + && file_mtime=$("$STAT" -c %Y "$BACKUP_FOLDER/${class_files[$pointer]}") + fi fi # The monthly schedule. @@ -348,13 +352,15 @@ function rotate_class { # This month concluded. done # The monthly schedule concluded. - # If we didn't save any file within this schedule we'll retain this file. - if [[ -z "$last_retained" && $pointer -lt ${#class_files[@]} ]]; then - last_retained="$file_mtime" - [[ -z "$DOIT" ]] && echo "MR ${class_files[$pointer]}" - (( pointer++ )) - [[ $pointer -lt ${#class_files[@]} ]] \ - && file_mtime=$("$STAT" -c %Y "$BACKUP_FOLDER/${class_files[$pointer]}") + if [[ "$RETAIN_MONTHS" -ge 1 ]]; then + # If we didn't save any file within this schedule we'll retain this file. + if [[ -z "$last_retained" && $pointer -lt ${#class_files[@]} ]]; then + last_retained="$file_mtime" + [[ -z "$DOIT" ]] && echo "MR ${class_files[$pointer]}" + (( pointer++ )) + [[ $pointer -lt ${#class_files[@]} ]] \ + && file_mtime=$("$STAT" -c %Y "$BACKUP_FOLDER/${class_files[$pointer]}") + fi fi # All the schedules have been processed.