Bogus putenv?
Jeff Johnston
jjohnstn@redhat.com
Tue Nov 23 06:58:00 GMT 2004
Ralf Corsepius wrote:
> Hi,
>
> newlib's stdlib.h declares
> int putenv( const char* );
>
> According to SUSv3, Linux and Solaris, this should be (without const)
> int putenv( char* );
>
> FreeBSD, however has the same declaration as newlib (with const).
>
> At least I am in favor of following SUSv3 and to ignore BSD's behaviour,
> i.e. I vote for changing newlib's putenv to match with SUSv3.
>
> Ralf
>
>
You have to take into account how putenv is implemented. The reason putenv has
a non-const parameter for those situations is that those functions use the input
strings directly. Modification to the string after the call directly changes
the environment. Newlib's implementation does not do this. It makes a copy of
the string and passes it to setenv. Modifying the input string does not affect
subsequent getenv calls for newlib.
If you are willing to change putenv to work by using the strings directly, I am
ok with such a change.
-- Jeff J.
More information about the Newlib
mailing list