From f1af3fe8ebcb506cd78e907d48fbf8f4868164d8 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 23 Jul 1996 19:18:10 +0000 Subject: Added simple-minded (i.e. leaking :-) putenv() interface, if os has it. --- Modules/posixmodule.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index e843cfe..8e56661 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -1596,6 +1596,30 @@ posix_ftruncate(self, args) } #endif +#ifdef HAVE_PUTENV +static object * +posix_putenv(self,args) + object *self; + object *args; +{ + char *s1, *s2; + char *new; + + if (!newgetargs(args, "ss", &s1, &s2)) + return NULL; + /* XXX This leaks memory -- not easy to fix :-( */ + if ((new = malloc(strlen(s1) + strlen(s2) + 2)) == NULL) + return err_nomem(); + (void) sprintf(new, "%s=%s", s1, s2); + if (putenv(new)) { + posix_error(); + return NULL; + } + INCREF(None); + return None; +} +#endif + static struct methodlist posix_methods[] = { {"chdir", posix_chdir}, {"chmod", posix_chmod}, @@ -1717,6 +1741,9 @@ static struct methodlist posix_methods[] = { #ifdef HAVE_FTRUNCATE {"ftruncate", posix_ftruncate, 1}, #endif +#ifdef HAVE_PUTENV + {"putenv", posix_putenv, 1}, +#endif {NULL, NULL} /* Sentinel */ }; -- cgit v0.12