Changes in owl.c [6fe806a:eebef19]
Legend:
- Unmodified
- Added
- Removed
-
owl.c
r6fe806a reebef19 48 48 #include <termios.h> 49 49 #include <sys/stat.h> 50 #include <locale.h>51 50 #include "owl.h" 52 51 … … 70 69 owl_editwin *tw; 71 70 owl_popwin *pw; 72 int ret, initialsubs, debug, argcsave, followlast; 73 owl_input j; 71 int j, ret, initialsubs, debug, argcsave, followlast; 74 72 int newmsgs, nexttimediff; 75 73 struct sigaction sigact; … … 86 84 int newstderr; 87 85 #endif 88 89 if (!GLIB_CHECK_VERSION (2, 12, 0))90 g_error ("GLib version 2.12.0 or above is needed.");91 86 92 87 argcsave=argc; … … 97 92 debug=0; 98 93 initialsubs=1; 99 100 setlocale(LC_ALL, "");101 102 94 if (argc>0) { 103 95 argv++; … … 538 530 * little bit, but otherwise do not. This lets input be grabbed 539 531 * as quickly as possbile */ 540 j .ch =wgetch(typwin);541 if (j .ch ==ERR) {532 j=wgetch(typwin); 533 if (j==ERR) { 542 534 usleep(10000); 543 535 } else { 544 j.uch = '\0'; 545 if (j.ch >= KEY_MIN && j.ch <= KEY_MAX) { 546 /* This is a curses control character. */ 547 } 548 else if (j.ch > 0x7f && j.ch < 0xfe) { 549 /* Pull in a full utf-8 character. */ 550 int bytes, i; 551 char utf8buf[7]; 552 memset(utf8buf, '\0', 7); 553 554 utf8buf[0] = j.ch; 555 556 if ((j.ch & 0xc0) && (~j.ch & 0x20)) bytes = 2; 557 else if ((j.ch & 0xe0) && (~j.ch & 0x10)) bytes = 3; 558 else if ((j.ch & 0xf0) && (~j.ch & 0x08)) bytes = 4; 559 else if ((j.ch & 0xf8) && (~j.ch & 0x04)) bytes = 5; 560 else if ((j.ch & 0xfc) && (~j.ch & 0x02)) bytes = 6; 561 else bytes = 1; 562 563 for (i = 1; i < bytes; i++) { 564 int tmp = wgetch(typwin); 565 /* If what we got was not a byte, or not a continuation byte */ 566 if (tmp > 0xff || !(tmp & 0x80 && ~tmp & 0x40)) { 567 /* ill-formed UTF-8 code unit subsequence, put back the 568 char we just got. */ 569 ungetch(tmp); 570 j.ch = ERR; 571 break; 572 } 573 utf8buf[i] = tmp; 574 } 575 576 if (j.ch != ERR) { 577 if (g_utf8_validate(utf8buf, -1, NULL)) { 578 j.uch = g_utf8_get_char(utf8buf); 579 } 580 else { 581 j.ch = ERR; 582 } 583 } 584 } 585 else if (j.ch <= 0x7f) { 586 j.uch = j.ch; 587 } 588 589 owl_global_update_lastinputtime(&g); 536 owl_global_set_lastinputtime(&g, now); 590 537 /* find and activate the current keymap. 591 538 * TODO: this should really get fixed by activating
Note: See TracChangeset
for help on using the changeset viewer.