package main import ( "compress/zlib" "fmt" "io" "os" ) func main() { if err := Main(os.Stdin, os.Stdout); err != nil { fmt.Fprintf(os.Stderr, "%s: error: %v\n", os.Args[0], err) os.Exit(1) } } func Main(zin io.Reader, out io.Writer) (err error) { maybeSetErr := func(_err error) { if err == nil && _err != nil { err = _err } } in, err := zlib.NewReader(zin) if err != nil { return err } defer func() { maybeSetErr(in.Close()) }() if _, err := io.Copy(out, in); err != nil { return err } return nil }