cmd/netstring/main.go | 24 ++++++++++++++---------- diff --git a/cmd/netstring/main.go b/cmd/netstring/main.go index 33f35d4e0863d8db2ad0dbd0d83348b19202d5d1a29f1da0ded248bdd8434aa3..e01f3a1a1f36df386f7510a6fc2c9f2c8aeb41451aac1f304437cc0b2e353be4 100644 --- a/cmd/netstring/main.go +++ b/cmd/netstring/main.go @@ -32,7 +32,19 @@ fmt.Fprintf(os.Stderr, "ns -- Work with netstring encoded files\n\n") fmt.Fprintf(os.Stderr, "Usage: %s list FILE\n", os.Args[0]) fmt.Fprintf(os.Stderr, " %s read FILE CHUNK > data\n", os.Args[0]) fmt.Fprintf(os.Stderr, " %s write FILE ... > data\n", os.Args[0]) + fmt.Fprintf(os.Stderr, "FILE can be \"-\" for reading from stdin\n") os.Exit(1) +} + +func fileRead(path string) io.Reader { + if path == "-" { + return os.Stdin + } + fd, err := os.Open(path) + if err != nil { + panic(err) + } + return fd } func main() { @@ -43,11 +55,7 @@ usage() } switch os.Args[1] { case "list": - fd, err := os.Open(os.Args[2]) - if err != nil { - panic(err) - } - r := netstring.NewReader(fd) + r := netstring.NewReader(fileRead(os.Args[2])) for i := 0; ; i++ { size, err := r.Next() if err == io.EOF { @@ -67,11 +75,7 @@ chunk, err := strconv.Atoi(os.Args[3]) if err != nil { panic(err) } - fd, err := os.Open(os.Args[2]) - if err != nil { - panic(err) - } - r := netstring.NewReader(fd) + r := netstring.NewReader(fileRead(os.Args[2])) for i := 0; i < chunk; i++ { _, err = r.Next() if err != nil {