in container/go/cmd/zipper/zipper.go [34:89]
func main() {
flag.Parse()
if *src == "" {
log.Fatalln("Required option -src was not specified.")
}
if *dst == "" {
log.Fatalln("Required option -dst was not specified.")
}
var copy_from io.Reader
var copy_to io.Writer
f, err := os.Open(*src)
if err != nil {
log.Fatalf("Unable to read input file: %v", err)
}
t, err := os.Create(*dst)
if err != nil {
log.Fatalf("Unable to create output file: %v", err)
}
if *decompress {
zr, err := gzip.NewReader(f)
if err != nil {
log.Fatalf("Unable to read: %v", err)
}
defer func() {
if err := zr.Close(); err != nil {
log.Fatalf("Unable to close gzip reader: %v", err)
}
}()
copy_from = zr
copy_to = t
} else {
level := gzip.DefaultCompression
if *fast {
level = gzip.BestSpeed
}
zw, err := gzip.NewWriterLevel(t, level)
if err != nil {
log.Fatalf("Unable to create gzip writer: %v", err)
}
defer func() {
if err := zw.Close(); err != nil {
log.Fatalf("Unable to close gzip writer: %v", err)
}
}()
copy_from = f
copy_to = zw
}
if _, err := io.Copy(copy_to, copy_from); err != nil {
log.Fatalf("Unable to perform the gzip operation from %q to %q: %v", *src, *dst, err)
}
}