Skip site navigation (1)Skip section navigation (2)
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>