Пример #1
0
        /// <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;
        }