let force = ref false
+let subst = ref None
+
let chdir path =
Sys.chdir path
+let start_substs () =
+ subst := Some (open_out "subst.txt")
+
+let write_substs lint = function
+ | None -> ()
+ | Some och -> EO.write_substs och lint
+
+let stop_substs = function
+ | None -> ()
+ | Some och -> close_out och
+
let rec process path name =
let file = Filename.concat path name in
if Sys.is_directory file then begin
Printf.eprintf "processing: %S\n" file;
let orig = EI.read_srcs file in
let lint = EC.recomm_srcs orig in
+ write_substs lint !subst;
if !force || (!write && lint <> orig) then EO.write_srcs file lint
end else begin
Printf.eprintf "skipping: %S\n" file
let msg_r = " Replace the input files (default: no)"
let msg_s = " Log section comments (default: no)"
let msg_t = " Log title comments (default: no)"
+let msg_u = " Write substitution file (default: no)"
let msg_w = " Write the changed output files (default: no)"
let main =
"-r", Arg.Set EO.replace, msg_r;
"-s", Arg.Set EC.log_s, msg_s;
"-t", Arg.Set EC.log_t, msg_t;
+ "-u", Arg.Unit start_substs, msg_u;
"-w", Arg.Set write, msg_w;
- ] (process "") ""
+ ] (process "") "";
+ stop_substs !subst