mirror of
https://github.com/golang/go
synced 2024-11-12 05:50:21 -07:00
archive/zip: remove WriterOptions and replace with SetOffset method
Change-Id: I0a8b972c33e80c750ff1d63717177a5a3294a112 Reviewed-on: https://go-review.googlesource.com/7445 Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Geert-Johan Riemer <gjr19912@gmail.com> Reviewed-by: Andrew Gerrand <adg@golang.org>
This commit is contained in:
parent
8a6eca43df
commit
1f35bb6466
@ -29,29 +29,20 @@ type header struct {
|
||||
offset uint64
|
||||
}
|
||||
|
||||
// WriterOptions contains configuration options for a zip.Writer.
|
||||
type WriterOptions struct {
|
||||
// Offset modifies the initial zip offset.
|
||||
// This is useful when the zip is appended to other data such as a binary executable.
|
||||
Offset int64
|
||||
}
|
||||
|
||||
// NewWriter returns a new Writer writing a zip file to w.
|
||||
func NewWriter(w io.Writer) *Writer {
|
||||
return NewWriterWithOptions(w, nil)
|
||||
return &Writer{cw: &countWriter{w: bufio.NewWriter(w)}}
|
||||
}
|
||||
|
||||
// NewWriterWithOptions returns a new Writer writing a zip file to w and uses the given options.
|
||||
func NewWriterWithOptions(w io.Writer, options *WriterOptions) *Writer {
|
||||
writer := &Writer{
|
||||
cw: &countWriter{
|
||||
w: bufio.NewWriter(w),
|
||||
},
|
||||
// SetOffset sets the offset of the beginning of the zip data within the
|
||||
// underlying writer. It should be used when the zip data is appended to an
|
||||
// existing file, such as a binary executable.
|
||||
// It must be called before any data is written.
|
||||
func (w *Writer) SetOffset(n int64) {
|
||||
if w.cw.count != 0 {
|
||||
panic("zip: SetOffset called after data was written")
|
||||
}
|
||||
if options != nil {
|
||||
writer.cw.count = options.Offset
|
||||
}
|
||||
return writer
|
||||
w.cw.count = n
|
||||
}
|
||||
|
||||
// Flush flushes any buffered data to the underlying writer.
|
||||
|
@ -87,7 +87,7 @@ func TestWriter(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestWriterOffsetOption(t *testing.T) {
|
||||
func TestWriterOffset(t *testing.T) {
|
||||
largeData := make([]byte, 1<<17)
|
||||
for i := range largeData {
|
||||
largeData[i] = byte(rand.Int())
|
||||
@ -101,7 +101,8 @@ func TestWriterOffsetOption(t *testing.T) {
|
||||
buf := new(bytes.Buffer)
|
||||
existingData := []byte{1, 2, 3, 1, 2, 3, 1, 2, 3}
|
||||
n, _ := buf.Write(existingData)
|
||||
w := NewWriterWithOptions(buf, &WriterOptions{Offset: int64(n)})
|
||||
w := NewWriter(buf)
|
||||
w.SetOffset(int64(n))
|
||||
|
||||
for _, wt := range writeTests {
|
||||
testCreate(t, w, &wt)
|
||||
|
Loading…
Reference in New Issue
Block a user