From 19892ecfd1c8710288a095bb49b5edc2d6e49c18 Mon Sep 17 00:00:00 2001 From: David Leadbeater Date: Fri, 14 Nov 2025 12:50:01 +1100 Subject: [PATCH] Correctly read symlinks from zip files This already worked for tar files, but symlinks in .zip files were treated as regular files. --- src/extract.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/extract.go b/src/extract.go index 227022d..75eac40 100644 --- a/src/extract.go +++ b/src/extract.go @@ -8,6 +8,7 @@ import ( "errors" "fmt" "io" + "os" "strings" "github.com/c2h5oh/datasize" @@ -144,7 +145,11 @@ func ExtractZip(reader io.Reader) (*Manifest, error) { return nil, fmt.Errorf("zip: %s: %w", file.Name, err) } - manifestEntry.Type = Type_InlineFile.Enum() + if file.Mode()&os.ModeSymlink != 0 { + manifestEntry.Type = Type_Symlink.Enum() + } else { + manifestEntry.Type = Type_InlineFile.Enum() + } manifestEntry.Size = proto.Int64(int64(file.UncompressedSize64)) manifestEntry.Data = fileData } else {