Skip to content

Commit

Permalink
contrib: recvtty: add --no-stdin flag
Browse files Browse the repository at this point in the history
This is mostly just useful for testing with the "single" mode, since it
allows you to run recvtty in the background without the console being
closed.

Signed-off-by: Aleksa Sarai <[email protected]>
  • Loading branch information
cyphar committed May 13, 2020
1 parent df3d7f6 commit a79fa7c
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions contrib/cmd/recvtty/recvtty.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ func bail(err error) {
os.Exit(1)
}

func handleSingle(path string) error {
func handleSingle(path string, noStdin bool) error {
// Open a socket.
ln, err := net.Listen("unix", path)
if err != nil {
Expand Down Expand Up @@ -113,10 +113,12 @@ func handleSingle(path string) error {
io.Copy(os.Stdout, c)
quitChan <- struct{}{}
}()
go func() {
io.Copy(c, os.Stdin)
quitChan <- struct{}{}
}()
if !noStdin {
go func() {
io.Copy(c, os.Stdin)
quitChan <- struct{}{}
}()
}

// Only close the master fd once we've stopped copying.
<-quitChan
Expand Down Expand Up @@ -201,6 +203,10 @@ func main() {
Value: "",
Usage: "Path to write daemon process ID to",
},
cli.BoolFlag{
Name: "no-stdin",
Usage: "Disable stdin handling (no-op for null mode)",
},
}

app.Action = func(ctx *cli.Context) error {
Expand All @@ -218,9 +224,10 @@ func main() {
}
}

noStdin := ctx.Bool("no-stdin")
switch ctx.String("mode") {
case "single":
if err := handleSingle(path); err != nil {
if err := handleSingle(path, noStdin); err != nil {
return err
}
case "null":
Expand Down

0 comments on commit a79fa7c

Please sign in to comment.