summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xpttbbs/util/timecap_expire.sh71
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 "$@"