home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume39 / tcp_wrappers / part03 / setenv.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-09-29  |  931 b   |  35 lines

  1.  /*
  2.   * Some systems do not have setenv(). This one is modeled after 4.4 BSD, but
  3.   * is implemented in terms of portable primitives only: getenv(), putenv()
  4.   * and malloc(). It should therefore be safe to use on every UNIX system.
  5.   * 
  6.   * If clobber == 0, do not overwrite an existing variable.
  7.   * 
  8.   * Returns nonzero if memory allocation fails.
  9.   * 
  10.   * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
  11.   */
  12.  
  13. #ifndef lint
  14. static char sccsid[] = "@(#) setenv.c 1.1 93/03/07 22:47:58";
  15. #endif
  16.  
  17. /* setenv - update or insert environment (name,value) pair */
  18.  
  19. int     setenv(name, value, clobber)
  20. char   *name;
  21. char   *value;
  22. int     clobber;
  23. {
  24.     char   *malloc();
  25.     char   *getenv();
  26.     char   *cp;
  27.  
  28.     if (clobber == 0 && getenv(name) != 0)
  29.     return (0);
  30.     if ((cp = malloc(strlen(name) + strlen(value) + 2)) == 0)
  31.     return (1);
  32.     sprintf(cp, "%s=%s", name, value);
  33.     return (putenv(cp));
  34. }
  35.