go-cat2 refactoring
This commit is contained in:
parent
d4ce506f26
commit
22c69aaf27
@ -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)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user