From owner-freebsd-current@FreeBSD.ORG Mon Apr 14 19:31:07 2008 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E3FB9106564A for ; Mon, 14 Apr 2008 19:31:07 +0000 (UTC) (envelope-from delphij@delphij.net) Received: from tarsier.delphij.net (delphij-pt.tunnel.tserv2.fmt.ipv6.he.net [IPv6:2001:470:1f03:2c9::2]) by mx1.freebsd.org (Postfix) with ESMTP id 89C448FC19 for ; Mon, 14 Apr 2008 19:31:07 +0000 (UTC) (envelope-from delphij@delphij.net) Received: from tarsier.geekcn.org (tarsier.geekcn.org [202.108.54.204]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by tarsier.delphij.net (Postfix) with ESMTPS id DB4F628448 for ; Tue, 15 Apr 2008 03:31:04 +0800 (CST) Received: from localhost (tarsier.geekcn.org [202.108.54.204]) by tarsier.geekcn.org (Postfix) with ESMTP id B3692EB3244; Tue, 15 Apr 2008 03:31:01 +0800 (CST) X-Virus-Scanned: amavisd-new at geekcn.org Received: from tarsier.geekcn.org ([202.108.54.204]) by localhost (mail.geekcn.org [202.108.54.204]) (amavisd-new, port 10024) with ESMTP id ES65Es-rM-7t; Tue, 15 Apr 2008 03:30:56 +0800 (CST) Received: from charlie.delphij.net (71.5.7.139.ptr.us.xo.net [71.5.7.139]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by tarsier.geekcn.org (Postfix) with ESMTPSA id 35CD5EB1094; Tue, 15 Apr 2008 03:30:55 +0800 (CST) DomainKey-Signature: a=rsa-sha1; s=default; d=delphij.net; c=nofws; q=dns; h=message-id:date:from:reply-to:organization:user-agent: mime-version:to:cc:subject:references:in-reply-to: x-enigmail-version:openpgp:content-type:content-transfer-encoding; b=e4z4/3FVnUmd36JAcJTooZ8kfF1g9UFLTEw1bvXS+sejZ4Wm0sspuPke/qP1Xxk8j Z2vLB0u2kNZdQ0Rgzab5A== Message-ID: <4803B0EC.1060901@delphij.net> Date: Mon, 14 Apr 2008 12:30:52 -0700 From: Xin LI Organization: The FreeBSD Project User-Agent: Thunderbird 2.0.0.12 (X11/20080312) MIME-Version: 1.0 To: Kostik Belousov References: <48027F56.9010302@delphij.net> <20080414095539.GD18958@deviant.kiev.zoral.com.ua> In-Reply-To: <20080414095539.GD18958@deviant.kiev.zoral.com.ua> X-Enigmail-Version: 0.95.6 OpenPGP: id=18EDEBA0; url=http://www.delphij.net/delphij.asc Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: FreeBSD Current , d@delphij.net Subject: Re: [PATCH] fdopendir(3) X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: d@delphij.net List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Apr 2008 19:31:08 -0000 Kostik Belousov wrote: > On Sun, Apr 13, 2008 at 02:47:02PM -0700, Xin LI wrote: >> Hi, >> >> Any objection for the attached patch which implements fdopendir(3) that >> is found in various other OSes? Basically it splits __opendir2 into two >> parts, and expose the second part which deals with fd to provide >> fdopendir(3) functionalities. > > There are some problems with the DTF_REWIND and union mounts. > > I too implemented the fdopendir in the course of the *at() work after > the initial Roman Divacky submission. I put my patch at the > http://people.freebsd.org/~kib/misc/fdopendir.1.patch > > I postponed the commit for further testing and some more changes related > to the committed *at syscalls (mainly man pages, the patch awaits the > review). Some observations. __fdopendir2(). My feeling is that this is not suitable to separate as a standard alone file as its sole users are fdopendir() and opendir(), therefore, being static might be more appropriate. Do you have the intention to use it in somewhere else? If so we should really repocopy opendir.c to __fdopendir2.c (there is a minor unnecessary. Another thing is that the fd == -1 && (flags & DTF_REWIND) statement. If this would be an internal routine then it sounds like to be better represented as an assertion. The caller should guarantee that the assertion hold true (by design), and the runtime check seems to be unnecessary (that's why I did not added these checks). So I think the major difference between your version and mine is whether we wanted to expose __fdopendir2() outside libc? Cheers, -- Xin LI http://www.delphij.net/ FreeBSD - The Power to Serve!