Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc48afd3 authored by Jiyong Park's avatar Jiyong Park
Browse files

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
parent 073ea55f
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -53,6 +53,16 @@ func writeFile(filename string, in io.Reader, perm os.FileMode) error {
	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() {
	flag.Usage = func() {
		fmt.Fprintln(os.Stderr, "usage: zipsync -d <output dir> [-l <output file>] [-f <pattern>] [zip]...")
@@ -122,7 +132,11 @@ func main() {
				if err != nil {
					log.Fatal(err)
				}
				if f.FileInfo().Mode()&os.ModeSymlink != 0 {
					must(writeSymlink(filename, in))
				} else {
					must(writeFile(filename, in, f.FileInfo().Mode()))
				}
				in.Close()
				files = append(files, filename)
			}