zipsync handles symlink
This change fixes a bug that zipsync didn't handle symlink correctly; symlink was extracted as a regular file whose content is the target path. Fixing the problem by correctly creating the symlink using os.Symlink. Bug: N/A Test: manual Change-Id: Ib6685c14e1950d1057d89672883cdd9e4879069a
This commit is contained in:
@@ -53,6 +53,16 @@ func writeFile(filename string, in io.Reader, perm os.FileMode) error {
|
|||||||
return out.Close()
|
return out.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func writeSymlink(filename string, in io.Reader) error {
|
||||||
|
b, err := ioutil.ReadAll(in)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
dest := string(b)
|
||||||
|
err = os.Symlink(dest, filename)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
flag.Usage = func() {
|
flag.Usage = func() {
|
||||||
fmt.Fprintln(os.Stderr, "usage: zipsync -d <output dir> [-l <output file>] [-f <pattern>] [zip]...")
|
fmt.Fprintln(os.Stderr, "usage: zipsync -d <output dir> [-l <output file>] [-f <pattern>] [zip]...")
|
||||||
@@ -122,7 +132,11 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
must(writeFile(filename, in, f.FileInfo().Mode()))
|
if f.FileInfo().Mode()&os.ModeSymlink != 0 {
|
||||||
|
must(writeSymlink(filename, in))
|
||||||
|
} else {
|
||||||
|
must(writeFile(filename, in, f.FileInfo().Mode()))
|
||||||
|
}
|
||||||
in.Close()
|
in.Close()
|
||||||
files = append(files, filename)
|
files = append(files, filename)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user