문제의 에러코드를 이용해 소스 확인 fileio.c |
오류 메시지의 해당 소스 |
mch_open()이라는 함수의 실패로 인한 오류 메시지였음. |
mch_open()은 open() 함수 |
open()의 man page |
open()의 man page, mode와 관련된 부분. |
DosBox에서 Vim으로 새로운 파일을 만들어 본다. |
내용을 입력하고 저장 |
정상적으로 저장이 되었음 |
Ubuntu의 file system에서 확인해 보면 파일의 권한이 644임을 알 수 있음 |
Vim에서는 수정이 안되지만, edit라는 다른 프로그램으로 수정을 함 |
정상적으로 수정이 되었음을 알 수 있다 |
어째서 vim 계열의 프로그램들만 파일의 수정에 문제가 생기는 것일까?
(vim외에도 elvis라는 프로그램도 문제가 발생한다.)
어째서 다른 에디터로는 문제가 없는 것일까?
이 문제의 원인을 어떻게 찾아낼 것인가?
MS-DOS 상에서 소스를 빌드하고 디버깅을 해야 할까?
DOSBox를 디버그 모드로 실행하고 MS-DOS Interrupt를 break point로 해서 확인을 해야 할까?
이 문제의 원인을 찾아내서 문제의 원인이 DOSBox인 경우, vim인 경우에 각각 어떻게 할 것인가?
아니다 이 문제는 DOSBox 뿐 아니라 Virtual Box의 경우에도 발생하므로 vim의 문제로 보는 것이 맞을 것이다.
단지, vim에서 FAT을 기준으로 작동하는 코드, 그리고 Linux상의 MS-DOS 에뮬레이터들이 FAT을 다루는 부분이 서로 충돌해서 빚어진 것이 아닐까 싶다.
댓글 없음:
댓글 쓰기