커피닉스, 시스템 엔지니어의 쉼터
  ncftp에서 한글 사용 (글 dk) 작성일 : 2003/12/12 00:59
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 8624
     
    ncftp 3.1.6에서는 아래 글처럼 getline.c 의 gl_getc() 함수가
    unsigned char ch; 로 정의되어 있어 한글 지원이 잘 됩니다.
    또한 ncftp처럼 편리한 lftp( http://lftp.yar.ru/ )는 한글 지원이 잘 됩니다.
    - 좋은진호(truefeel)

    출처 : 리눅스 사랑넷, http://linux-sarang.net/board/?p=read&table=tip&no=8862

    -----------------------------------------------------------------------------------
    2520번: ncftp에서 한글 쓰기
    글쓴이: dk    글쓴날: 2003-02-16 13:25:43    읽은수: 854


    http://www.ncftp.com에서 받은 순수한 ncftp에서는 한글 입력을 하면 바로 종료가 됩니다.
    (윈도우(win2k)용은 방금 테스트해보니 관계가 없네요.)

    그동안 debian에서는 담당 메인테이너분이 GNU readline을 쓰겠금 패치를 꾸준히 해왔던 모양입니다. sid의 현재 3.1.5버전의 ncftp는 이 패치가 적용이 안되있어서 불편하네요.


    소스를 받아서 풀어보니깐 GNU readline을 쓰지 않을 것이라고 못박아 둔 부분도 보이네요.
    그런데 정말 우습게도 소스 코드 한 줄만 고치는 것만으로 한글입력이 되길래 이렇게 팁을 씁니다. -_-;


    ncftp-3.1.5/ncftp/getline.c 의 gl_getc() 함수에서
    char ch;
    부분을
    unsigned char ch;
    로 바꾸시면 됩니다.

    아무리 한줄이라지만 patch 파일이 더 직관적인 것 같습니다. -_-;
    http://linuxstudy.pe.kr/~donkey/patchdul/ncftp-3.1.5-dk0.1.patch.gz

    GNU readline만큼 좋은 것은 아니겠지만 사용에 별다른 지장은 없어보입니다.
    다만 패스워드를 적을 때 별표가 나오는 것이 좀 맘에 안들고, 2바이트 문자를 지우려면 백스페이스 두 번을 눌러야 하는 불편함이 있네요.

    (
    readline이란?
    우리가 배쉬처럼 명령이나 문장을 입력할 때 줄을 편집할 수 있게금(방향키로 글자 사이를 이동할 수 있게금해주고, 지울 수 있게해주는 것)도와주는 라이브러리, 또한 히스토리 기능이 있어 이전에 썼던 내용을 다시 불러 올 수도 있다.
    http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html
    )

    -----------------------------------------------------------------------------------
    2520번 글의 답장글: RE: RE: ncftp에서 한글 쓰기
    글쓴이: dk    글쓴날: 2003-02-15 01:03:15    읽은수: 353


    gl_getc()에서 char로 받고 int로 캐스팅하는 부분이 있는데요.
    한글의 1바이트는 결과 값이 음이 됩니다.
    getline()함수가 gl_getc() 를 호출하고 음의 값을 받으면 NULL을 봔환하는데, 결론적으로 ReadLine()함수가 getline()를 호출할 때 NULL을 반환 받을 경우, EOF문자를 받은 것으로 판단하고 정상적(!!)으로 종료해버립니다.

    그래서 char대신 (양의 값이 되겠금) unsigned char로 받게 한 건데 제대로 고친 것인지는 아직 잘 모르겠네요.


    : 헐. 문자형을 256bytes 까지 받게 함으로서 한글 사용이 되어버리다니.
    :
    : ^^; 간단하지만 무척 유용하네요. ^^


    커피닉스, 시스템 엔지니어의 쉼터 / URL : http://coffeenix.net/board_view.php?bd_code=147