env.c 859 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "sh.h"
  2. char *get_tenv(char *var)
  3. {
  4. int i;
  5. i = -1;
  6. while (g_tenv[++i] != NULL)
  7. if (ft_strcmp(g_tenv[i], var) == 61)
  8. return (ft_strchr(g_tenv[i], '=') + 1);
  9. return (NULL);
  10. }
  11. void ft_setenv(char *namevalue)
  12. {
  13. char **name;
  14. name = ft_strsplit(namevalue, '=');
  15. if (namevalue == NULL || isenv(name[0]) == 0)
  16. error_message("setenv use", "setenv ENV=env", NULL);
  17. else
  18. {
  19. if (get_tenv(name[0]) != NULL)
  20. del_env(name[0]);
  21. add_env(namevalue);
  22. }
  23. }
  24. void ft_unsetenv(char *name)
  25. {
  26. if (name == NULL || isenv(name) == 0)
  27. error_message("unsetenv use", "unsetenv ENV", NULL);
  28. else if (get_tenv(name) != NULL)
  29. del_env(name);
  30. }
  31. int isenv(char *str)
  32. {
  33. int i;
  34. i = -1;
  35. while (str[++i] != '\0')
  36. if (str[i] < 'A' || ('Z' < str[i] && str[i] < '_') ||
  37. ('_' < str[i] && str[i] < 'a') || str[i] > 'z')
  38. return (0);
  39. return (1);
  40. }