며칠 전에 FreeBSD 소스 커미터가 되신 김정욱님(jkim)과 메일을 주고 받다가 전에 최준호님과 찾아봤던 ko_KR.eucKR에서의 Vim 커서 이동 문제를 얘기했습니다. 그 당시에는 mblen(3)이 FreeBSD에서만 에러난 상황에서 stateful하게 구현되어 있는데,
POSIX에서는 그런 상황이 명시적으로 정의되어 있지 않아서, FreeBSD가 잘못한건지 vim이 잘못한건지 잘 모르겠다는 판단을 하였습니다. 그런데, 김종욱님께서 표준에 정의되지 않은 행동방식에 의존적인 사용을 하는 vim의 잘못이라고 말씀을 해 주시는군요. 아앗. 그럴수가. 그렇게 생각할 수도 있구나. 하며 순간 백년묵은 체증이 사라지는 듯한.. ;;
vim은 패치가 엄청나게 자주 나오고 포트에서도 다 그걸 넣는 편이라, 따로 vim 포트에서 로컬 패치를 넣을 필요는 없을 것 같고 그냥 메인스트림에 바로 넣기로 마음먹고 버그 보고 메일을 보냈습니다. 일본 사람들도 한참 두리번하다가 해결 못한 것인데 곧 고쳐지면 좋겠군요~ 🙂
vim의 저자인 Bram이 Vim7에 적용했다고 답장을 보내 주었습니다. 🙂
“일본 사람들도 한참 두리번하다가 해결 못한..” 이 문구가 참 맘에 드네요;; – _ -;;
근데,,
jkim님의 성함이 ‘김종욱’ 인가요? ‘김정욱’ 인가요? @.@?
김정욱입니다. -_-;;
안녕하세요??
저 이번에 회사를 옮기면서 FreeBSD를 처음 접하게 되었습니다 ㅠ
한국 자료는 턱없이 부족한 터라 고난중인데
혹시 도움을 좀 받을 수 있을런지요?
제가 FreeBSD를 안 쓴지가 너무 오래돼서.. 도움을 드릴 수 있을지 모르겠네요.. ^^;
아주 사소하지만
– (void)mblen(NULL, 0);
+ (void)mblen((char *)NULL, (size_t)0);
이게 더 정확한 것 같네요.
킁. 성함을 잘못 썼네요; 고쳤습니다. ^^;
NULL같은 경우에는 void 포인터는 implicit casting이 허용되어 있으니 쓸 필요가 없을 것 같고, 0도 모든 scalar type에 대해서 implicit casting이 허용되어 있으니, 원래 코드가 더 간단할 것 같습니다. 🙂
두 곳 중 한 곳만 고치셨네요. 😉
Casting 문제는 NULL이나 0인 경우 문제가 없습니다만 정확히 하는 게 좋을 것 같아서요. Implicit casting 자꾸하면 버릇 됩니다. 6^_^;