Anybody working on removing sendmail from base?

Mike Porter mupi at mknet.org
Thu Oct 2 12:53:23 PDT 2003


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Thursday 02 October 2003 05:15 am, Sander Vesik wrote:

> I would personaly prefer a different api from just making all envvars
> available to namei. the unix environment is not a particularily nice thing,
> and you end up jumping through extra hoops to make sure you don't have to
> reparse the environment for each call.
>
> The downside is extra api, conceptualy having two environments and needing
> to augument shells to have an extra builtin. for me this is a reasonable
> tradeoff - after all, most software will have been written for other OS-s
> and not know about variance of symlinks anyways - but i guess others might
> not.

Conceptually, from a user/application standpoint, the symlink should be 
transparent.  In other words, if a Makefile says, e.g. "CC=/usr/localgcc" 
then make would call '/usr/local/gcc' without worrying about the fact that 
/usr/local/gcc points to /usr/local/gcc/${gcc_version}/gcc.  It doesn't 
bother me (that much) that I can't just use 'set $gcc_version' but if it is 
something simple like 'setsym $gcc_version=' that isn't too bad.  In some 
ways, I can see the advantage.  People aren't going to (usually) mess with 
things that aren't obvious.  

The one question, in this context, becomes: if I do 'which gcc', what happens?  
Does it simply report '/usr/local/gcc' or does it follow the symlink?  If it 
follows the symlink, presumably it inherits my environment, and shows the 
correct one.  But what about 'ls -l' in /usr/local, which reports symlinks?  
Do we see the dereferenced symlink (/usr/local/gcc/3.4) or do we see 
"/usr/local/gcc/${gcc_version}/gcc"?  Clearly, going into /usr/local/gcc one 
would see the various versions installed.  
If I understand  what would happen correctly, if we are doing the 
dereferencing in namei() then every time the symlink is accessed, it should 
provide the dereferenced version, so 'setsym gcc_version=3.4; ls -l gcc' 
would return a link to '/usr/local/gcc/3.4/gcc'  If I then were to type 
'setsym gcc_version=2.95.4; ls -l gcc' would return 
'/usr/local/gcc/2.95.4/gcc'.   For me, I think this would be the desired 
behavior.

mike
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (FreeBSD)

iD8DBQE/fIGnY30jZzkECLcRAiNYAJ4vT9w8hxW25+4M68qDebdvmqDvnQCeLuJp
NQ3pDzqY4B3KLxzLCQ6a1wc=
=Gx2c
-----END PGP SIGNATURE-----







More information about the Kernel mailing list