>> 3) I'm not 100% sure, but I _think_ it is allowed to >> modify the string you passed to putenv later, and that >> such changes will have effect on future getenv() calls; >> that behaviour is broken by your version of putenv(). > You're right, I hadn't thought of that. According to the POSIX > standard (IEEE Std 1003.1, 2003 Edition), > > | The 'string' argument should point to a string of the form " name= > | value ". The putenv() function shall make the value of the > | environment variable 'name' equal to 'value' by altering an > | existing variable or creating a new one. In either case, the > | string pointed to by 'string' shall become part of the > | environment, so altering the string shall change the environment.
According to the DJGPP C Library manual, it seems to say things are the other way around. It says that the string is _supposed_ to be copied. But if there's at least one C library or compiler that's not standards compliant, someone has to cater to them or risk that construct being nonportable without anyone knowing it, everyone using it, only to break on a platform like DJGPP. (I can justify that it's the job of Autoconf to track down those things.). Samuel Lauber P.S. Nowadays, I've noticed a lot of free software is impolite to DOS systems. -- _____________________________________________________________ Web-based SMS services available at http://www.operamail.com. From your mailbox to local or overseas cell phones. Powered by Outblaze