Advertisement
Guest User

cd.c

a guest
May 26th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.51 KB | None | 0 0
  1. /*
  2. ** EPITECH PROJECT, 2019
  3. ** PSU_minishell2_2018
  4. ** File description:
  5. ** cd
  6. */
  7.  
  8. #include "../../include/my.h"
  9. #include <fcntl.h>
  10.  
  11. void go_back_directory(env_t *env)
  12. {
  13.     int i = my_strlen(find_node(env, "PWD")->content) - 1;
  14.  
  15.     for (; find_node(env, "PWD")->content[i] != '/' &&
  16.         find_node(env, "PWD")->content[i] != '\0'; i--);
  17.     find_node(env, "PWD")->content[i] = '\0';
  18. }
  19.  
  20. void cd_opener(env_t *env, command_t *cmd)
  21. {
  22.     int pass = 0;
  23.  
  24.     (my_strcmp(cmd->args[1], "..") == 0) ? go_back_directory(env) : 0;
  25.     if (chdir(cmd->args[1]) == -1 && my_strcmp(cmd->args[1], "-") == 0) {
  26.         my_putstr(cmd->args[1]);
  27.         if (open(cmd->args[1], O_RDONLY) != -1) {
  28.             my_putstr(": Not a directory.\n");
  29.             pass = 1;
  30.         } else {
  31.             my_putstr(": No such file or directory.\n");
  32.             pass = 1;
  33.         }
  34.         if (pass == 0) {
  35.             my_strcat(find_node(env, "PWD")->content, cmd->args[1]);
  36.             printf("%s\n", find_node(env, "PWD")->content);
  37.         }
  38.     }
  39. }
  40.  
  41. void cd_chdir(env_t *env)
  42. {
  43.     if (chdir(find_node(env, "HOME")->content) == -1) {
  44.         my_putstr(find_node(env, "HOME")->content);
  45.         if (open(find_node(env, "HOME")->content, O_RDONLY) != -1)
  46.             my_putstr(": Not a directory.\n");
  47.         else
  48.             my_putstr(": No such file or directory.\n");
  49.     }
  50. }
  51.  
  52. void cd_cmd(env_t *env, command_t *cmd)
  53. {
  54.     if (cmd->args[1] != NULL)
  55.         cd_opener(env, cmd);
  56.     else
  57.         cd_chdir(env);
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement