exit의 인자로 숫자가 들어올 때 exit status를 설정해 주기 위해 롱롱 오버플로우 부분을 처리해 줘야 했다. 서로 아이디어를 내 보았다. 눈물의 쇼를 했지만 그냥 atoll하는게 더 낫고 비긴 주소 설정해 주는 귀찮은 짓을 해야 해서 fail이다. 이젠 아쉽지도 않다 ㅋ 오히려 블로그 글감 생겨서 신난다. voidremove_zero_str(char **str)// 밖에서 비긴 저장해두고 프리 해야함 누수 난다 { inti; intminus; minus = 0; if (**str == '-' || **str == '+') { if (**str == '-') minus = 1; (*str)++; } while (**str == '0') (*str)++; if (minus) { *str -= 1;..
토큰화가 끝나고 커맨드 리스트를 만들던 중에 또 팀원들의 의견이 충돌해 서로 짜서 설득시키기로 했다. 이번엔 진짜 깔끔하게 잘했다는 생각이 들어 자신감 넘치게 코드 리뷰를 했는데 argv 처리 과정에서 다른 팀원들의 방법이 더 효율적이었다 크흑... 팀원 a는 redirection type이면 등록하고 삭제해서 argv만 남긴 후에 등록했고, 팀원 b는 미리 argv의 개수를 구해서 할당한 후에 등록하는 방법으로 두 명 다 내 방법보다 malloc을 적게 하여 내가 자진해서 탈락했다....ㅠ 아쉽지만 전에 채택되지 못한 코드보다 더 완성도 높은 코드라서 만족스럽다. argv 개수를 미리 세 주는 생각을 왜 못했을까 너무 아쉽다..... 아쉬워서 일단 업로드.... typedef struct s_list ..
팀원들끼리 죽이 척척 맞았다. liveshare를 사용해서 한 명씩 돌아가면서 코딩하는 짝코딩 방식으로 진행했는데. 한 명이 짜면 세 명이서 오류를 찾아주니 혼자 짤 때보다 훨씬 코드가 정교했다. liveshare를 사용하면 팀원들의 커서가 색깔별로 반짝이는데, 로직이 중복되는 함수를 만들려고 네 명이서 커서 경쟁을 하는 게 엄청 웃겼다. 또, 서로 다르게 생각하는 부분이 생기면 각자 짜서 설득하는 식으로 문제를 해결하다 보니 모두가 행복한 방향으로 갈 수 있었다. 아직 파싱의 3분의 1 정도밖에 안 됐지만 이렇게 눈으로 직접 잘 나뉜 토큰들을 보니 너무 행복했다. 이제 토큰화 끝! 하고 룰루랄라 쉬러 가기 직전에 heredoc에 quotes가 들어올 경우를 생각 못 했단 걸 깨달았다....heredoc..
하 드럽게 어렵다 증말로 스플릿으로 걍 자르면 될 줄 알았지 스터디 중에 파싱을 하기에 앞서 single quote, double quote(' , ")를 처리 중에 약간의 의견 충돌이 있었다. 세 명이서 돌아가며 서로의 방식을 설명하는데 체감 상 4바퀴 정도 빙빙 돌았다. 나도 주관이 강한 편인데 팀원들도 한 가락 하는 분들이라 의견 차이가 좁혀지지 않아, 각자 코드를 짜서 베스트 코드를 정하기로 했다. 한 시간 정도 짜다 보니 반정도 완성이 되었는데, 이건 안 되겠다 생각이 들었다... 중복 quote를 검사하려면 내 방식으로는 예외처리를 하기 힘들어 보였다. 그래도 일단 리뷰는 해야 하니 꾸역꾸역 환경변수 처리부를 제외하고 완성은 했는데, 다른 팀원에 비해 너무 가독성도 안 좋고, 로직도 불안정했다..