Example #1
0
        private void opencatalogToolStripButton_Click(object sender, EventArgs e)
        {
            if (ofdCatalog.ShowDialog() == DialogResult.Cancel)
            {
                return;
            }

            // Read the catalog from the file
            tsStatus.Text = "Reading catalog...";
            mFileName     = CCatalogNode.ReadBackupFilename(ofdCatalog.FileName);
            if (mFile != null)
            {
                mFile.Close();
            }
            mFile = new CBackupReader(mFileName);
            CCatalogNode node = CCatalogNode.ReadCatalog(ofdCatalog.FileName);

            // Populate tree view
            tvDirs.Nodes.Clear();
            tvDirs.Nodes.Add("root", node.Name, 0);
            tvDirs.Nodes[0].Tag = node;
            PopulateTreeView(tvDirs.Nodes[0], node);
            tsStatus.Text = "Select a single volume, folder or file to extract.";

            // UI cues
            extractToolStripButton.Enabled     = false;
            cancelToolStripButton.Enabled      = false;
            savecatalogToolStripButton.Enabled = true;
        }
        public bool ExtractTo(CBackupReader backupFile, string targetPath)
        {
            // Ensure that the target path has a trailing '\'
            if (targetPath[targetPath.Length - 1] != '\\')
            {
                targetPath += '\\';
            }

            if ((mType == ENodeType.Root) || (mType == ENodeType.Set))
            {
                throw new System.Exception("Tape and set nodes can not be extracted. Only volume, folder or file nodes can be extracted.");
            }

            if (mType == ENodeType.Volume)
            {
                var dirinfo = System.IO.Directory.CreateDirectory(targetPath);
                foreach (var node in mNodes)
                {
                    node.ExtractTo(backupFile, dirinfo.FullName);
                }
            }
            else if (mType == ENodeType.Folder)
            {
                var dirinfo = System.IO.Directory.CreateDirectory(targetPath + mName);
                foreach (var node in mNodes)
                {
                    node.ExtractTo(backupFile, dirinfo.FullName);
                }
            }
            else if (mType == ENodeType.File)
            {
                // Create the target directory if it does not exist
                System.IO.Directory.CreateDirectory(targetPath);
                backupFile.Stream.BaseStream.Seek(mOffset, System.IO.SeekOrigin.Begin);
                var file = new System.IO.FileStream(targetPath + mName, System.IO.FileMode.Create);
                var fileDescriptorBlock = (CFileDescriptorBlock)backupFile.Stream.ReadDBLK();
                foreach (var data in fileDescriptorBlock.Streams)
                {
                    if (data.Header.StreamID == "STAN")
                    {
                        file.Write(data.Data, 0, data.Data.Length);
                    }
                }
                file.Close();
            }

            return(true);
        }
Example #3
0
        private void openToolStripButton_Click(object sender, EventArgs e)
        {
            if (ofdBackup.ShowDialog() == DialogResult.OK)
            {
                // Open the backup file
                mFileName     = ofdBackup.FileName;
                tsStatus.Text = "Reading " + mFileName;

                // UI cues
                openToolStripButton.Enabled        = false;
                extractToolStripButton.Enabled     = false;
                cancelToolStripButton.Enabled      = true;
                opencatalogToolStripButton.Enabled = false;
                savecatalogToolStripButton.Enabled = false;

                // Open and read the catalog
                if (mFile != null)
                {
                    mFile.Close();
                }
                mFile = new CBackupReader(mFileName);
                mFile.OnProgressChange += new CBackupReader.ProgressChange(mFile_OnProgressChange);
                CCatalogNode node = mFile.ReadCatalog();

                // Populate tree view
                tvDirs.Nodes.Clear();
                tvDirs.Nodes.Add("root", node.Name, 0);
                tvDirs.Nodes[0].Tag = node;
                PopulateTreeView(tvDirs.Nodes[0], node);
                tsStatus.Text = "Select a single volume, folder or file to extract.";

                // UI cues
                openToolStripButton.Enabled        = true;
                extractToolStripButton.Enabled     = false;
                cancelToolStripButton.Enabled      = false;
                savecatalogToolStripButton.Enabled = true;
                opencatalogToolStripButton.Enabled = true;
                savecatalogToolStripButton.Enabled = true;
            }
        }
Example #4
0
        private void opencatalogToolStripButton_Click(object sender, EventArgs e)
        {
            if (ofdCatalog.ShowDialog() == DialogResult.Cancel) return;

            // Read the catalog from the file
            tsStatus.Text = "Reading catalog...";
            mFileName = CCatalogNode.ReadBackupFilename(ofdCatalog.FileName);
            if (mFile != null) mFile.Close();
            mFile = new CBackupReader(mFileName);
            CCatalogNode node = CCatalogNode.ReadCatalog(ofdCatalog.FileName);

            // Populate tree view
            tvDirs.Nodes.Clear();
            tvDirs.Nodes.Add("root", node.Name, 0);
            tvDirs.Nodes[0].Tag = node;
            PopulateTreeView(tvDirs.Nodes[0], node);
            tsStatus.Text = "Select a single volume, folder or file to extract.";

            // UI cues
            extractToolStripButton.Enabled = false;
            cancelToolStripButton.Enabled = false;
            savecatalogToolStripButton.Enabled = true;
        }
Example #5
0
        private void openToolStripButton_Click(object sender, EventArgs e)
        {
            if (ofdBackup.ShowDialog() == DialogResult.OK)
            {
                // Open the backup file
                mFileName = ofdBackup.FileName;
                tsStatus.Text = "Reading " + mFileName;

                // UI cues
                openToolStripButton.Enabled = false;
                extractToolStripButton.Enabled = false;
                cancelToolStripButton.Enabled = true;
                opencatalogToolStripButton.Enabled = false;
                savecatalogToolStripButton.Enabled = false;

                // Open and read the catalog
                if (mFile != null) mFile.Close();
                mFile = new CBackupReader(mFileName);
                mFile.OnProgressChange += new CBackupReader.ProgressChange(mFile_OnProgressChange);
                CCatalogNode node = mFile.ReadCatalog();

                // Populate tree view
                tvDirs.Nodes.Clear();
                tvDirs.Nodes.Add("root", node.Name, 0);
                tvDirs.Nodes[0].Tag = node;
                PopulateTreeView(tvDirs.Nodes[0], node);
                tsStatus.Text = "Select a single volume, folder or file to extract.";

                // UI cues
                openToolStripButton.Enabled = true;
                extractToolStripButton.Enabled = false;
                cancelToolStripButton.Enabled = false;
                savecatalogToolStripButton.Enabled = true;
                opencatalogToolStripButton.Enabled = true;
                savecatalogToolStripButton.Enabled = true;
            }
        }