private static RarOptions FixOptions(RarOptions options) { //make sure we're closing streams with fileinfo if (options.HasFlag(RarOptions.KeepStreamsOpen)) { options = (RarOptions)FlagUtilities.SetFlag(options, RarOptions.KeepStreamsOpen, false); } return(options); }
private static RarOptions FixOptions(RarOptions options) { //make sure we're closing streams with fileinfo if (options.HasFlag(RarOptions.KeepStreamsOpen)) { options = (RarOptions)FlagUtilities.SetFlag(options, RarOptions.KeepStreamsOpen, false); } return options; }
public void Dispose() { if (entriesForCurrentReadStream != null) { entriesForCurrentReadStream.Dispose(); } if (Volume.Stream != null && !options.HasFlag(RarOptions.KeepStreamsOpen)) { Volume.Stream.Dispose(); } }
internal IEnumerable <RarFilePart> GetVolumeFileParts() { MarkHeader previousMarkHeader = null; foreach (RarHeader header in headerFactory.ReadHeaders(GetStream())) { switch (header.HeaderType) { case HeaderType.ArchiveHeader: { ArchiveHeader = header as ArchiveHeader; } break; case HeaderType.MarkHeader: { previousMarkHeader = header as MarkHeader; } break; case HeaderType.FileHeader: { FileHeader fh = header as FileHeader; if (!fh.FileFlags.HasFlag(FileFlags.DIRECTORY)) { RarFilePart fp = CreateFilePart(fh, previousMarkHeader); yield return(fp); } else if (options.HasFlag(RarOptions.GiveDirectoryEntries)) { RarFilePart fp = CreateFilePart(fh, previousMarkHeader); yield return(fp); } } break; } } }
internal StreamRarArchiveVolume(Stream stream, RarOptions options) : base(StreamingMode.Seekable, options) { Stream = stream; this.streamOwner = !options.HasFlag(RarOptions.KeepStreamsOpen); }
internal RarReaderVolume(Stream stream, RarOptions options) : base(StreamingMode.Streaming, options) { Stream = stream; this.streamOwner = !options.HasFlag(RarOptions.KeepStreamsOpen); }