summaryrefslogtreecommitdiffstats
path: root/newlib/libc/stdlib/getenv_r.c
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2008-09-25 01:23:08 +0000
committerJeff Johnston <jjohnstn@redhat.com>2008-09-25 01:23:08 +0000
commit37f996a2b22baba8cc6ee7df87f72df25de36737 (patch)
tree84c4a264075efe260eca78cae9950ca26f66c178 /newlib/libc/stdlib/getenv_r.c
parent62470d09ad879ff2516a520944d5c7349a2aa85f (diff)
downloadcygnal-37f996a2b22baba8cc6ee7df87f72df25de36737.tar.gz
cygnal-37f996a2b22baba8cc6ee7df87f72df25de36737.tar.bz2
cygnal-37f996a2b22baba8cc6ee7df87f72df25de36737.zip
2008-09-24 Pawel Veselov <pawel.veselov@gmail.com>
Fix setenv/getenv/unsetenv to be OpenGroup compliant: * libc/include/stdlib.h (unsetenv, _unsetenv_r): Redefine with integer return types. * libc/stdlib/getenv_r.c (_findenv_r): Do no special processing with names that contain equal chars. * libc/stdlib/setenv.c: Redefine _unsetenv_r as returning int. * libc/stdlib/setenv_r.c (_setenv_r): Return -1 and set errno to EINVAL if name contains an equal sign. Do not remove any equal signs from the value. (_unsetenv_r): Modified to return int. Return -1 and set EINVAL if name contains equal sign. Return -1 if no variable(s) were found and return 0 otherwise.
Diffstat (limited to 'newlib/libc/stdlib/getenv_r.c')
-rw-r--r--newlib/libc/stdlib/getenv_r.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/newlib/libc/stdlib/getenv_r.c b/newlib/libc/stdlib/getenv_r.c
index 85d250b79..bfa9682f2 100644
--- a/newlib/libc/stdlib/getenv_r.c
+++ b/newlib/libc/stdlib/getenv_r.c
@@ -74,7 +74,6 @@ static char ***p_environ = &environ;
* Returns pointer to value associated with name, if any, else NULL.
* Sets offset to be the offset of the name/value combination in the
* environmental array, for use by setenv(3) and unsetenv(3).
- * Explicitly removes '=' in argument name.
*
* This routine *should* be a static; don't use it.
*/
@@ -99,13 +98,8 @@ _DEFUN (_findenv_r, (reent_ptr, name, offset),
return NULL;
}
- c = name;
- len = 0;
- while (*c && *c != '=')
- {
- c++;
- len++;
- }
+ len = strlen(name);
+ c = name + len;
for (p = *p_environ; *p; ++p)
if (!strncmp (*p, name, len))