From ebac3e8ec15ab2b7ce5e170742b3f2ee0f98eca3 Mon Sep 17 00:00:00 2001 From: yincong Date: Fri, 17 Jan 2025 10:13:44 +0800 Subject: [PATCH] optimize --- src/archive/tar/reader.go | 3 +++ src/archive/tar/writer.go | 3 --- src/archive/zip/reader.go | 4 ++++ src/archive/zip/writer.go | 3 --- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/archive/tar/reader.go b/src/archive/tar/reader.go index 8483fb52a2..00ce312069 100644 --- a/src/archive/tar/reader.go +++ b/src/archive/tar/reader.go @@ -380,6 +380,9 @@ func (tr *Reader) readHeader() (*Header, *block, error) { v7 := tr.blk.toV7() hdr.Typeflag = v7.typeFlag()[0] hdr.Name = p.parseString(v7.name()) + if hdr.FileInfo().IsDir() && !strings.HasSuffix(hdr.Name, "/") { + hdr.Name += "/" + } hdr.Linkname = p.parseString(v7.linkName()) hdr.Size = p.parseNumeric(v7.size()) hdr.Mode = p.parseNumeric(v7.mode()) diff --git a/src/archive/tar/writer.go b/src/archive/tar/writer.go index f966c5b4c6..059669767f 100644 --- a/src/archive/tar/writer.go +++ b/src/archive/tar/writer.go @@ -424,9 +424,6 @@ func (tw *Writer) AddFS(fsys fs.FS) error { return err } h.Name = name - if d.IsDir() { - h.Name += "/" - } if err := tw.WriteHeader(h); err != nil { return err } diff --git a/src/archive/zip/reader.go b/src/archive/zip/reader.go index 2246d56558..55946149f3 100644 --- a/src/archive/zip/reader.go +++ b/src/archive/zip/reader.go @@ -384,6 +384,10 @@ func readDirectoryHeader(f *File, r io.Reader) error { return err } f.Name = string(d[:filenameLen]) + if f.FileInfo().IsDir() && !strings.HasSuffix(f.Name, "/") { + f.Name += "/" + } + f.Extra = d[filenameLen : filenameLen+extraLen] f.Comment = string(d[filenameLen+extraLen:]) diff --git a/src/archive/zip/writer.go b/src/archive/zip/writer.go index 0a310054e3..cbe5ba2627 100644 --- a/src/archive/zip/writer.go +++ b/src/archive/zip/writer.go @@ -520,9 +520,6 @@ func (w *Writer) AddFS(fsys fs.FS) error { return err } h.Name = name - if d.IsDir() { - h.Name += "/" - } h.Method = Deflate fw, err := w.CreateHeader(h) if err != nil {