threads / patch / 29939

patchget rid of "cat: write error: Broken pipe" error message

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

## tl;dr

3 messages between Mar 13, 2012 and Mar 13, 2012. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Per Cederqvist· Mar 13, 2012, 13:39 UTC · lore

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(-)
Show changes to guilt +4 −4
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· Mar 13, 2012, 13:41 UTC · re: Per Cederqvist · lore

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

Looks good!
Thanks,
Jeff.
On Tue, Mar 13, 2012 at 02:39:44PM +0100, Per Cederqvist wrote:
Show 54 quoted lines
> 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· Mar 13, 2012, 16:24 UTC · re: Per Cederqvist · lore

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

On Tue, Mar 13, 2012 at 02:39:44PM +0100, Per Cederqvist wrote:
Show 7 quoted lines
> 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.
Show 46 quoted lines
> 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

← back to recent threads