- (case #action fs of
- Slave.Delete =>
- (ignore (OS.Process.system (Config.rm
- ^ " -f "
- ^ Config.Webalizer.configDir
- ^ "/"
- ^ base
- ^ ".conf"));
- ignore (OS.Process.system (Config.rm
- ^ " -rf "
- ^ Config.Webalizer.outputDir
- ^ "/"
- ^ base)))
- | _ =>
- (ignore (OS.Process.system (Config.cp
- ^ " "
- ^ #file fs
- ^ " "
- ^ Config.Webalizer.configDir
- ^ "/"
- ^ base
- ^ ".conf"));
- let
- val dir = Config.Webalizer.outputDir ^ "/" ^ 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