Skip to content

Commit 0ebc591

Browse files
optimize
1 parent c5d79ca commit 0ebc591

File tree

5 files changed

+6
-9
lines changed

5 files changed

+6
-9
lines changed

src/archive/tar/reader.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -380,9 +380,6 @@ func (tr *Reader) readHeader() (*Header, *block, error) {
380380
v7 := tr.blk.toV7()
381381
hdr.Typeflag = v7.typeFlag()[0]
382382
hdr.Name = p.parseString(v7.name())
383-
if hdr.FileInfo().IsDir() && !strings.HasSuffix(hdr.Name, "/") {
384-
hdr.Name += "/"
385-
}
386383
hdr.Linkname = p.parseString(v7.linkName())
387384
hdr.Size = p.parseNumeric(v7.size())
388385
hdr.Mode = p.parseNumeric(v7.mode())

src/archive/tar/writer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ func (tw *Writer) AddFS(fsys fs.FS) error {
423423
if err != nil {
424424
return err
425425
}
426-
h.Name = name
426+
h.Name = strings.TrimSuffix(name, info.Name()) + h.Name
427427
if err := tw.WriteHeader(h); err != nil {
428428
return err
429429
}

src/archive/zip/reader.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -384,10 +384,6 @@ func readDirectoryHeader(f *File, r io.Reader) error {
384384
return err
385385
}
386386
f.Name = string(d[:filenameLen])
387-
if f.FileInfo().IsDir() && !strings.HasSuffix(f.Name, "/") {
388-
f.Name += "/"
389-
}
390-
391387
f.Extra = d[filenameLen : filenameLen+extraLen]
392388
f.Comment = string(d[filenameLen+extraLen:])
393389

src/archive/zip/struct.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ func (fi headerFileInfo) String() string {
201201
// of the returned header to provide the full path name of the file.
202202
// If compression is desired, callers should set the FileHeader.Method
203203
// field; it is unset by default.
204+
// If fi describes a directory, a slash is appended to the name.
204205
func FileInfoHeader(fi fs.FileInfo) (*FileHeader, error) {
205206
size := fi.Size()
206207
fh := &FileHeader{
@@ -214,6 +215,9 @@ func FileInfoHeader(fi fs.FileInfo) (*FileHeader, error) {
214215
} else {
215216
fh.UncompressedSize = uint32(fh.UncompressedSize64)
216217
}
218+
if fi.IsDir() {
219+
fh.Name = fh.Name + "/"
220+
}
217221
return fh, nil
218222
}
219223

src/archive/zip/writer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ func (w *Writer) AddFS(fsys fs.FS) error {
519519
if err != nil {
520520
return err
521521
}
522-
h.Name = name
522+
h.Name = strings.TrimSuffix(name, info.Name()) + h.Name
523523
h.Method = Deflate
524524
fw, err := w.CreateHeader(h)
525525
if err != nil {

0 commit comments

Comments
 (0)