Initial DDC release

This commit is contained in:
SirBlob committed 2026-10-25 20:24:50 -04:00
commit 434f6441da
57 files changed
+4606

No files matched your search

+44
View File
@@ -0,0 +1,44 @@
package extract
import "archive/zip"
func extractZip(archivePath string, writer *entryWriter) error {
reader, err := zip.OpenReader(archivePath)
if err != nil {
return err
}
defer reader.Close()
var declaredBytes uint64
for _, file := range reader.File {
declaredBytes += file.UncompressedSize64
}
if declaredBytes > uint64(writer.limits.MaxBytes) {
return ErrTooLarge
}
writer.progress.SetTotal(int64(declaredBytes))
for _, file := range reader.File {
if err := extractZipEntry(file, writer); err != nil {
return err
}
}
return nil
}
func extractZipEntry(file *zip.File, writer *entryWriter) error {
mode := file.Mode()
switch {
case mode.IsDir():
return writer.writeDirectory(file.Name)
case mode.IsRegular():
content, err := file.Open()
if err != nil {
return err
}
defer content.Close()
return writer.writeFile(file.Name, content)
default:
return nil
}
}