setenv.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /*
  2. * Copyright (c) 2010 Dagobert Michelsen
  3. * Copyright (c) 2010 Nicholas Marriott <nicholas.marriott@gmail.com>
  4. *
  5. * Permission to use, copy, modify, and distribute this software for any
  6. * purpose with or without fee is hereby granted, provided that the above
  7. * copyright notice and this permission notice appear in all copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  10. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  11. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  12. * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  13. * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
  14. * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
  15. * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  16. */
  17. #include <stdlib.h>
  18. #include <string.h>
  19. #include "tmux.h"
  20. int
  21. setenv(const char *name, const char *value, unused int overwrite)
  22. {
  23. char *newval;
  24. xasprintf(&newval, "%s=%s", name, value);
  25. return (putenv(newval));
  26. }
  27. int
  28. unsetenv(const char *name)
  29. {
  30. char **envptr;
  31. int namelen;
  32. namelen = strlen(name);
  33. for (envptr = environ; *envptr != NULL; envptr++) {
  34. if (strncmp(name, *envptr, namelen) == 0 &&
  35. ((*envptr)[namelen] == '=' || (*envptr)[namelen] == '\0'))
  36. break;
  37. }
  38. for (; *envptr != NULL; envptr++)
  39. *envptr = *(envptr + 1);
  40. return (0);
  41. }