42seoul

[42서울] 2월 16일(화) 레포트

Jueun Park 2021. 2. 16. 19:10

학습 날짜 : 2021-02-16(화)

학습시간 : 9:30 ~ 18:00(자가)

학습 범위 및 주제 : minishell(3Circle)

동료 학습 방법 : Discord에서 미팅하면서 같이 공부

학습 목표 : cd 구현

상세 학습 내용:

- [x]  cd ../srcs
- [x]  cd ~
- [x]  cd
- [x]  cd ..
- [x]  cd ../

내일 아침에 해야할 것:

- [ ]  cd ~/Documents
- [ ]  cd -
- [ ]  old pwd 처리

구현되어 있는 코드(수정 전)

#include "minishell.h"
static char *get_path(char *dest, char *pwd, t_list *env_list)
{
char *path;
char *tmp;

path = NULL;
if ((ft_strncmp(dest, "..", ft_strlen(dest)) == 0))
path = ft_strdup("..");
else if ((ft_strncmp(dest, "~", ft_strlen(dest)) == 0))
{
tmp = ft_strdup(get_list_data(env_list, "HOME"));
path = ft_strdup(&tmp[5]);
free(tmp);
}
else
path = ft_strdup(dest);
return (path);
}

static int renew_old_pwd(char **old_one, char *new_one)
{
free(*old_one);
*old_one = ft_strdup(new_one);
return 0;
}

static int go_path(char *dest, t_list *env_list, char **old_pwd)
{
char *path;
char *pwd;
int ret;
char s[100];

ret = 0;
path = NULL;
if (ft_strncmp(dest, "-", ft_strlen(dest)) == 0)
printf("%s\n", "before");
else
{
if (!(pwd = get_list_data(env_list, "PWD")))
ret = 1;
if (ret == 0 && !(path = get_path(dest, pwd, env_list)))
ret = 1;
if (ret == 0 && (renew_old_pwd(old_pwd, pwd)))
ret = 1;
}

printf("path: %s\n", path);
if (ret == 0 && path)
{
//if (ret == 0 && (modify_list_data(&env_list, "PWD", path)))
// ret = 1;
     printf("%s\n", getcwd(s, 100));
chdir(path);
     printf("%s\n", getcwd(s, 100));
}
return (ret);
}

int handle_cmd_cd(t_list *arg_list, t_list *env_list, char **old_pwd)
{
int ret;
t_list *arg;

ret = 0;
arg = arg_list;
while (arg->next)
{
arg = arg->next;
go_path(arg->data, env_list, old_pwd);
}
if (arg == arg_list)
go_path("~", env_list, old_pwd);
return ret;
}

학습 내용에 대한 개인적인 총평 :

어제 추웠는지 컨디션이 별로라서 많이 공부는 못했다. 오늘은 6시 정도까지 공부하다가 저녁먹고 운동감. 앞으로 학교 갈 수 있게 되면 공동으로 하는 프로젝트는 더 편할 것 같다.

실제 코딩한 시간 : 5시간

다음 학습 계획 :

-cub3d 보너스 제외하고 이번주~다음주 사이에 다 끝내기
-minishell은 지금처럼 열심히 하기

2월에 할 일

*cub3d
*minishell
*오픈소스 기여