Skip to content

Commit 2d40379

Browse files
authored
Disable output buffering for STDIN -> STDOUT (#24)
1 parent d803790 commit 2d40379

File tree

1 file changed

+44
-38
lines changed

1 file changed

+44
-38
lines changed

cmd/catp/catp/app.go

Lines changed: 44 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -550,6 +550,39 @@ func Main(options ...func(o *Options)) error { //nolint:funlen,cyclop,gocognit,g
550550
}
551551
}
552552

553+
var files []string
554+
555+
args := flag.Args()
556+
isStdin := false
557+
558+
if len(args) == 1 && args[0] == "-" {
559+
files = append(files, "-") // STDIN
560+
isStdin = true
561+
} else {
562+
for _, f := range args {
563+
glob, err := filepath.Glob(f)
564+
if err != nil {
565+
return err
566+
}
567+
568+
for _, f := range glob {
569+
alreadyThere := false
570+
571+
for _, e := range files {
572+
if e == f {
573+
alreadyThere = true
574+
575+
break
576+
}
577+
}
578+
579+
if !alreadyThere {
580+
files = append(files, f)
581+
}
582+
}
583+
}
584+
}
585+
553586
if *output != "" && r.outDir == "" { //nolint:nestif
554587
fn := *output
555588

@@ -595,14 +628,18 @@ func Main(options ...func(o *Options)) error { //nolint:funlen,cyclop,gocognit,g
595628
}
596629
}()
597630
} else {
598-
w := bufio.NewWriterSize(os.Stdout, 64*1024)
599-
r.output = w
631+
if isStdin {
632+
r.output = os.Stdout
633+
} else {
634+
w := bufio.NewWriterSize(os.Stdout, 64*1024)
635+
r.output = w
600636

601-
defer func() {
602-
if err := w.Flush(); err != nil {
603-
log.Fatalf("failed to flush STDOUT buffer: %s", err)
604-
}
605-
}()
637+
defer func() {
638+
if err := w.Flush(); err != nil {
639+
log.Fatalf("failed to flush STDOUT buffer: %s", err)
640+
}
641+
}()
642+
}
606643
}
607644

608645
if len(pass) > 0 {
@@ -643,37 +680,6 @@ func Main(options ...func(o *Options)) error { //nolint:funlen,cyclop,gocognit,g
643680
},
644681
}
645682

646-
var files []string
647-
648-
args := flag.Args()
649-
650-
if len(args) == 1 && args[0] == "-" {
651-
files = append(files, "-") // STDIN
652-
} else {
653-
for _, f := range args {
654-
glob, err := filepath.Glob(f)
655-
if err != nil {
656-
return err
657-
}
658-
659-
for _, f := range glob {
660-
alreadyThere := false
661-
662-
for _, e := range files {
663-
if e == f {
664-
alreadyThere = true
665-
666-
break
667-
}
668-
}
669-
670-
if !alreadyThere {
671-
files = append(files, f)
672-
}
673-
}
674-
}
675-
}
676-
677683
for _, fn := range files {
678684
if fn == "-" {
679685
r.totalBytes = -1

0 commit comments

Comments
 (0)