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

Environment variables



I think it's consense that we should aim for POSIX compatibelity on the 
C library level in MiNT. I wonder how it will be possible to have old 
programs and new ones (which, for instance, know how to handle Unix 
filenames like /foo and /dev/c/bar) coexist, especially if old and new 
programs share environment variables.

For the PATH environment variable, the MiNT library contains a hack to 
convert it back and forth when entering the program/spawning a new 
program.

Ideally, environment variables which contain file names/paths would be 
passed on between programs in Unix compatible form. However, this is 
impossible because most programs expect them in DOS form.

I think we need to pass the environment in DOS form; but, because it's 
especially ugly to puff up programs with file name/environment variable 
conversions, #ifdef's and things like _dox2unx() when porting from the 
Unix platform to the Atari, I think that the environment conversion (as 
with PATH) should be generalized/automatized in the library.

What I want is to convert _all_ environment variables (which contain 
file names/paths) to the Unix form in the startup code (not just the PATH 
variable), and convert it back when spawning. To prevent environment 
variables which do not contain file names from being converted, a scheme 
has to be developed that prevents this. I have one in mind already.

Would changing the MiNT library this way be acceptable?

Michael

PS: Besides, system() should be fixed to spawn a /bin/sh when MiNT is 
    active, and _dos2unx() should should convert c:\foo\bar to 
    /dev/c/foo/bar, not c:/foo/bar. (Something for your scratchpad, 
    entropy?)

-- 
Internet: hohmuth@freia.inf.tu-dresden.de