2004-02-06 Sebastien Pouliot <sebastien@ximian.com>
[mono.git] / mcs / ilasm / Driver.cs
index 88798fdc7d6e5dd92624ae9eb16b01611cee84c2..6121796e2ff143b310cb91f6b08d0990c1d9d1f4 100644 (file)
@@ -43,19 +43,19 @@ namespace Mono.ILASM {
                         private string output_file;
                         private Target target = Target.Exe;
                         private string target_string = "exe";
+                        private bool quiet = false;
                         private bool show_tokens = false;
                         private bool show_method_def = false;
                         private bool show_method_ref = false;
                         private bool show_parser = false;
                         private bool scan_only = false;
-                        private bool delete_on_error = false;
                         private CodeGen codegen;
 
                         public DriverMain (string[] args)
                         {
                                 il_file_list = new ArrayList ();
                                 ParseArgs (args);
-                                report = new Report ();
+                                report = new Report (quiet);
                         }
 
                         public void Run ()
@@ -65,7 +65,7 @@ namespace Mono.ILASM {
                                                 Usage ();
                                         if (output_file == null)
                                                 output_file = CreateOutputFile ();
-                                        codegen = new CodeGen (output_file, target == Target.Dll, true);
+                                        codegen = new CodeGen (output_file, target == Target.Dll, true, report);
                                         foreach (string file_path in il_file_list)
                                                 ProcessFile (file_path);
                                         if (scan_only)
@@ -73,10 +73,6 @@ namespace Mono.ILASM {
 
                                         codegen.Write ();
                                 } catch {
-                                        if (delete_on_error) {
-                                                if (File.Exists (output_file))
-                                                        File.Delete (output_file);
-                                        }
                                         throw;
                                 }
                         }
@@ -108,7 +104,7 @@ namespace Mono.ILASM {
                                         return;
                                 }
 
-                                ILParser parser = new ILParser (codegen);
+                                ILParser parser = new ILParser (codegen, reader);
                                 try {
                                         if (show_parser)
                                                 parser.yyparse (new ScannerAdapter (scanner),
@@ -167,6 +163,22 @@ namespace Mono.ILASM {
                                                 target = Target.Dll;
                                                 target_string = "dll";
                                                 break;
+                                        case "quiet":
+                                                quiet = true;
+                                                break;
+                                        // Stubs to stay commandline compatible with MS 
+                                        case "listing":
+                                        case "nologo":
+                                        case "debug":
+                                        case "clock":
+                                        case "error":
+                                        case "subsystem":
+                                        case "flags":
+                                        case "alignment":
+                                        case "base":
+                                        case "key":
+                                        case "resource":
+                                                break;
                                         case "scan_only":
                                                 scan_only = true;
                                                 break;
@@ -182,10 +194,6 @@ namespace Mono.ILASM {
                                         case "show_parser":
                                                 show_parser = true;
                                                 break;
-                                        case "delete_on_error":
-                                        case "doe":
-                                                delete_on_error = true;
-                                                break;
                                         case "-about":
                                                 if (str[0] != '-')
                                                         break;
@@ -196,6 +204,11 @@ namespace Mono.ILASM {
                                                         break;
                                                 Version ();
                                                 break;
+                                        default:
+                                                if (str [0] == '-')
+                                                        break;
+                                                il_file_list.Add (str);
+                                                break;
                                         }
                                 }
                         }