]> Cypherpunks repositories - gostls13.git/commitdiff
archive/zip, archive/tar: writer appends slash to directory names
authoryincong <yincong@baidu.com>
Wed, 22 Jan 2025 02:23:08 +0000 (02:23 +0000)
committerGopher Robot <gobot@golang.org>
Tue, 28 Jan 2025 04:20:09 +0000 (20:20 -0800)
Fixes #71235

Change-Id: I62aebb9d421db0e4b57ad5cae25c70f47aa5f8f9
GitHub-Last-Rev: 6e0fba07dd128e20e32a3a6258edf80ee91d4690
GitHub-Pull-Request: golang/go#71239
Reviewed-on: https://go-review.googlesource.com/c/go/+/642375
Reviewed-by: Jonathan Amsterdam <jba@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Commit-Queue: Ian Lance Taylor <iant@google.com>

src/archive/tar/writer.go
src/archive/tar/writer_test.go
src/archive/zip/writer.go
src/archive/zip/writer_test.go

index 059669767f2b9db811c31ebca3293218a77687c1..f966c5b4c648f5268e0a3fc528a797a8b90cfb5d 100644 (file)
@@ -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
                }
index 2a01915d368c5a8a3cf65f263bcb23edd70a629f..7b10bf6a700d7f0340506476bd98e3ba2289f9fa 100644 (file)
@@ -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)
                }
index cbe5ba262747f64bae152907a0678c1ea6105486..0a310054e37678cd521bbb9b09f23a3eca58fd19 100644 (file)
@@ -520,6 +520,9 @@ 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 {
index 27a99b6b3a13b9c65bff71a1e3c951e9fdeb0930..44592ce8318826e0a912304d9ac0d2bb2b2f113d 100644 (file)
@@ -633,7 +633,7 @@ func TestWriterAddFS(t *testing.T) {
                t.Fatal(err)
        }
 
-       // Add subfolder into fsys to match what we'll read from the tar.
+       // Add subfolder into fsys to match what we'll read from the zip.
        tests = append(tests[:2:2], WriteTest{Name: "subfolder", Mode: 0o555 | os.ModeDir}, tests[2])
 
        // read it back
@@ -642,6 +642,9 @@ func TestWriterAddFS(t *testing.T) {
                t.Fatal(err)
        }
        for i, wt := range tests {
+               if wt.Mode.IsDir() {
+                       wt.Name += "/"
+               }
                testReadFile(t, r.File[i], &wt)
        }
 }