diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 1997-04-08 00:29:19 +0000 |
---|---|---|
committer | <> | 2013-02-25 15:20:59 +0000 |
commit | f8d9d05cfb1ea783457a14d3cf7fdf4d8fa450f2 (patch) | |
tree | 058251f5aa8af2365812daa56d936e91720a6027 /setenv.c | |
download | tcp-wrappers-master.tar.gz |
Imported from /home/lorry/working-area/delta_tcp-wrappers/tcp_wrappers_7.6.tar.gz.HEADtcp_wrappers_7.6master
Diffstat (limited to 'setenv.c')
-rw-r--r-- | setenv.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/setenv.c b/setenv.c new file mode 100644 index 0000000..03c7062 --- /dev/null +++ b/setenv.c @@ -0,0 +1,34 @@ + /* + * Some systems do not have setenv(). This one is modeled after 4.4 BSD, but + * is implemented in terms of portable primitives only: getenv(), putenv() + * and malloc(). It should therefore be safe to use on every UNIX system. + * + * If clobber == 0, do not overwrite an existing variable. + * + * Returns nonzero if memory allocation fails. + * + * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands. + */ + +#ifndef lint +static char sccsid[] = "@(#) setenv.c 1.1 93/03/07 22:47:58"; +#endif + +/* setenv - update or insert environment (name,value) pair */ + +int setenv(name, value, clobber) +char *name; +char *value; +int clobber; +{ + char *malloc(); + char *getenv(); + char *cp; + + if (clobber == 0 && getenv(name) != 0) + return (0); + if ((cp = malloc(strlen(name) + strlen(value) + 2)) == 0) + return (1); + sprintf(cp, "%s=%s", name, value); + return (putenv(cp)); +} |