On Apr 22, 5:02am, [email protected] (David Holland) wrote: -- Subject: Re: $ORIGIN (was: Re: make: ensure ${.MAKE} works)
| I had convinced myself it was supposed to fail if it had to look | outside the cache, but that's only true for the first step. Correct. Or if someone removed it. | > I think what you propose is to call something like a | > kernel realpath(path) and use this to set $ORIGIN which is fine | > with me. I did not do it because I did not want to deal with path | > canonicalization (eliminating ../.././// from the path, but I guess | > that getcwd() does this for you if you call it with the full path?). | | namei can already do enough of this to get by on (see for example | svr4_sys_resolvepath() in sys/compat/svr4/svr4_misc.c) and exec is | already using this (mis?)feature. Yes. | For the time being what we can do is take the path sent back from | namei, and if it's not absolute call getcwd and graft that onto the | front. This will in general yield a partially realpath'd path but I | don't think anyone will care. I agree, but remember to handle the emul root. | In the long run I think a fully realpath'd path can be arranged, | either by calling getcwd first and handing the results to namei to | grind on, or by explicitly compacting any ..'s that appear in the | front of the namei result. I sort of favor the first because it makes | it possible to handle the emulation root properly, I think, but this | can be discussed later on. Yes, although I hate doing string manipulations in the kernel. christos
