Date: Sat, 5 Apr 1997 15:08:35 -0800 From: John-Mark Gurney <jmg@hydrogen.nike.efn.org> To: freebsd-current@freebsd.org Subject: Re: using opendir, but passing a fd instead of path... Message-ID: <19970405150835.41585@hydrogen.nike.efn.org> In-Reply-To: <199704052011.NAA23502@phaeton.artisoft.com>; from Terry Lambert on Sat, Apr 05, 1997 at 01:11:41PM -0700 References: <19970405042421.06894@hydrogen.nike.efn.org> <199704052011.NAA23502@phaeton.artisoft.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Terry Lambert scribbled this message on Apr 5: > > 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? fd=open("directory", O_RDONLY, 0); then I pass fd to my function... > Probably you should be passing around a DIR *, not an fd. well.. I'm trying to make a generic interface that will handle the differt types of files properly... i.e. after I open the "possible" file, the I fstat the file.. and then, depending on the st_mode of the struct stat... I call different functions... > 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. yeh... I noticed that one... but as above it doesn't help me.. :( > The reason, if you are interested, is that POSIX does not require a > directory to be a normal file accessable through "open". ahhh... that's a good reason that opendir doesn't have a fopendir or similar call... > 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. as I describe above... this won't help me any... thanks for the extra info... opendir makes a bit more sense now... ttyl.. -- John-Mark Cu Networking Modem/FAX: +1 541 683 6954 Live in Peace, destroy Micro$oft, support free software, run FreeBSD
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19970405150835.41585>