I left the oven on for my partly-baked idea. I'm now thinking that with fd 5 as an example:  open ("#d/5dir/a/b/c", ...) might be a practical way to do this (the  syntax I suggested earlier would require walking from a file, which wouldn't be sensible). So I went snorkeling in the kernel to see how hard this would be... devdup.c uses the bottom bit of the qid.path to distinguish #d/0 from #d/0ctl, so that would have to change to modulo 3 to allow the '5dir' virtual directory to be found when qid.path % 3 == 2, and twicefd would have to change to thricefd. The idea is that a walk to #d/5dir would continue the walk at the cloned unopened directory fid that fd 5 is also holding in its chan (as I suggested in a previous post). Currently, dupwalk just calls devwalk in dev.c, so we'd probably want to do the first step in dupwalk, doing fd2chan, much like dupopen does. Then call something else to walk from there. I'm not sure what though: walk() maybe? I don't really know my way around the Plan 9 kernel, so this may not be the right way to do this. There are some scary creatures in dev.c, including a spikey backward pointing goto and some dark comments about contradictory rules and ugly bits... :o You'd want to get the effect of having the directory open on fd 5 bound to #d/5dir without actually doing the bind (because you can't...). Ideally if fd 5 is not a directory, then #d/5dir should not even appear. The idea is that then: int openat (int fd, char *path, int mode) { char newpath[PATHSIZE]; sprintf (newpath, "#d/%ddir/%s", fd, path); return open (newpath, mode); } could be a function in a library somewhere that would parcel it up in a more convenient form, and the rest of the *at suite could follow the same pattern. Maybe someone would want this for a version of APE emulating Linux? So the idea is still partly-baked, and still very much in the realm of the hypothetical: Ron Minnich wrote: "I don't want this to turn into a debate on the merits of openat" I'm approaching this in the spirit of "if we had to implement this, how would we do it while inflicting the least harm"... :) ------------------------------------------ 9fans: 9fans Permalink: https://9fans.topicbox.com/groups/9fans/T675e737e776e5a9c-M124c4e12c40240ab85dbdea0 Delivery options: https://9fans.topicbox.com/groups/9fans/subscription