# [GUILT] [PATCH] get rid of "cat: write error: Broken pipe" error message

3 messages from 2012-03-13 to 2012-03-13. Participants: Per Cederqvist, Jeff Sipek.
Thread: https://gitlist.dev/t/29939

## Per Cederqvist, 2012-03-13 13:39

Subject: [GUILT] [PATCH] get rid of "cat: write error: Broken pipe" error message
Message-ID: <4F5F4E20.6000706@opera.com>
URL: https://gitlist.dev/e/4F5F4E20.6000706%40opera.com

```
In some circumstances (like running guilt in a M-x shell buffer in
Emacs) cat may give the above error message when the reader of the
output from cat exits without reading all input from cat.  (In other
circumstances cat is just silently terminated with SIGPIPE.)

Get rid of the error by removing the useless use of cat in
do_get_header and do_get_full_header.

Signed-off-by: Per Cederqvist <cederp@opera.com>
---
  guilt |    8 ++++----
  1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/guilt b/guilt
index d1e17d4..7f6806e 100755
--- a/guilt
+++ b/guilt
@@ -359,7 +359,7 @@ do_get_header()
  	# 4th line skips any empty lines thereafter.
  	# 5th line turns off empty line skip upon seeing a non-empty line.
  	# 6th line terminates execution when we encounter the diff
-	cat "$1" | awk '
+	awk '
  BEGIN{body=0; subj=0}
  /^Subject:/ && (body == 0 && subj == 0){subj=1; print substr($0, 10) 
"\n"; next}
  /^(Subject:|From:|Author:|Date:|commit)/ && (body == 0){next}
@@ -369,7 +369,7 @@ BEGIN{body=0; subj=0}
  /^(diff |---$|--- )/{exit}
  {print $0}
  END{}
-'
+' < "$1"
  }

  # usage: do_get_full_header patchfile
@@ -377,12 +377,12 @@ do_get_full_header()
  {
  	# 2nd line checks for the begining of a patch
  	# 3rd line outputs the line if it didn't get pruned by the above rules
-	cat "$1" | awk '
+	awk '
  BEGIN{}
  /^(diff |---$|--- )/{exit}
  {print $0}
  END{}
-'
+' < "$1"
  }

  # usage: assert_head_check
-- 
1.7.9

```

## Jeff Sipek, 2012-03-13 13:41

Subject: Re: [GUILT] [PATCH] get rid of "cat: write error: Broken pipe" error message
Message-ID: <20120313134146.GA1807@poseidon.cudanet.local>
URL: https://gitlist.dev/e/20120313134146.GA1807%40poseidon.cudanet.local
In-Reply-To: <4F5F4E20.6000706@opera.com>

```
Looks good!

Thanks,

Jeff.

On Tue, Mar 13, 2012 at 02:39:44PM +0100, Per Cederqvist wrote:
> In some circumstances (like running guilt in a M-x shell buffer in
> Emacs) cat may give the above error message when the reader of the
> output from cat exits without reading all input from cat.  (In other
> circumstances cat is just silently terminated with SIGPIPE.)
> 
> Get rid of the error by removing the useless use of cat in
> do_get_header and do_get_full_header.
> 
> Signed-off-by: Per Cederqvist <cederp@opera.com>
> ---
>  guilt |    8 ++++----
>  1 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/guilt b/guilt
> index d1e17d4..7f6806e 100755
> --- a/guilt
> +++ b/guilt
> @@ -359,7 +359,7 @@ do_get_header()
>  	# 4th line skips any empty lines thereafter.
>  	# 5th line turns off empty line skip upon seeing a non-empty line.
>  	# 6th line terminates execution when we encounter the diff
> -	cat "$1" | awk '
> +	awk '
>  BEGIN{body=0; subj=0}
>  /^Subject:/ && (body == 0 && subj == 0){subj=1; print substr($0,
> 10) "\n"; next}
>  /^(Subject:|From:|Author:|Date:|commit)/ && (body == 0){next}
> @@ -369,7 +369,7 @@ BEGIN{body=0; subj=0}
>  /^(diff |---$|--- )/{exit}
>  {print $0}
>  END{}
> -'
> +' < "$1"
>  }
> 
>  # usage: do_get_full_header patchfile
> @@ -377,12 +377,12 @@ do_get_full_header()
>  {
>  	# 2nd line checks for the begining of a patch
>  	# 3rd line outputs the line if it didn't get pruned by the above rules
> -	cat "$1" | awk '
> +	awk '
>  BEGIN{}
>  /^(diff |---$|--- )/{exit}
>  {print $0}
>  END{}
> -'
> +' < "$1"
>  }
> 
>  # usage: assert_head_check
> -- 
> 1.7.9
> 

-- 
Si hoc legere scis nimium eruditionis habes.

```

## Jeff Sipek, 2012-03-13 16:24

Subject: Re: [GUILT] [PATCH] get rid of "cat: write error: Broken pipe" error message
Message-ID: <20120313162428.GA1914@meili.cudanet.local>
URL: https://gitlist.dev/e/20120313162428.GA1914%40meili.cudanet.local
In-Reply-To: <4F5F4E20.6000706@opera.com>

```
On Tue, Mar 13, 2012 at 02:39:44PM +0100, Per Cederqvist wrote:
> In some circumstances (like running guilt in a M-x shell buffer in
> Emacs) cat may give the above error message when the reader of the
> output from cat exits without reading all input from cat.  (In other
> circumstances cat is just silently terminated with SIGPIPE.)
> 
> Get rid of the error by removing the useless use of cat in
> do_get_header and do_get_full_header.

FWIW, your patch got mangled pretty badly.  I fixed it up and applied it.

Thanks,

Jeff.

> Signed-off-by: Per Cederqvist <cederp@opera.com>
> ---
>  guilt |    8 ++++----
>  1 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/guilt b/guilt
> index d1e17d4..7f6806e 100755
> --- a/guilt
> +++ b/guilt
> @@ -359,7 +359,7 @@ do_get_header()
>  	# 4th line skips any empty lines thereafter.
>  	# 5th line turns off empty line skip upon seeing a non-empty line.
>  	# 6th line terminates execution when we encounter the diff
> -	cat "$1" | awk '
> +	awk '
>  BEGIN{body=0; subj=0}
>  /^Subject:/ && (body == 0 && subj == 0){subj=1; print substr($0,
> 10) "\n"; next}
>  /^(Subject:|From:|Author:|Date:|commit)/ && (body == 0){next}
> @@ -369,7 +369,7 @@ BEGIN{body=0; subj=0}
>  /^(diff |---$|--- )/{exit}
>  {print $0}
>  END{}
> -'
> +' < "$1"
>  }
> 
>  # usage: do_get_full_header patchfile
> @@ -377,12 +377,12 @@ do_get_full_header()
>  {
>  	# 2nd line checks for the begining of a patch
>  	# 3rd line outputs the line if it didn't get pruned by the above rules
> -	cat "$1" | awk '
> +	awk '
>  BEGIN{}
>  /^(diff |---$|--- )/{exit}
>  {print $0}
>  END{}
> -'
> +' < "$1"
>  }
> 
>  # usage: assert_head_check
> -- 
> 1.7.9
> 

-- 
The obvious mathematical breakthrough would be development of an easy way to
factor large prime numbers.
		- Bill Gates, The Road Ahead, pg. 265

```
