Release coccinelle-0.2.0
[bpt/coccinelle.git] / tools / bridge.ml
index 6e3037c..51b4da2 100644 (file)
@@ -1,3 +1,25 @@
+(*
+ * Copyright 2005-2009, Ecole des Mines de Nantes, University of Copenhagen
+ * Yoann Padioleau, Julia Lawall, Rene Rydhof Hansen, Henrik Stuart, Gilles Muller, Nicolas Palix
+ * This file is part of Coccinelle.
+ *
+ * Coccinelle is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, according to version 2 of the License.
+ *
+ * Coccinelle is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Coccinelle.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The authors reserve the right to distribute this or future versions of
+ * Coccinelle under other licenses.
+ *)
+
+
 let drop_spaces s =
   String.concat "" (Str.split (Str.regexp "[ ]+") s)
 
@@ -56,6 +78,7 @@ let process_fp fl =
   !lines
 
 (* --------------------------------------------------------------------- *)
+(* same info, different categories *)
 
 let discard_ambiguous lines =
   let rec loop = function
@@ -208,8 +231,11 @@ let rec upto = function
   | n -> (mktag (n-1)) :: (upto (n-1))
          
 let _ =
+  let (no_ors,args) =
+    List.partition (function "-no_ors" -> true | _ -> false)
+      (Array.to_list Sys.argv) in
   let (file,fp,env) =
-    match List.tl(Array.to_list Sys.argv) with
+    match List.tl args with
       file::env ->
        let rec loop prev = function
            [] ->
@@ -233,7 +259,7 @@ let _ =
   let fp = List.fold_left (@) [] (List.map process_fp fp) in
   let i = open_in file in
   let lines = collect_lines fp i in
-  let lines = collect_ors fp lines in
+  let lines = if no_ors = [] then collect_ors fp lines else lines in
   close_in i;
   let lines = discard_ambiguous lines in
   List.iter (process_line env) lines;