diff options
-rwxr-xr-x | pttbbs/util/timecap_expire.sh | 71 |
1 files changed, 44 insertions, 27 deletions
diff --git a/pttbbs/util/timecap_expire.sh b/pttbbs/util/timecap_expire.sh index 4f64f903..b384e28e 100755 --- a/pttbbs/util/timecap_expire.sh +++ b/pttbbs/util/timecap_expire.sh @@ -12,6 +12,23 @@ HOME_BASE="$BBSHOME/home" # check TIME_CAPSULE_BASE_FOLDER_NAME in mbbsd/timecap.c TIMECAP_NAME=".timecap" +expire_folder() { + local timecap_base="$1/$TIMECAP_NAME" + local expire="$2" + + if [ ! -d "$timecap_base" ]; then + return + fi + + # first stage, expire files + find "$timecap_base" -mmin "$expire" -ls -delete + + # second stage, modify .DIR files + # dir_file="$timecap_base/archive.idx" + $BBSHOME/bin/timecap_buildref "$timecap_base" + +} + expire_boards() { local BOARDS="$($BBSHOME/bin/showboard $BBSHOME/.BRD | sed 's/^ *[0-9][0-9]* //; s/ .*//')" @@ -24,18 +41,8 @@ expire_boards() { do i=$((i + 1)) printf '\r%05d / %05d [B] %-12s ...' $i $num_boards "$board" >&2 - timecap_base=$( - printf "%s/%c/%s/%s" "$BOARD_BASE" "$board" "$board" "$TIMECAP_NAME") - if [ ! -d "$timecap_base" ]; then - continue - fi - - # first stage, expire files - find "$timecap_base" -mmin "$EXPIRE_MINUTES" -ls -delete - - # second stage, modify .DIR files - # dir_file="$timecap_base/archive.idx" - $BBSHOME/bin/timecap_buildref "$timecap_base" + timecap_base="$(printf "%s/%c/%s" "$BOARD_BASE" "$board" "$board")" + expire_folder "$timecap_base" "$EXPIRE_MINUTES" done } @@ -49,23 +56,33 @@ expire_home() { do i=$((i + 1)) printf '\r%07d [U] %-12s ...' $i "$userid" >&2 - timecap_base=$( - printf "%s/%c/%s/%s" "$HOME_BASE" "$userid" "$userid" "$TIMECAP_NAME") - if [ ! -d "$timecap_base" ]; then - continue - fi + timecap_base="$(printf "%s/%c/%s" "$HOME_BASE" "$userid" "$userid")" + expire_folder "$timecap_base" "$HOME_EXPIRE_MINUTES" + done +} - # first stage, expire files - find "$timecap_base" -mmin "$HOME_EXPIRE_MINUTES" -ls -delete +expire_all() { + date # for loggin + date >&2 # still for logging + expire_boards + expire_home + echo "" >&2 +} + +main() { + if [ "$#" = "0" ]; then + expire_all + return + fi - # second stage, modify .DIR files - # dir_file="$timecap_base/archive.idx" - $BBSHOME/bin/timecap_buildref "$timecap_base" + local timecap_base + for timecap_base in "$@"; do + local expire="$EXPIRE_MINUTES" + if echo "$timecap_base" | grep -qw "home"; then + expire="$HOME_EXPIRE_MINUTES" + fi + expire_folder "$timecap_base" "$expire" done } -date # for loggin -date >&2 # still for logging -expire_boards -expire_home -echo "" >&2 +main "$@" |