From owner-freebsd-ports@FreeBSD.ORG Mon Apr 9 15:30:32 2007 Return-Path: X-Original-To: ports@freebsd.org Delivered-To: freebsd-ports@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 90BFF16A403 for ; Mon, 9 Apr 2007 15:30:32 +0000 (UTC) (envelope-from kientzle@freebsd.org) Received: from kientzle.com (h-66-166-149-50.snvacaid.covad.net [66.166.149.50]) by mx1.freebsd.org (Postfix) with ESMTP id 7073B13C4CB for ; Mon, 9 Apr 2007 15:30:32 +0000 (UTC) (envelope-from kientzle@freebsd.org) Received: from [10.0.0.222] (p54.kientzle.com [66.166.149.54]) by kientzle.com (8.12.9/8.12.9) with ESMTP id l39FUWH7084347; Mon, 9 Apr 2007 08:30:32 -0700 (PDT) (envelope-from kientzle@freebsd.org) Message-ID: <461A5C17.5080906@freebsd.org> Date: Mon, 09 Apr 2007 08:30:31 -0700 From: Tim Kientzle User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.12) Gecko/20060422 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Ulrich Spoerlein References: <20070407174756.GA46385@roadrunner.q.local> <4617F67B.7050304@freebsd.org> <20070408075917.GA40103@roadrunner.q.local> <46194018.8030102@freebsd.org> <20070409105220.GA1347@roadrunner.q.local> In-Reply-To: <20070409105220.GA1347@roadrunner.q.local> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Cc: ports@freebsd.org Subject: Re: bsdtar and packages vs. unionfs X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Apr 2007 15:30:32 -0000 Ulrich Spoerlein wrote: > Tim Kientzle wrote: > > The way I see it, bsdtar(1) extracts the symlink libcharset.so, and then > tries to stat(2) instead of lstat(2) it, before libcharset.so.1 is > extracted. The questions is: why? Oh. I see. *That* old bug. Try this patch: Index: archive_read_extract.c =================================================================== --- archive_read_extract.c (revision 177) +++ archive_read_extract.c (working copy) @@ -1243,7 +1243,7 @@ /* Already have stat() data available. */ } else if (fd >= 0 && fstat(fd, &extract->st) == 0) extract->pst = &extract->st; - else if (stat(name, &extract->st) == 0) + else if (lstat(name, &extract->st) == 0) extract->pst = &extract->st; else { archive_set_error(a, errno,