diff --git a/en/cgi/cvsweb.cgi b/en/cgi/cvsweb.cgi index fd27c8ce2f..22afdc6754 100755 --- a/en/cgi/cvsweb.cgi +++ b/en/cgi/cvsweb.cgi @@ -28,7 +28,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: www/en/cgi/cvsweb.cgi,v 1.42 2000/07/12 05:23:33 jdp Exp $ +# $FreeBSD: www/en/cgi/cvsweb.cgi,v 1.43 2000/07/12 05:25:50 jdp Exp $ # @@ -416,8 +416,10 @@ sub safeglob { sub checkout { local($fullname, $rev) = @_; - open(RCS, "co -p$rev '$fullname' 2>&1 |") || - &fail("500 Internal Error", "Couldn't co: $!"); + if (! open(RCS, "-|")) { # child + open(STDERR, ">&STDOUT"); # Redirect stderr to stdout + exec("co", "-p$rev", $fullname); + } # /home/ncvs/src/sys/netinet/igmp.c,v --> standard output # or # /home/ncvs/src/sys/netinet/igmp.c,v --> stdout @@ -478,20 +480,22 @@ sub dodiff { # # XXX Putting '-p' here is a personal preference if ($f eq 'c') { - $difftype = '-p -c'; + @difftype = qw{-p -c}; $diffname = "Context diff"; } elsif ($f eq 's') { - $difftype = '--side-by-side --width=164'; + @difftype = qw{--side-by-side --width=164}; $diffname = "Side by Side"; } else { - $difftype = '-p -u'; + @difftype = qw{-p -u}; $diffname = "Unidiff"; } # XXX should this just be text/plain # or should it have an HTML header and then a
 	print "Content-type: text/plain\n\n";
-	open(RCSDIFF, "rcsdiff $difftype -r$rev1 -r$rev2 '$fullname' 2>&1 |") ||
-	    &fail("500 Internal Error", "Couldn't rcsdiff: $!");
+	if (! open(RCSDIFF, "-|")) { # child
+	    open(STDERR, ">&STDOUT"); # Redirect stderr to stdout
+	    exec("rcsdiff", @difftype, "-r$rev1", "-r$rev2", $fullname);
+	}
 #
 #===================================================================
 #RCS file: /home/ncvs/src/sys/netinet/tcp_output.c,v
@@ -509,7 +513,7 @@ sub dodiff {
 #--- src/sys/netinet/tcp_output.c     1995/12/05 17:46:35     1.17 RELENG_2_1_0
 # (bogus example, but...)
 #
-	if ($difftype eq '-u') {
+	if (grep { $_ eq '-u' } @difftype) {
 	    $f1 = '---';
 	    $f2 = '\+\+\+';
 	} else {
@@ -540,8 +544,10 @@ sub dolog {
 	local($curbranch,$symnames);	#...
 
 	print("Going to rlog '$fullname'\n") if ($verbose);
-	open(RCS, "rlog '$fullname'|") || &fatal("500 Internal Error",
-						"Failed to spawn rlog");
+	if (! open(RCS, "-|")) {
+	    close(STDERR); # rlog may complain; ignore.
+	    exec("rlog", $fullname);
+	}
 	while () {
 	    print if ($verbose);
 	    if (/^branch:\s+([\d\.]+)/) {