package main import ( "flag" "fmt" "io" "os" . "github.com/tendermint/tendermint/common" ) const Version = "0.0.1" const readBufferSize = 1024 // Parse command-line options func parseFlags() (outpath string, version bool) { flag.StringVar(&outpath, "outpath", "stdinwriter.out", "Output file name") flag.BoolVar(&version, "version", false, "Version") flag.Parse() return } func main() { // Read options outpath, version := parseFlags() if version { fmt.Println(Fmt("stdinwriter version %v", Version)) return } outfile, err := OpenAutoFile(outpath) if err != nil { fmt.Println(Fmt("stdinwriter couldn't create outfile %v", outfile)) os.Exit(1) } go writeToOutfile(outfile) // Trap signal TrapSignal(func() { outfile.Close() fmt.Println("stdinwriter shutting down") }) } func writeToOutfile(outfile *AutoFile) { // Forever, read from stdin and write to AutoFile. buf := make([]byte, readBufferSize) for { n, err := os.Stdin.Read(buf) outfile.Write(buf[:n]) if err != nil { outfile.Close() if err == io.EOF { os.Exit(0) } else { fmt.Println("stdinwriter errored") os.Exit(1) } } } }