Changeset 3691

Show
Ignore:
Timestamp:
10/23/08 14:22:24 (3 months ago)
Author:
oxygene
Message:

make escape code handling for serial terminal more robust

Signed-off-by: Patrick Georgi <patrick.georgi@…>
Acked-by: Marc Jones <marc.jones@…>

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/payloads/libpayload/curses/keyboard.c

    r3662 r3691  
    5151   pass it to dedicated vt100 code */ 
    5252 
    53 static int getkeyseq(char *buffer, int len) 
     53static int getkeyseq(char *buffer, int len, int max) 
    5454{ 
    5555        int i; 
    5656 
    57         for(i = 0; i < 75; i++) { 
    58                 if (serial_havechar()) 
    59                         break; 
    60                 mdelay(1); 
     57        while (1) { 
     58                for(i = 0; i < 75; i++) { 
     59                        if (serial_havechar()) 
     60                                break; 
     61                        mdelay(1); 
     62                } 
     63 
     64                if (i == 75) 
     65                        return len; 
     66 
     67                buffer[len++] = serial_getchar(); 
     68                if (len == max) 
     69                        return len; 
    6170        } 
    62  
    63         if (i == 75) 
    64                 return len; 
    65  
    66         buffer[len++] = serial_getchar(); 
    67         return getkeyseq(buffer, len); 
    6871} 
    6972 
     
    100103{ 
    101104        char buffer[5]; 
    102         int len = getkeyseq(buffer, 0); 
     105        int len = getkeyseq(buffer, 0, sizeof(buffer)); 
    103106        int i, t; 
    104107