(*****************************************************************************)
(* convenient globals to pass to parse_c.init_defs *)
(*****************************************************************************)
-let path = Filename.concat (Sys.getenv "HOME") "coccinelle"
-let std_h = ref (Filename.concat path "standard.h")
+let path = ref
+ (try (Sys.getenv "YACFE_HOME")
+ with Not_found-> "/home/pad/c-yacfe"
+ )
+let std_h = ref (Filename.concat !path "data/standard.h")
+let common_h = ref (Filename.concat !path "data/common_macros.h")
+
let cmdline_flags_macrofile () =
[
"-macro_file", Arg.Set_string std_h,
" <file> (default=" ^ !std_h ^ ")";
- "-D", Arg.Set_string std_h,
- " short option of -macro_file";
+ ]
+
+
+(*****************************************************************************)
+(* used only by cpp_ast_c, not by the parser *)
+(*****************************************************************************)
+let cpp_i_opts = ref []
+let cpp_d_opts = ref []
+
+let cmdline_flags_cpp () = [
+ "-D", Arg.String (fun s -> Common.push2 s cpp_d_opts),
+ " <x=y>";
+ "-I", Arg.String (fun s -> Common.push2 s cpp_i_opts),
+ " <dir>"
]
(*****************************************************************************)
let verbose_type = ref true
let filter_msg = ref false
+let filter_msg_define_error = ref false
+
let filter_define_error = ref false
-let filter_classic_passed = ref false
+
+let filter_passed_level = ref 0
let pretty_print_type_info = ref false
"-filter_msg", Arg.Set filter_msg ,
" filter some cpp message when the macro is a \"known\" cpp construct";
- "-filter_define_error",Arg.Set filter_define_error," ";
- "-filter_classic_passed",Arg.Set filter_classic_passed," ";
+ "-filter_msg_define_error",Arg.Set filter_msg_define_error,
+ " filter the error msg";
+
+ "-filter_define_error",Arg.Set filter_define_error,
+ " filter the error, which will not be added in the stat";
+ "-filter_passed_level",Arg.Set_int filter_passed_level," ";
]
(* change algo *)
(*****************************************************************************)
-let ifdef_to_if = ref false
-let if0_passing = ref true
-let add_typedef_root = ref true
-
(* cocci specific *)
let label_strategy_2 = ref false
let cmdline_flags_algos () =
[
- "-ifdef", Arg.Set ifdef_to_if,
- " convert ifdef to if (buggy!)";
+ "-l1", Arg.Clear label_strategy_2, " ";
+ ]
+
+(*****************************************************************************)
+(* Disable parsing feature (for CC09 and also to see if useful) *)
+(*****************************************************************************)
+
+let cpp_directive_passing = ref false
+let ifdef_directive_passing = ref false
+
+let disable_two_pass = ref false
+let disable_add_typedef = ref false
+
+let if0_passing = ref true
+let add_typedef_root = ref true
+
+let cmdline_flags_parsing_algos () = [
+
+ "-directive_passing", Arg.Set cpp_directive_passing,
+ " pass most cpp directives, especially when inside function";
+ "-ifdef_passing", Arg.Set ifdef_directive_passing,
+ " pass ifdef directives ";
+
"-noif0_passing", Arg.Clear if0_passing,
" ";
"-noadd_typedef_root", Arg.Clear add_typedef_root, " ";
+ "-noadd_typedef", Arg.Set disable_add_typedef, " ";
- "-l1", Arg.Clear label_strategy_2, " ";
- ]
+ "-disable_two_pass", Arg.Set disable_two_pass, " ";
+]
(*****************************************************************************)
(* other *)