tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Proposal: getexecpath(3)



> Date: Sat, 4 Jan 2025 10:22:01 +0000
> From: David Holland <dholland-tech%netbsd.org@localhost>
> 
> On Sat, Jan 04, 2025 at 06:52:38AM +0000, Taylor R Campbell wrote:
>  > The point here is to grant the callee access to the exec path
>  > _without_ cooperation by the caller.
>  > 
>  > That way, the callee can find data files or libraries relative to
>  > where it was found, without requiring the caller to pass paths to
>  > those data files and libraries on the command line.
>  > 
>  > If the caller could be adapted to pass those paths, there would be no
>  > need for any of this.
> 
> Under normal circumstances the callee can use argv[0], though
> admittedly it's a bit of a nuisance since it requires examining $PATH
> if there's no / in the string. One could certainly make a library
> function that does that though.

execve(2) doesn't involve $PATH search, so even if you search $PATH
for argv[0], the result may not reflect the path that was passed to
execve(2).

> (IOW, I've never really understood the motivation for any of this
> stuff.)

Would like to volunteer to go through the dozens of packages in pkgsrc
that have patches involving KERN_PROC_PATHNAME or /proc/self/exe or
similar to disabuse them of their motivation for this stuff?

I'm just proposing a simpler API with clearer semantics to do it --
there isn't anything fundamentally new in this proposal.

I suspect that upstreaming patches that make a simple API call with
clearer semantics will be easier than dealing with the
KERN_PROC_PATHNAME mess (and its bizarre incompatibility with FreeBSD)
or convincing upstreams that they're wrong to want to ask the question
in the first place.


Home | Main Index | Thread Index | Old Index