This is the mail archive of the newlib@sourceware.org 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] |
Hi,
Ugh, Craig and I were discussing the patch offline, and he found two problems in it, one to do with the fact that unsetenv shouldn't return (-1) if the var is missing, and the other that getenv() would still imporoperly return values in certain cases involving equal signs... I guess another patch would be in order...
Thanks! Pawel.
On Wed, Sep 24, 2008 at 6:24 PM, Jeff Johnston <jjohnstn@redhat.com> wrote:
Pawel Veselov wrote:
Hi,Thanks Pawel. Patch checked in.
[ skipped ]
[ skipped ]http://www.opengroup.org/onlinepubs/000095399/functions/setenv.html says that setenv() should fail with EINVAL if name contains an equal sign.
Ok, also considering the linux man pages state the same and the function isn't specified by ANSI. Would you like to try your hand at a patch?
Here is the patch, attached. Let me know if there are any questions/comments. Tested with this:
-- Jeff J.
#include <stdio.h> #include <stdlib.h> #include <errno.h>
static char * _getenv(char *);
char * _getenv(char * var) { char * aux = getenv(var); if (aux) { return aux; } return "(NULL)"; }
int main(int argc, char ** argv) { printf("getenv('nada' = %s\n", getenv("nada")); printf("getenv('TMP') = %s\n", getenv("TMP")); printf("getenv('TMP=XA') = %s\n", getenv("TMP=XA")); printf("setenv('PAWEL','DATA') = %d\n", setenv("PAWEL", "DATA", 1)); printf("getenv('PAWEL') = %s\n", getenv("PAWEL")); errno = 0; printf("setenv('PAWE=L', 'DATA') = %d\n", setenv("PAWE=L", "DATA", 1)); fflush(stdout); perror("setenv()"); printf("setenv('LOOK','=FEEL') = %d\n", setenv("LOOK", "=FEEL", 1)); printf("unsetenv('PAWEL') = %d\n", unsetenv("PAWEL")); printf("getenv('LOOK') = %s\n", getenv("LOOK")); printf("getenv('PAWEL') = %s\n", getenv("PAWEL")); printf("setenv('LOOK', 'JAM', nod) = %d\n", setenv("LOOK", "JAM", 0)); printf("getenv('LOOK') = %s\n", getenv("LOOK")); printf("setenv('LOOK', 'MONKEY', od) = %d\n", setenv("LOOK", "MONKEY", 1)); printf("getenv('LOOK') = %s\n", getenv("LOOK"));
errno = 0; printf("unsetenv('=') = %d\n", unsetenv("=")); perror("unsetenv()");
errno = 0; printf("unsetenv('KARA') = %d\n", unsetenv("KARA")); perror("unsetenv()"); return 0; }
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |