Add timeout for reading from stdin

This commit is contained in:
sfigato 2020-04-30 14:04:01 +02:00
parent 4de4a4aee2
commit 16bf5ace2a
Signed by: blallo
GPG Key ID: 0CBE577C9B72DC3F

17
main.go
View File

@ -6,12 +6,13 @@ import (
"fmt"
"os"
"strings"
"time"
)
var noVersion = "dev"
var version string
func readFromConsole() string {
func readFromConsole(result chan string) {
var text, line string
var err error
counter := 0
@ -29,7 +30,8 @@ func readFromConsole() string {
Error.F("Error in reading text from console\n%s", err)
os.Exit(1)
}
return strings.TrimRight(text, "\n")
result <- strings.TrimRight(text, "\n")
return
}
func toList(input string) []string {
@ -100,7 +102,16 @@ func main() {
}
if flag.NArg() == 0 {
text = readFromConsole()
result := make(chan string, 1)
go readFromConsole(result)
select {
case text = <-result:
Info.Ln("text read from console")
case <-time.After(5 * time.Minute):
Error.Ln("timeout reading from console")
os.Exit(3)
}
} else {
for _, arg := range flag.Args() {
text += fmt.Sprintf("%s\n", arg)