From 4e338b6d4603a830107108c0ac91aa7a21d43385 Mon Sep 17 00:00:00 2001 From: yincong Date: Thu, 16 Jan 2025 10:42:47 +0800 Subject: [PATCH] tar dir add slash --- src/archive/tar/writer.go | 3 +++ src/archive/tar/writer_test.go | 6 +++++- src/archive/zip/writer.go | 4 +++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/archive/tar/writer.go b/src/archive/tar/writer.go index 059669767f..f966c5b4c6 100644 --- a/src/archive/tar/writer.go +++ b/src/archive/tar/writer.go @@ -424,6 +424,9 @@ 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/tar/writer_test.go b/src/archive/tar/writer_test.go index 2a01915d36..7b10bf6a70 100644 --- a/src/archive/tar/writer_test.go +++ b/src/archive/tar/writer_test.go @@ -1382,7 +1382,11 @@ func TestWriterAddFS(t *testing.T) { t.Fatal(err) } - if hdr.Name != name { + tmpName := name + if entryInfo.IsDir() { + tmpName += "/" + } + if hdr.Name != tmpName { t.Errorf("test fs has filename %v; archive header has %v", name, hdr.Name) } diff --git a/src/archive/zip/writer.go b/src/archive/zip/writer.go index abb91de952..0a310054e3 100644 --- a/src/archive/zip/writer.go +++ b/src/archive/zip/writer.go @@ -520,13 +520,15 @@ 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 { return err } if d.IsDir() { - h.Name += "/" return nil } f, err := fsys.Open(name)