From 6c62564be57a4ff6bd63f12f6ec49ae7d9b53b7c Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sat, 17 Nov 2007 18:01:23 +0000 Subject: [PATCH] Backing up Webalizer output --- configDefault/webalizer.cfg | 1 + configDefault/webalizer.csg | 1 + src/plugins/webalizer.sml | 78 ++++++++++++++++++++----------------- 3 files changed, 44 insertions(+), 36 deletions(-) diff --git a/configDefault/webalizer.cfg b/configDefault/webalizer.cfg index 4f1c83a..279ca9d 100644 --- a/configDefault/webalizer.cfg +++ b/configDefault/webalizer.cfg @@ -2,5 +2,6 @@ structure Webalizer :> WEBALIZER_CONFIG = struct val configDir = "/afs/hcoop.net/common/etc/domtool/webalizer/config" val outputDir = "/afs/hcoop.net/common/etc/domtool/webalizer/output" +val backupDir = "/afs/hcoop.net/common/etc/domtool/backup/webalizer" end diff --git a/configDefault/webalizer.csg b/configDefault/webalizer.csg index 360be67..1ac2812 100644 --- a/configDefault/webalizer.csg +++ b/configDefault/webalizer.csg @@ -2,5 +2,6 @@ signature WEBALIZER_CONFIG = sig val configDir : string val outputDir : string + val backupDir : string end diff --git a/src/plugins/webalizer.sml b/src/plugins/webalizer.sml index d708dba..034e043 100644 --- a/src/plugins/webalizer.sml +++ b/src/plugins/webalizer.sml @@ -71,42 +71,48 @@ val () = Slave.registerFileHandler (fn fs => in case OS.Path.splitBaseExt (#file spl) of {base, ext = SOME "wbl"} => - (case #action fs of - Slave.Delete => - (ignore (OS.Process.system (Config.rm - ^ " -f " - ^ Config.Webalizer.configDir - ^ "/" - ^ Slave.hostname () - ^ "/" - ^ base - ^ ".conf")); - ignore (OS.Process.system (Config.rm - ^ " -rf " - ^ Config.Webalizer.outputDir - ^ "/" - ^ Slave.hostname () - ^ "/" - ^ base))) - | _ => - (ignore (OS.Process.system (Config.cp - ^ " " - ^ #file fs - ^ " " - ^ Config.Webalizer.configDir - ^ "/" - ^ Slave.hostname () - ^ "/" - ^ base - ^ ".conf")); - let - val dir = Config.Webalizer.outputDir ^ "/" ^ Slave.hostname () ^ "/" ^ base - in - if Posix.FileSys.access (dir, []) then - () - else - OS.FileSys.mkDir dir - end)) + let + fun backupDir () = OS.Path.joinDirFile + {dir = Config.Webalizer.backupDir, + file = base} + in + case #action fs of + Slave.Delete => + (ignore (OS.Process.system (Config.rm + ^ " -f " + ^ Config.Webalizer.configDir + ^ "/" + ^ Slave.hostname () + ^ "/" + ^ base + ^ ".conf")); + Slave.moveDirCreate {from = Config.Webalizer.outputDir + ^ "/" + ^ Slave.hostname () + ^ "/" + ^ base, + to = backupDir ()}) + | _ => + (ignore (OS.Process.system (Config.cp + ^ " " + ^ #file fs + ^ " " + ^ Config.Webalizer.configDir + ^ "/" + ^ Slave.hostname () + ^ "/" + ^ base + ^ ".conf")); + let + val dir = Config.Webalizer.outputDir ^ "/" ^ Slave.hostname () ^ "/" ^ base + in + if Posix.FileSys.access (dir, []) then + () + else + Slave.moveDirCreate {from = backupDir (), + to = dir} + end) + end | _ => () end) -- 2.20.1