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
*오픈소스 기여