DragonFly BSD
DragonFly bugs List (threaded) for 2006-07
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: Broken pipe error

From: Matthew Dillon <dillon@xxxxxxxxxxxxxxxxxxxx>
Date: Fri, 14 Jul 2006 11:20:29 -0700 (PDT)

:Petr Janda wrote:
:> Ok, it seems that I found a bug.
:> elevator# man ppp
:> zcat: error writing to output: Broken pipe
:> zcat: /usr/share/man/cat8/ppp.8.gz: uncompress failed
:Do you get that for all man pages or just ppp(8)?

    The error is quite simply due to the fact that the pager program
    (more) exited without reading all the input from the pipe.  It
    only occurs sometimes because it depends on whether the pipe
    direct-maps zcat's (gunzip's) write to the pager program's read.

    But, of course, the pager program exited because the user quit out
    of it before it read all the input from zcat.

    I think the solution is to modify the 'man' program to pass the '-q'
    option to zcat (gunzip), and to modify gunzip to do a
    signal(SIGPIPE, SIG_IGN) when used with the -q option.

    Petr, please try rebuilding the 'man' program and the gzip program 
    using this patch.  Please tell me if it stops the errors.  Here is 
    the build sequence after applying the patch:

	cd /usr/src/gnu/usr.bin/man
	make clean obj all install
	cd /usr/src/usr.bin/gzip
	make clean obj all install

    Patch is included below.

					Matthew Dillon 

Index: gnu/usr.bin/man/Makefile.inc
RCS file: /cvs/src/gnu/usr.bin/man/Makefile.inc,v
retrieving revision 1.2
diff -u -r1.2 Makefile.inc
--- gnu/usr.bin/man/Makefile.inc	17 Jun 2003 04:25:46 -0000	1.2
+++ gnu/usr.bin/man/Makefile.inc	14 Jul 2006 18:14:49 -0000
@@ -22,7 +22,7 @@
 refer=			/usr/bin/refer
 grap=			# no grap
 pic=			/usr/bin/pic
-zcat=			/usr/bin/zcat
+zcat=			/usr/bin/zcat -q
 compress=		/usr/bin/gzip -c
 compext=		.gz
Index: usr.bin/gzip/gzip.c
RCS file: /cvs/src/usr.bin/gzip/gzip.c,v
retrieving revision 1.5
diff -u -r1.5 gzip.c
--- usr.bin/gzip/gzip.c	31 Jan 2005 19:28:57 -0000	1.5
+++ usr.bin/gzip/gzip.c	14 Jul 2006 18:17:11 -0000
@@ -314,6 +314,7 @@
 		case 'q':
 			qflag = 1;
+			signal(SIGPIPE, SIG_IGN);
 		case 'r':
 			rflag = 1;

[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]