Пример #1
0
        public override bool Generate(PVFSOutputFormat format)
        {
            // Start with nothing
            generatedImageName = null;

            // Make sure all paths exist
            if (!Directory.Exists(localPath))
            {
                log.Add("\r\nERROR: Output directory \"" + localPath + "\" does not exist!");
                return(false);
            }

            // Make sure we have some files
            if (files.Count == 0)
            {
                return(false);
            }

            // Generate based on format
            try
            {
                return(GenerateBIN(localPath + localFile));
            }
            catch (Exception e)
            {
                log.Add("\r\nERROR: " + e.Message);
                return(false);
            }
        }
Пример #2
0
        static void Main(String[] args)
        {
            // If no arguments, show the GUI
            if (args.Length == 0)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new PVFS21Form());
            }
            // Operate in command line mode
            else
            {
                // Make sure we got at least 3 parameters
                if (args.Length < 3)
                {
                    MessageBox.Show(
                        "Usage: WEBFS [options] <SourceDir> <ProjectDir> <OutputFile>\n" +
                        "    /html \"...\"\t(/h)\t: Dynamic file types (\"*.htm, *.html, *.xml, *.cgi\")\n" +
                        "    /xgzip \"...\"\t(/z)\t: Non-compressible types (\"snmp.bib, *.inc\")\n\n" +
                        "SourceDir, ProjectDir, and OutputFile are required and should be enclosed in quotes.\n" +
                        "OutputFile is placed relative to ProjectDir and *CANNOT* be a full path name.",
                        "WEBFS Console Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    return;
                }

                // Locate the parameters
                String sourceDir  = args[args.Length - 3];
                String projectDir = args[args.Length - 2];
                String outputFile = args[args.Length - 1];

                // Set up some defaults
                PVFSOutputFormat fmt     = PVFSOutputFormat.BIN;
                byte             version = 2;
                int    reserveBlock      = 64;
                String htmlTypes         = "*.htm, *.html, *.xml, *.cgi, *.bin, *.txt";
                String noGZipTypes       = "*.inc, snmp.bib";

                // Process each command line argument
                for (int i = 0; i < args.Length - 3; i++)
                {
                    String arg = args[i].ToLower();

                    // Check for output format parameters
                    fmt     = PVFSOutputFormat.BIN;
                    version = 2;

                    // Check for string parameters
                    if (arg == "/html" || arg == "-h")
                    {
                        htmlTypes = args[++i];
                    }
                    else if (arg == "/xgzip" || arg == "-z")
                    {
                        noGZipTypes = args[++i];
                    }

                    else
                    {
                        MessageBox.Show("The command-line option \"" + arg + "\" was not recognized.",
                                        "WEBFS Console Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }

                // Set up an appropriate builder
                PVFSBuilder builder;
                // This is a dummy string , will be initialized when MDD is supported from command line
                String dummy = "Dummy";
                if (version == 2)
                {
                    builder = new PVFS2Builder(projectDir, outputFile);
                    ((PVFS2Builder)builder).DynamicTypes = htmlTypes;
                    ((PVFS2Builder)builder).NonGZipTypes = noGZipTypes;
                }
                else
                {
                    builder = new PVFSClassicBuilder(projectDir, outputFile);
                    ((PVFSClassicBuilder)builder).ReserveBlock = (UInt32)reserveBlock;
                }

                // Add the files to the image and generate the image
                builder.AddDirectory(sourceDir, "");

                // Generate the image and trap errors
                if (!builder.Generate(fmt))
                {
                    LogWindow dlg = new LogWindow();
                    dlg.Image   = SystemIcons.Error;
                    dlg.Message = "An error was encountered during generation.";
                    dlg.Log     = builder.Log;
                    dlg.ShowDialog();
                    return;
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Generates an image in the specified format
        /// </summary>
        /// <param name="format">One of the PVFSOutputFormat constants indicating the format</param>
        /// <returns>true if generation was successful, false otherwise</returns>
        public override bool Generate(PVFSOutputFormat format)
        {
            // Start with nothing as the output name
            generatedImageName = null;

            // Make sure all paths exist
            if (!Directory.Exists(localPath))
            {
                log.Add("\r\nERROR: Output directory \"" + localPath + "\" does not exist!");
                return(false);
            }

            // Make sure we have some files
            if (files.Count == 0)
            {
                return(false);
            }

            try
            {
                // Write any index files that have changed
                indexUpdated = dynVarParser.WriteIndices();
            }
            catch (Exception e)
            {
                log.Add("ERROR: " + e.Message);
                return(false);
            }

            // Determine address of each file and string
            UInt32 numFiles  = (UInt32)files.Count;
            UInt32 lenHeader = 12; // "WEBF01nn"
            UInt32 lenHashes = 2 * numFiles;

            UInt32 lenFAT        = 4 * numFiles;
            UInt32 baseAddr      = lenHeader + lenHashes + lenFAT;
            UInt32 counter       = 0;
            UInt32 loopCntr      = 0;
            UInt32 numFileRecrds = 0;

            foreach (PVFSFileRecord file in files)
            {
                file.locStr  = baseAddr;
                baseAddr    += (UInt32)file.FileName.Length + 1 + 8;
                file.locData = baseAddr;
                baseAddr    += (UInt32)file.data.Length;
            }

/*            foreach (PVFSFileRecord file in files)
 *          {
 *              file.locData = baseAddr;
 *              baseAddr += (UInt32)file.data.Length;
 *          } */

            // Set up the writer
            try
            {
                PVFS2Writer w;
                w        = new PVFS2BINWriter(localPath + localFile);
                w.ImgLen = baseAddr;
                WriteImage(w);
            }
            catch (Exception e)
            {
                log.Add("\r\nERROR: " + e.Message);
                return(false);
            }

            return(true);
        }
Пример #4
0
 /// <summary>
 /// Generates the PVFS image and any necessary support files
 /// </summary>
 public abstract bool Generate(PVFSOutputFormat format);
Пример #5
0
        public override bool Generate(PVFSOutputFormat format)
        {
            // Start with nothing
            generatedImageName = null;

            // Make sure all paths exist
            if (!Directory.Exists(localPath))
            {
                log.Add("\r\nERROR: Output directory \"" + localPath + "\" does not exist!");
                return false;
            }

            // Make sure we have some files
            if(files.Count == 0)
                return false;

            // Generate based on format
            try
            {
                    return GenerateBIN(localPath + localFile);
            }
            catch (Exception e)
            {
                log.Add("\r\nERROR: " + e.Message);
                return false;
            }
        }
Пример #6
0
 /// <summary>
 /// Generates the PVFS image and any necessary support files
 /// </summary>
 public abstract bool Generate(PVFSOutputFormat format);
Пример #7
0
        /// <summary>
        /// Generates an image in the specified format
        /// </summary>
        /// <param name="format">One of the PVFSOutputFormat constants indicating the format</param>
        /// <returns>true if generation was successful, false otherwise</returns>
        public override bool Generate(PVFSOutputFormat format)
        {
            // Start with nothing as the output name
            generatedImageName = null;

            // Make sure all paths exist
            if (!Directory.Exists(localPath))
            {
                log.Add("\r\nERROR: Output directory \"" + localPath + "\" does not exist!");
                return false;
            }

            // Make sure we have some files
            if (files.Count == 0)
                return false;

            try
            {
                // Write any index files that have changed
                indexUpdated = dynVarParser.WriteIndices();
            }
            catch (Exception e)
            {
                log.Add("ERROR: " + e.Message);
                return false;
            }

            // Determine address of each file and string
            UInt32 numFiles = (UInt32)files.Count;
            UInt32 lenHeader = 12; // "WEBF01nn"
            UInt32 lenHashes = 2 * numFiles;

            UInt32 lenFAT = 4 * numFiles;
            UInt32 baseAddr = lenHeader + lenHashes + lenFAT;
            UInt32 counter=0;
            UInt32 loopCntr=0;
            UInt32 numFileRecrds = 0;

            foreach (PVFSFileRecord file in files)
            {
                file.locStr = baseAddr;
                baseAddr += (UInt32)file.FileName.Length + 1 + 8;
                file.locData = baseAddr;
                baseAddr += (UInt32)file.data.Length;
            }
            /*            foreach (PVFSFileRecord file in files)
            {
                file.locData = baseAddr;
                baseAddr += (UInt32)file.data.Length;
            } */

            // Set up the writer
            try
            {
                PVFS2Writer w;
                w = new PVFS2BINWriter(localPath + localFile);
                w.ImgLen = baseAddr;
              			    WriteImage(w);
            }
            catch (Exception e)
            {
                log.Add("\r\nERROR: " + e.Message);
                return false;
            }

            return true;
        }