This is the mail archive of the newlib@sources.redhat.com mailing list for the newlib project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Mon, 2004-11-22 at 14:07 -0500, Jeff Johnston wrote:
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.
I am confused. IMO, the opposite is true.
In my understanding, a "const *parameter" being passed to a function implies the function being allowed to use the pointer directly, while a "non-const * parameter" permits the application to modify the pointer.
Modification to the string after the call directly changes the environment.
SUSv3 says: ... int putenv(char *string); ... The space used by string is no longer used once a new string which defines name is passed to putenv(). ...
IMO, this implies putenv to be supposed to make a local copy of "string", therefore the case you are referring may not occur.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |