- Cocci.post_engine cocci_infos;
- res
- ) +> List.concat
- in
-
- Common.profile_code "Main.result analysis" (fun () ->
- Ctlcocci_integration.print_bench();
- let outfiles = Cocci.check_duplicate_modif outfiles in
- outfiles +> List.iter (fun (infile, outopt) ->
- outopt +> Common.do_option (fun outfile ->
- if !inplace_modif
- then begin
- Common.command2 ("cp "^infile^" "^infile^".cocci_orig");
- Common.command2 ("cp "^outfile^" "^infile);
- end;
-
- if !outplace_modif
- then Common.command2 ("cp "^outfile^" "^infile^".cocci_res");
-
+ (cocci_infos,res)) in
+ let outfiles = List.concat outfiles in
+ (match Iteration.get_pending_instance() with
+ None -> (x,xs,cocci_infos,outfiles)
+ | Some (files,virt_rules,virt_ids) ->
+ if outfiles = [] or outfiles = [] or not !FC.show_diff
+ then
+ begin
+ Flag.defined_virtual_rules := virt_rules;
+ Flag.defined_virtual_env := virt_ids;
+ Common.erase_temp_files();
+ Common.clear_pr2_once();
+ toploop files
+ end
+ else
+ begin
+ Common.pr2
+ "Transformation not compatible with iteration. Aborting.";
+ (x,xs,cocci_infos,outfiles)
+ end) in
+ let (x,xs,cocci_infos,outfiles) = toploop xs in
+
+ Cocci.post_engine cocci_infos;
+ Common.profile_code "Main.result analysis" (fun () ->
+ Ctlcocci_integration.print_bench();
+ let outfiles = Cocci.check_duplicate_modif outfiles in
+ outfiles +> List.iter (fun (infile, outopt) ->
+ outopt +> Common.do_option (fun outfile ->
+ if !inplace_modif
+ then begin
+ (match !backup_suffix with
+ Some backup_suffix ->
+ Common.command2 ("cp "^infile^" "^infile^backup_suffix)
+ | None -> ());
+ Common.command2 ("cp "^outfile^" "^infile);
+ end;
+
+ if !outplace_modif
+ then Common.command2 ("cp "^outfile^" "^infile^".cocci_res");
+