Show
Ignore:
Timestamp:
02/07/08 03:35:28 (6 years ago)
Author:
Theo Schlossnagle <jesus@omniti.com>
git-committer:
Theo Schlossnagle <jesus@omniti.com> 1202355328 +0000
git-parent:

[3efe34af0c1fa7bc6ac79a30bc5991554390a520]

git-author:
Theo Schlossnagle <jesus@omniti.com> 1202355328 +0000
Message:

first hack at non-blocking support

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/noitedit/term.c

    rbafab25 r5b6ccbe  
    280280 
    281281 
    282 private FILE *term_outfile = NULL;      /* XXX: How do we fix that? */ 
    283  
    284  
    285282/* term_setflags(): 
    286283 *      Set the terminal capability flags 
     
    289286term_setflags(EditLine *el) 
    290287{ 
     288        el_multi_set_el(el); 
    291289        EL_FLAGS = 0; 
    292290        if (el->el_tty.t_tabs) 
     
    354352                return (-1); 
    355353        (void) memset(el->el_term.t_val, 0, T_val * sizeof(int)); 
    356        term_outfile = el->el_outfile
     354        el_multi_set_el(el)
    357355        term_init_arrow(el); 
    358356        if (term_set(el, NULL) == -1) 
     
    451449        coord_t *c = &el->el_term.t_size; 
    452450 
     451        el_multi_set_el(el); 
    453452        term_free_display(el); 
    454453 
     
    531530{ 
    532531        int del; 
    533 #if _WIN32 
    534         if (win32_native_console()) { 
    535                 win32_move_to_line(el, where - el->el_cursor.v); 
    536                 el->el_cursor.v = where;/* now where is here */ 
    537                 return; 
    538         } 
    539 #endif 
     532        el_multi_set_el(el); 
    540533 
    541534        if (where == el->el_cursor.v) 
     
    594587{ 
    595588        int del, i; 
    596 #if _WIN32 
    597         if (win32_native_console()) { 
    598                 win32_move_to_char(el, where); 
    599                 return; 
    600         } 
    601 #endif 
     589        el_multi_set_el(el); 
    602590 
    603591mc_again: 
     
    687675term_overwrite(EditLine *el, char *cp, int n) 
    688676{ 
     677        el_multi_set_el(el); 
    689678        if (n <= 0) 
    690679                return;         /* catch bugs */ 
     
    729718term_deletechars(EditLine *el, int num) 
    730719{ 
     720        el_multi_set_el(el); 
    731721        if (num <= 0) 
    732722                return; 
     
    771761term_insertwrite(EditLine *el, char *cp, int num) 
    772762{ 
     763        el_multi_set_el(el); 
    773764        if (num <= 0) 
    774765                return; 
     
    833824{ 
    834825        int i; 
    835 #ifdef _WIN32 
    836         if (win32_native_console()) { 
    837                 win32_term_clear_EOL(); 
    838                 return; 
    839         } 
    840 #endif 
     826        el_multi_set_el(el); 
    841827        if (EL_CAN_CEOL && GoodStr(T_ce)) 
    842828                (void) tputs(Str(T_ce), 1, term__putc); 
     
    855841term_clear_screen(EditLine *el) 
    856842{                               /* clear the whole screen and home */ 
    857 #if _WIN32 
    858         if (win32_native_console()) { 
    859                 win32_term_clear_screen(); 
    860                 return; 
    861         } 
    862 #endif 
     843        el_multi_set_el(el); 
    863844        if (GoodStr(T_cl)) 
    864845                /* send the clear screen code */ 
     
    881862term_beep(EditLine *el) 
    882863{ 
     864        el_multi_set_el(el); 
    883865        if (GoodStr(T_bl)) 
    884866                /* what termcap says we should use */ 
     
    896878term_clear_to_bottom(EditLine *el) 
    897879{ 
     880        el_multi_set_el(el); 
    898881        if (GoodStr(T_cd)) 
    899882                (void) tputs(Str(T_cd), Val(T_li), term__putc); 
     
    924907        (void) sigprocmask(SIG_BLOCK, &nset, &oset); 
    925908#endif 
    926  
     909        el_multi_set_el(el); 
    927910        area = buf; 
    928911 
    929 #if _WIN32 
    930         term = win32_native_console() ? "pcansi" : "xterm"; 
    931 #else 
    932912        if (term == NULL) 
    933913                term = getenv("TERM"); 
     
    938918        if (strcmp(term, "emacs") == 0) 
    939919                el->el_flags |= EDIT_DISABLED; 
    940 #endif 
    941920 
    942921        memset(el->el_term.t_cap, 0, TC_BUFSIZE); 
     
    12721251term__putc(int c) 
    12731252{ 
    1274  
    1275         return (fputc(c, term_outfile)); 
     1253        EditLine *el; 
     1254        el = el_multi_get_el(); 
     1255        if(!el) return -1; 
     1256        return (fputc(c, el->el_outfile)); 
    12761257} 
    12771258 
     
    12831264term__flush(void) 
    12841265{ 
    1285  
    1286         (void) fflush(term_outfile); 
     1266        EditLine *el; 
     1267        el = el_multi_get_el(); 
     1268        if(!el) return; 
     1269        (void) fflush(el->el_outfile); 
    12871270} 
    12881271 
     
    12981281        char **ts; 
    12991282        char upbuf[EL_BUFSIZ]; 
     1283 
     1284        el_multi_set_el(el); 
    13001285 
    13011286        (void) fprintf(el->el_outfile, "\n\tYour terminal has the\n"); 
     
    13401325        how = argv[2]; 
    13411326 
     1327        el_multi_set_el(el); 
    13421328        /* 
    13431329         * Do the strings first 
     
    14151401        long i; 
    14161402 
     1403        el_multi_set_el(el); 
    14171404        area = buf; 
    14181405 
     
    14631450                (void) fprintf(el->el_outfile, fmtd, 0); 
    14641451#else 
    1465                 (void) fprintf(el->el_outfile, fmtd, el->el_tty.t_speed); 
     1452                (void) fprintf(el->el_outfile, fmtd, (int)el->el_tty.t_speed); 
    14661453#endif 
    14671454                return (0);