Ctrl+Enter 패치하기

2007.04.12 13:03

그리움 조회 수:161 추천:46

출처는 잘 모르겠구요. 암튼 어디에선가 이걸 보긴 봤는데..

^^; 이 소스에 대해서 궁금한거는 질문란에 질문해주세요!
움.. 이거 말고도 Croaky님이 공개한 암호입력 루틴 소스가
있습니다. 그것도 괜찮던데... ^^; 57번 게시물 참조.

int accept_input(fd)
int fd;
{
unsigned char buf[128], lastchar;
int i, n, prev, itail, ihead;

n = read(fd, buf, 127);

if(n<=0) {
               Ply[fd].io->commands = -1; /* Connection dropped */
               disconnect(fd);
}
else {
   ihead = Ply[fd].io->ihead;
   lastchar = 0;
   itail = Ply[fd].io->itail;
   for(i=0; i
       /* Ctrl + Enter 키 입력하는 패치 */
       if(Ply[fd].ply) {
          if(buf[i] == 0)
             buf[i] = '\n';
          else if(buf[i] == 13 && i != n-1 &&
                 (buf[i+1] == '\n' || buf[i+1] == 0))
             buf[i] = '\r';
          else if(buf[i] == 13)
             buf[i] = '\n';
          else if(buf[i] == 10 && i < n-1 && buf[i+1] == 13)
             continue;
          } else {
            if(i > 0 && buf[i] == 0 && buf[i-1] == 13)
             buf[i] = '\n';
            if(buf[i] == 255) continue;
             if(i > 0 && buf[i-1] == 255 &&
               (buf[i] == 251 || buf[i] == 252 || buf[i] == 253
               || buf[i] == 254)) {
               i++;
               continue;
         }
     }
     /* 여기까지가 추가될 내용입니다. */
     /* buf데이터가 char형으로 선언되어 있으나 */
     /* unsigned char형으로 변경함. */

     if(buf[i] > 31 || ((buf[i]&0x80) && (unsigned char)buf[i]!=155) || \
        (buf[i] == '\n' && lastchar != '\r')
        || buf[i] == '\b' ||buf[i]==127) {
       if(buf[i]==127) buf[i]='\b';
       lastchar = buf[i];
       if(buf[i] == '\r') buf[i] = '\n';
       if(buf[i] == '\n') Ply[fd].io->commands++;

                이하 생략....

홈지기 "그륨"


XE Login