[Pkg-ocaml-maint-commits] r3864 - in /trunk/projects/approx/trunk: debian/NEWS debian/approx.cron.weekly debian/approx.postrm gc.ml
ecc-guest at users.alioth.debian.org
ecc-guest at users.alioth.debian.org
Fri Jun 22 16:34:31 UTC 2007
Author: ecc-guest
Date: Fri Jun 22 16:34:31 2007
New Revision: 3864
URL: http://svn.debian.org/wsvn/?sc=1&rev=3864
Log:
gc_approx now removes empty subdirectories from the cache,
simplifying weekly cron job
Modified:
trunk/projects/approx/trunk/debian/NEWS
trunk/projects/approx/trunk/debian/approx.cron.weekly
trunk/projects/approx/trunk/debian/approx.postrm
trunk/projects/approx/trunk/gc.ml
Modified: trunk/projects/approx/trunk/debian/NEWS
URL: http://svn.debian.org/wsvn/trunk/projects/approx/trunk/debian/NEWS?rev=3864&op=diff
==============================================================================
--- trunk/projects/approx/trunk/debian/NEWS (original)
+++ trunk/projects/approx/trunk/debian/NEWS Fri Jun 22 16:34:31 2007
@@ -6,6 +6,9 @@
Several parameters have been added: $user, $group, $syslog, $verbose.
See the approx.conf man page for details.
+
+ The gc_approx program now removes empty subdirectories from the cache,
+ simplifying the weekly cron job.
-- Eric Cooper <ecc at cmu.edu> Wed, 13 Jun 2007 16:04:53 -0400
Modified: trunk/projects/approx/trunk/debian/approx.cron.weekly
URL: http://svn.debian.org/wsvn/trunk/projects/approx/trunk/debian/approx.cron.weekly?rev=3864&op=diff
==============================================================================
--- trunk/projects/approx/trunk/debian/approx.cron.weekly (original)
+++ trunk/projects/approx/trunk/debian/approx.cron.weekly Fri Jun 22 16:34:31 2007
@@ -3,9 +3,3 @@
# Garbage collect the approx(8) cache
/usr/sbin/gc_approx --quiet
-
-# Remove any empty directories
-
-cd /var/cache/approx/ && \
- find -type d -empty | \
- xargs --no-run-if-empty rmdir --parents --ignore-fail-on-non-empty
Modified: trunk/projects/approx/trunk/debian/approx.postrm
URL: http://svn.debian.org/wsvn/trunk/projects/approx/trunk/debian/approx.postrm?rev=3864&op=diff
==============================================================================
--- trunk/projects/approx/trunk/debian/approx.postrm (original)
+++ trunk/projects/approx/trunk/debian/approx.postrm Fri Jun 22 16:34:31 2007
@@ -2,8 +2,12 @@
if [ "$1" = "purge" ]; then
rm -rf /var/cache/approx
- deluser --quiet --system approx || true
- delgroup --quiet --system approx || true
+ if [ -x "$(command -v deluser)" -a -x "$(command -v delgroup)" ]; then
+ deluser --quiet --system approx || true
+ delgroup --quiet --system approx || true
+ else
+ echo >&2 "not removing approx user/group: deluser/delgroup command not found"
+ fi
fi
#DEBHELPER#
Modified: trunk/projects/approx/trunk/gc.ml
URL: http://svn.debian.org/wsvn/trunk/projects/approx/trunk/gc.ml?rev=3864&op=diff
==============================================================================
--- trunk/projects/approx/trunk/gc.ml (original)
+++ trunk/projects/approx/trunk/gc.ml Fri Jun 22 16:34:31 2007
@@ -187,9 +187,28 @@
in
iter_status gc
+let empty_dirs =
+ let collect_empty list dir =
+ if Sys.readdir dir = [||] then dir :: list else list
+ in
+ fold_dirs collect_empty []
+
+let remove_dir dir =
+ let prefix = if verbose then " " else "" in
+ print_if (not quiet) "%s%s" prefix dir;
+ (* any exception raised by rmdir will terminate the pruning loop *)
+ if not simulate then Unix.rmdir dir
+
+let rec prune () =
+ match empty_dirs cache_dir with
+ | [] -> ()
+ | [dir] when dir = cache_dir -> () (* don't remove cache dir *)
+ | list -> List.iter remove_dir list; if not simulate then prune ()
+
let garbage_collect () =
drop_privileges ~user ~group;
mark ();
- sweep ()
+ sweep ();
+ prune ()
let () = main_program garbage_collect ()
More information about the Pkg-ocaml-maint-commits
mailing list