X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=cmd%2Fnetstring%2Fmain.go;h=93e26aa3a7169b8d6d62833d0e0d8bc951115bfc;hb=5f0a9472b5bf641e0fcaddd86b7f1e87a44ed739;hp=306f46ebbfe0bdc879341de27df1d281ec9f3e53;hpb=b8868fafef88a7b8320d6e68a3c4c4697950d1e1;p=netstring.git diff --git a/cmd/netstring/main.go b/cmd/netstring/main.go index 306f46e..93e26aa 100644 --- a/cmd/netstring/main.go +++ b/cmd/netstring/main.go @@ -1,6 +1,6 @@ /* netstring -- netstring format serialization library -Copyright (C) 2015-2020 Sergey Matveev +Copyright (C) 2015-2023 Sergey Matveev This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,9 +32,21 @@ func usage() { 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() { flag.Usage = usage flag.Parse() @@ -43,11 +55,7 @@ func main() { } 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 @@ func main() { 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 {