diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2001-02-23 01:16:25 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2001-02-23 01:16:25 +0000 |
commit | 7e0f6a1f00659d26d3dff8670411159e65089d91 (patch) | |
tree | 481929b0b8e3f7c97afa9a0059f6d85de169a6cb /perl.c | |
parent | 480bfd1e80890450eeff9594094f9208ebd83d4e (diff) | |
download | perl-7e0f6a1f00659d26d3dff8670411159e65089d91.tar.gz |
Rewrite putenv() using my_setenv(). (In general the vendors'
putenv() is not to be relied on, they are either broken or leaky
or both.)
p4raw-id: //depot/perl@8899
Diffstat (limited to 'perl.c')
-rw-r--r-- | perl.c | 18 |
1 files changed, 16 insertions, 2 deletions
@@ -3384,7 +3384,21 @@ S_init_postdump_symbols(pTHX_ register int argc, register char **argv, register *s = '='; #if defined(__BORLANDC__) && defined(USE_WIN32_RTL_ENV) /* Sins of the RTL. See note in my_setenv(). */ - (void)PerlEnv_putenv(savepv(*env)); + { /* Turn this into Perl_my_putenv()? */ + char *putenvp = savepv(*env); + + if (putenvp) { + char *p = putenvp; + + while (*p && *p != '=') p++; + if (p == '=') { + *p++ = 0; + my_setenv(putenvp, p); + } + + Safefree(putenvp); + } /* else what? */ + } #endif } #ifdef NEED_ENVIRON_DUP_FOR_MODIFY @@ -3394,7 +3408,7 @@ S_init_postdump_symbols(pTHX_ register int argc, register char **argv, register safesysfree(*dup_env); safesysfree(dup_env_base); } -#endif /* NEED_ENVIRON_DUP_FOR_MODIFU */ +#endif /* NEED_ENVIRON_DUP_FOR_MODIFY */ #endif /* USE_ENVIRON_ARRAY */ #ifdef DYNAMIC_ENV_FETCH HvNAME(hv) = savepv(ENV_HV_NAME); |