Joel VanderWerf <joelvanderwerf / gmail.com> wrote:
> On 08/29/2014 01:21 AM, Eric Wong wrote:
> >Joel VanderWerf <joelvanderwerf / gmail.com> wrote:
> >>On 08/29/2014 12:55 AM, Eric Wong wrote:
> >>>Joel VanderWerf <joelvanderwerf / gmail.com> wrote:
> >>>>On 08/28/2014 02:53 PM, Eric Wong wrote:
> >>>>>I like this feature.
> >>>>>
> >>>>>If matz approves, I assume you also want to add other *at functions?
> >>>>>e.g. fstatat, renameat, unlinkat, mkdirat, etc.
> >>>>
> >>>>Hm, that suggests...
> >>>>
> >>>>Dir.at(...).open(...)
> >>>>Dir.at(...).fstat(...)
> >>>
> >>>How would that be implemented?
> >>
> >>Couldn't Dir.at(...) return an object that wraps the fd of the dir?
> >
> >Yes, but it would need to cache the _same_ object every time it's called
> >given that arg for a given thread.  Then it might not detect when that
> >thread might actually want a different FD/object, and the cache can fill
> >up or expire and we still end up with unpredictable behavior.
> 
> What if you always used it like this:
> 
> d = Dir.at()
> d.open()
> d.fstat()
> 
> so it's up to the caller to decide explicitly when to use the same
> object or not. It reflects the underlying fd-based API, doesn't it?

OK, that would work.  However it ends up creating a new object type
and overloading of names, making it harder to review code, I think.
I prefer this:

	d = Dir.open(..)
	d.openat(...)
	d.fstatat(..)