![]() |
SetFileAttr() |
단지, 내가 추가한 부분에 걸리지 않았던 것 뿐.
DOS_SetFileAttr()이 호출되면 중간에는 아무런 문제가 없이 마지막의 GetFileAttr()까지 오는 것이었다.
하지만 소스에서 보듯이 GetFileAttr()은 함수포인터로 호출되므로 정확한 파일 이름을 알 수가 없다.
![]() |
GetFileAttr() 검색 |
확인해 본 결과 이번 경우에는 drive_local.cpp에 있는 함수가 호출되는 것을 알게 되었다.
그래서 GetFileAttr()에 메시지 추가.
문제가 발생하는 부분은 stat()함수가 실패했기 때문이었다.
![]() |
GetFileAttr() |
![]() |
stat() 도움말 |
![]() |
stat() 도움말 (계속) |
![]() |
stat() 도움말 (계속) |
다시 빌드하고 디버그 메시지 확인...
![]() |
메시지를 봐도 특별히 이상한 점은 찾을 수가 없다.
위의 stat()에 대한 도움말을 읽어 보니, 실패했을 경우에는 errno에 에러 코드를 설정한다고 한다.
그래서 메시지에 errno의 값을 함께 출력하도록 수정.
![]() |
GetFileAttr()에 메시지 추가 |
디버그 메시지로 출력된 errno의 값은 2.
![]() |
debug 출력 |
errno = 2는 "No such file or directory"...
파일이 없다니....
![]() |
errno 값의 의미 |
완전히 막혀버린 상황.
stat() 함수는 기본적인 C 함수이기 때문에, 더 이상의 디버깅을 해도 소용이 없게 된다.
이 문제는 vim의 문제도 아니고 DOSBox의 문제도 아닌 Ubuntu의 문제가 되기 때문이다.
지금으로썬 Ubuntu(혹은 Linux)에서의 DOSBox는 문제가 있다는 것으로 결론을 내릴 수 밖에 없다.
댓글 없음:
댓글 쓰기