Merge "Have soong_zip add entries for ancestor directories"
This commit is contained in:
@@ -646,15 +646,24 @@ func (z *zipWriter) compressWholeFile(ze *zipEntry, r *os.File, exec Execution,
|
||||
}
|
||||
|
||||
func (z *zipWriter) writeDirectory(dir string) error {
|
||||
if dir != "" && !strings.HasSuffix(dir, "/") {
|
||||
dir = dir + "/"
|
||||
// clean the input
|
||||
cleanDir := filepath.Clean(dir)
|
||||
|
||||
// discover any uncreated directories in the path
|
||||
zipDirs := []string{}
|
||||
for cleanDir != "" && cleanDir != "." && !z.createdDirs[cleanDir] {
|
||||
|
||||
z.createdDirs[cleanDir] = true
|
||||
// parent directories precede their children
|
||||
zipDirs = append([]string{cleanDir}, zipDirs...)
|
||||
|
||||
cleanDir = filepath.Dir(cleanDir)
|
||||
}
|
||||
|
||||
for dir != "" && dir != "./" && !z.createdDirs[dir] {
|
||||
z.createdDirs[dir] = true
|
||||
|
||||
// make a directory entry for each uncreated directory
|
||||
for _, cleanDir := range zipDirs {
|
||||
dirHeader := &zip.FileHeader{
|
||||
Name: dir,
|
||||
Name: cleanDir + "/",
|
||||
}
|
||||
dirHeader.SetMode(0700 | os.ModeDir)
|
||||
dirHeader.SetModTime(z.time)
|
||||
@@ -665,8 +674,6 @@ func (z *zipWriter) writeDirectory(dir string) error {
|
||||
}
|
||||
close(ze)
|
||||
z.writeOps <- ze
|
||||
|
||||
dir, _ = filepath.Split(dir)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
Reference in New Issue
Block a user