/// <summary> /// The main program function /// </summary> /// <param name="args">The array of program arguments</param> public static void Main(string[] args) { MibLoader loader = new MibLoader(); Mib mib = null; System.Collections.ArrayList queue = new System.Collections.ArrayList(); string file; int warnings = 0; int errors = 0; // Check command-line arguments if (args.Length < 1) { PrintHelp("No file(s) specified"); return; } foreach (string arg in args) { try { if (arg.Contains(":")) { queue.Add(new Uri(arg)); } else { if (Directory.Exists(arg)) { AddMibs(arg, queue); continue; } if (!File.Exists(arg)) { Console.Out.WriteLine("Warning: Skipping " + arg + ": file not found"); continue; } queue.Add(arg); } } catch (UriFormatException e) { System.Console.Out.WriteLine( "Warning: Skipping " + arg + ": " + e.Message); } } // Parse MIB files int i = 0; foreach (var src in queue) { Console.Out.Write(i); Console.Out.Write("/"); Console.Out.Write(queue.Count); Console.Out.Write(": Reading " + src + "... "); Console.Out.Flush(); try { loader.UnloadAll(); if (src is Uri uri) { loader.RemoveAllDirs(); mib = loader.Load(uri); } else { file = (string)src; if (!loader.HasDir(Directory.GetParent(file).FullName)) { loader.RemoveAllDirs(); loader.AddDir(Directory.GetParent(file).FullName); } using StreamReader sr = new StreamReader(file); mib = loader.Load(sr); } Console.Out.WriteLine("[OK]"); if (mib.Log.WarningCount > 0) { mib.Log.PrintTo(Console.Out); warnings++; } } catch (FileNotFoundException e) { Console.Out.WriteLine("[FAILED]"); PrintError(src.ToString(), e); errors++; } catch (IOException e) { Console.Out.WriteLine("[FAILED]"); PrintError(src.ToString(), e); errors++; } catch (MibLoaderException e) { Console.Out.WriteLine("[FAILED]"); e.Log.PrintTo(Console.Out); errors++; } i++; } // Print error count System.Console.Out.WriteLine(); Console.Out.WriteLine("Files processed: " + queue.Count); Console.Out.WriteLine(" with errors: " + errors); Console.Out.WriteLine(" with warnings: " + warnings); if (errors > 0) { Console.Error.WriteLine("Error: validation errors were encountered"); } Console.ReadLine(); // Return error count return; }