From owner-svn-src-user@FreeBSD.ORG Fri Jul 17 07:47:59 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1B480106566C; Fri, 17 Jul 2009 07:47:59 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0AA228FC0C; Fri, 17 Jul 2009 07:47:59 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n6H7lw1A061419; Fri, 17 Jul 2009 07:47:58 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n6H7lwEL061417; Fri, 17 Jul 2009 07:47:58 GMT (envelope-from des@svn.freebsd.org) Message-Id: <200907170747.n6H7lwEL061417@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Fri, 17 Jul 2009 07:47:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r195737 - user/des/fmerge X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Jul 2009 07:47:59 -0000 Author: des Date: Fri Jul 17 07:47:58 2009 New Revision: 195737 URL: http://svn.freebsd.org/changeset/base/195737 Log: Rework handling of svn subprocesses. Modified: user/des/fmerge/fmerge.pl Modified: user/des/fmerge/fmerge.pl ============================================================================== --- user/des/fmerge/fmerge.pl Fri Jul 17 07:32:22 2009 (r195736) +++ user/des/fmerge/fmerge.pl Fri Jul 17 07:47:58 2009 (r195737) @@ -67,6 +67,22 @@ sub svn_do(@) { info('svn', @argv); system('svn', @argv) unless $pretend; + my $pid = fork(); + if ($pid == -1) { + die("fork(): $!\n"); + } elsif ($pid == 0) { + exec('svn', @argv); + die("exec(): $!\n"); + } + waitpid($pid, 0); + info($?); + if ($? & 128) { + info("svn died with signal", $? & 128); + kill($? & 128, $$); + } elsif ($?) { + info("svn returned error status", $? >> 8); + exit(1); + } } sub svn_merge(@) {