go-cat2 refactoring

This commit is contained in:
Meutel 2017-07-07 17:59:01 +02:00
parent d4ce506f26
commit 22c69aaf27

View File

@ -1,54 +1,25 @@
package main package main
import "fmt"
import "io" import "io"
import "log" import "log"
import "os" import "os"
import "strings"
var err error
var reader io.Reader var reader io.Reader
const BUFSIZE = 32 * 1024
func openFile(path *string) *os.File {
f, err := os.Open(os.Args[1])
if err != nil {
log.Fatalln(err)
}
return f
}
func readMe(r io.Reader) {
var n int
buf := make([]byte, BUFSIZE)
for {
n, err = r.Read(buf)
if n == 0 || err == io.EOF {
break
}
if err != nil {
log.Fatalln("Read error", err)
}
fmt.Printf("%s", buf[:n])
}
}
func main() { func main() {
if len(os.Args) <= 1 { if len(os.Args) <= 1 {
var content string reader = os.Stdin
if _, err := fmt.Scanln(&content); err != nil {
log.Fatalln(err)
}
reader = strings.NewReader(content)
} else { } else {
readers := []io.Reader{} readers := []io.Reader{}
for _, fname := range os.Args[1:] { for _, fname := range os.Args[1:] {
f := openFile(&fname) if f, err := os.Open(fname); err != nil {
defer f.Close() log.Fatalln(err)
readers = append(readers, f) } else {
defer f.Close()
readers = append(readers, f)
}
} }
reader = io.MultiReader(readers...) reader = io.MultiReader(readers...)
} }
readMe(reader) io.Copy(os.Stdout, reader)
} }