void ModifyEntry(ZipFile workFile, ZipUpdate update) { workFile.WriteLocalEntryHeader(update); long dataStart = workFile.baseStream_.Position; // TODO: This is slow if the changes don't effect the data!! if ( update.Entry.IsFile && (update.Filename != null) ) { using ( Stream output = workFile.GetOutputStream(update.OutEntry) ) { using ( Stream source = this.GetInputStream(update.Entry) ) { CopyBytes(update, output, source, source.Length, true); } } } long dataEnd = workFile.baseStream_.Position; update.Entry.CompressedSize = dataEnd - dataStart; }
private void ModifyEntry(ZipFile workFile, ZipUpdate update) { workFile.WriteLocalEntryHeader(update); var position = workFile._baseStream.Position; if (update.Entry.IsFile && (update.Filename != null)) { using (var stream = workFile.GetOutputStream(update.OutEntry)) { using (var stream2 = GetInputStream(update.Entry)) { CopyBytes(update, stream, stream2, stream2.Length, true); } } } var num2 = workFile._baseStream.Position; update.Entry.CompressedSize = num2 - position; }
void AddEntry(ZipFile workFile, ZipUpdate update) { long dataStart = 0; Stream source = null; if ( update.Entry.IsFile ) { source = update.GetSource(); if ( source == null ) { source = updateDataSource_.GetSource(update.Entry, update.Filename); } } if ( source != null ) { using ( source ) { long sourceStreamLength = source.Length; if ( update.OutEntry.Size < 0 ) { update.OutEntry.Size = sourceStreamLength; } else { // Check for errant entries. if ( update.OutEntry.Size != sourceStreamLength ) { throw new ZipException("Entry size/stream size mismatch"); } } workFile.WriteLocalEntryHeader(update); dataStart = workFile.baseStream_.Position; using ( Stream output = workFile.GetOutputStream(update.OutEntry) ) { CopyBytes(update, output, source, sourceStreamLength, true); } } } else { workFile.WriteLocalEntryHeader(update); dataStart = workFile.baseStream_.Position; } long dataEnd = workFile.baseStream_.Position; update.OutEntry.CompressedSize = dataEnd - dataStart; }
private void AddEntry(ZipFile workFile, ZipUpdate update) { Stream source = null; if (update.Entry.IsFile) { source = update.GetSource(); if (source == null) { source = _updateDataSource.GetSource(update.Entry, update.Filename); } } if (source != null) { using (source) { var length = source.Length; if (update.OutEntry.Size < 0L) { update.OutEntry.Size = length; } else if (update.OutEntry.Size != length) { throw new ZipException("Entry size/stream size mismatch"); } workFile.WriteLocalEntryHeader(update); var position = workFile._baseStream.Position; using (var stream2 = workFile.GetOutputStream(update.OutEntry)) { CopyBytes(update, stream2, source, length, true); } var num3 = workFile._baseStream.Position; update.OutEntry.CompressedSize = num3 - position; if ((update.OutEntry.Flags & 8) == 8) { new ZipHelperStream(workFile._baseStream).WriteDataDescriptor(update.OutEntry); } return; } } workFile.WriteLocalEntryHeader(update); update.OutEntry.CompressedSize = 0L; }