Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 5 Apr 1997 13:11:41 -0700 (MST)
From:      Terry Lambert <terry@lambert.org>
To:        gurney_j@resnet.uoregon.edu
Cc:        freebsd-current@freebsd.org
Subject:   Re: using opendir, but passing a fd instead of path...
Message-ID:  <199704052011.NAA23502@phaeton.artisoft.com>
In-Reply-To: <19970405042421.06894@hydrogen.nike.efn.org> from "John-Mark Gurney" at Apr 5, 97 04:24:21 am

next in thread | previous in thread | raw e-mail | index | archive | help
> I was looking at the man page for opendir, and currently there isn't
> a way to open a dir from a file descriptor...  would this be a useful
> addition to the opendir set of routines?  or would this be a "wart" on
> something that really shouldn't be touched?
> 
> the reason I ask is because of a program that I'm writing, and I don't
> feel like having to pass the path to a subfunction, but I am passing
> an open fd of the dir...

How did you get the open fd of the dir?

Probably you should be passing around a DIR *, not an fd.

I admit that there is a discrepancy in the interface between
the reflexive stdio "fdopen".

If you are passing around the fd for fchdir, you should be able to
reference the fd out of the dir struct.  This would be an interface
violation, too, but a minor one: there is a defined macro "dirfd(DIR *)"
which returns the fd out of the DIR * in dirent.h, even though it
isn't part of the POSIX definition.

The reason, if you are interested, is that POSIX does not require a
directory to be a normal file accessable through "open".

Probably a cleaner overall fix would be to get a "dichdir(DIR *)"
defined, but that's not going to happen any time soon, if at all.


					Regards,
					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704052011.NAA23502>