ICSharpCode.SharpZipLib.Zip.FastZip.ExtractEntry C# (CSharp) Method

ExtractEntry() private method

private ExtractEntry ( ZipEntry entry ) : void
entry ZipEntry
return void
        void ExtractEntry(ZipEntry entry)
        {
            bool doExtraction = entry.IsCompressionMethodSupported();
            string targetName = entry.Name;

            if (doExtraction) {
                if (entry.IsFile) {
                    targetName = extractNameTransform_.TransformFile(targetName);
                } else if (entry.IsDirectory) {
                    targetName = extractNameTransform_.TransformDirectory(targetName);
                }

                doExtraction = !(string.IsNullOrEmpty(targetName));
            }

            // TODO: Fire delegate/throw exception were compression method not supported, or name is invalid?

            string dirName = null;

            if (doExtraction) {
                if (entry.IsDirectory) {
                    dirName = targetName;
                } else {
                    dirName = Path.GetDirectoryName(Path.GetFullPath(targetName));
                }
            }

            if (doExtraction && !Directory.Exists(dirName)) {
                if (!entry.IsDirectory || CreateEmptyDirectories) {
                    try {
                        Directory.CreateDirectory(dirName);
                    } catch (Exception ex) {
                        doExtraction = false;
                        if (events_ != null) {
                            if (entry.IsDirectory) {
                                continueRunning_ = events_.OnDirectoryFailure(targetName, ex);
                            } else {
                                continueRunning_ = events_.OnFileFailure(targetName, ex);
                            }
                        } else {
                            continueRunning_ = false;
                            throw;
                        }
                    }
                }
            }

            if (doExtraction && entry.IsFile) {
                ExtractFileEntry(entry, targetName);
            }
        }