lst.c 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include "sh.h"
  2. t_list *g_lenv;
  3. //lst.c
  4. /*char *get_env(t_list *en, char *var);
  5. void listchainify();//
  6. void tabify(t_list *en);//
  7. int lstsize(t_list *en);//
  8. void ft_putlist(t_list *elem);//
  9. int delenv(t_list *env, char *name);*/
  10. char *get_env(t_list *env, char *var)
  11. {
  12. if (ft_strcmp(env->content, var) == 61)
  13. return (ft_strchr(env->content, '=') + 1);
  14. if (env->next != NULL)
  15. return (get_env(env->next, var));
  16. return (NULL);
  17. }
  18. void listchainify(void)
  19. {
  20. int i;
  21. i = 0;
  22. while (g_tenv[i] != NULL)
  23. i++;
  24. while (--i >= 0)
  25. ft_lstadd(&g_lenv, ft_lstnew(g_tenv[i], sizeof(char *)));
  26. }
  27. void tabify(t_list *en)
  28. {
  29. int j;
  30. int i;
  31. if (g_lenv == NULL)
  32. return ;
  33. i = lstsize(g_lenv);
  34. g_tenv = (char **)malloc(sizeof(char *) * (i + 1));
  35. j = -1;
  36. while (++j < i)
  37. {
  38. g_tenv[j] = ft_strdup(en->content);
  39. en = en->next;
  40. }
  41. g_tenv[j] = NULL;
  42. }
  43. int lstsize(t_list *env)
  44. {
  45. int i;
  46. i = 1;
  47. while (1)
  48. {
  49. i++;
  50. env = env->next;
  51. if (env->next == NULL)
  52. break ;
  53. }
  54. return (i);
  55. }
  56. void ft_putlist(t_list *elem)
  57. {
  58. if (elem->content_size == 8)
  59. ft_putendl(elem->content);
  60. }
  61. int delenv(t_list *env, char *name)
  62. {
  63. if (ft_strcmp(env->content, name) == 61)
  64. return (1);
  65. else if (env->next != NULL)
  66. if (delenv(env->next, name) == 1)
  67. env->next = env->next->next;
  68. return (0);
  69. }
  70. //setenv
  71. /*
  72. else
  73. {
  74. if (get_tenv(name[0]) != NULL)
  75. if (delenv(g_lenv, name[0]) == 1)
  76. *g_lenv = *g_lenv->next;
  77. ft_lstadd(&g_lenv, ft_lstnew(namevalue, 8));
  78. }*/
  79. //unsetenv
  80. /* else
  81. {
  82. if (delenv(g_lenv, name) == 1)
  83. *g_lenv = *g_lenv->next;
  84. }*/