Anton
Anton

Reputation: 482

golang - weird characters using io.Copy to copy from bufio.Reader to STDOUT

I have an application that attaches to a docker container to get its output using the containerAttach() function provided by the docker library. That function returns a HijackedResponse struct with a pointer to a bufio.Reader.

I'm trying to stream text from the bufio.Reader to stdout and getting unexpected characters in the strings written to stdout.

The code:

_, err := io.Copy(os.Stdout, hijackedResponse.Reader)

Expected output:

Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but
will not be persisted to local or remote state storage.

Actual output:

6Refreshing Terraform state in-memory prior to plan...
=The refreshed state will be used to calculate this plan, but
9will not be persisted to local or remote state storage.

I have no idea where the first character in each of those lines has come from. Any help would be much appreciated. If needed I can provide more details around the docker container & attach options I'm using in my code although I'm assuming they're fine as I'm getting the output via the reader.

Upvotes: 1

Views: 720

Answers (1)

Anton
Anton

Reputation: 482

I found the problem - my containerConfig needed to specify Tty: true

Upvotes: 2

Related Questions