| 19 |
#include "editor.h" |
#include "editor.h" |
| 20 |
#include "io.h" |
#include "io.h" |
| 21 |
#include "log.h" |
#include "log.h" |
| 22 |
|
#include "login.h" |
| 23 |
#include "memory_pool.h" |
#include "memory_pool.h" |
| 24 |
#include "str_process.h" |
#include "str_process.h" |
| 25 |
#include <stdlib.h> |
#include <stdlib.h> |
| 730 |
ch = igetch(100); // 0.1 second |
ch = igetch(100); // 0.1 second |
| 731 |
if (ch == KEY_NULL || ch == KEY_TIMEOUT) // Ignore received bytes if no futher input |
if (ch == KEY_NULL || ch == KEY_TIMEOUT) // Ignore received bytes if no futher input |
| 732 |
{ |
{ |
| 733 |
|
#ifdef _DEBUG |
| 734 |
log_error("Ignore %d bytes of incomplete UTF8 character\n", str_len); |
log_error("Ignore %d bytes of incomplete UTF8 character\n", str_len); |
| 735 |
|
#endif |
| 736 |
str_len = 0; |
str_len = 0; |
| 737 |
break; |
break; |
| 738 |
} |
} |
| 744 |
{ |
{ |
| 745 |
BBS_last_access_tm = time(NULL); |
BBS_last_access_tm = time(NULL); |
| 746 |
|
|
| 747 |
|
// Refresh current action while user input |
| 748 |
|
if (user_online_update(NULL) < 0) |
| 749 |
|
{ |
| 750 |
|
log_error("user_online_update(NULL) error\n"); |
| 751 |
|
} |
| 752 |
|
|
| 753 |
if (str_len == 0) // ch >= 32 && ch < 127 |
if (str_len == 0) // ch >= 32 && ch < 127 |
| 754 |
{ |
{ |
| 755 |
input_str[0] = (char)ch; |
input_str[0] = (char)ch; |
| 814 |
{ |
{ |
| 815 |
col_pos = 1; |
col_pos = 1; |
| 816 |
} |
} |
| 817 |
if (ch != CR) |
if (offset_out > 0) |
| 818 |
{ |
{ |
| 819 |
col_pos += (str_len == 1 ? 1 : 2); |
col_pos += (str_len == 1 ? 1 : 2); |
| 820 |
} |
} |
| 839 |
{ |
{ |
| 840 |
BBS_last_access_tm = time(NULL); |
BBS_last_access_tm = time(NULL); |
| 841 |
|
|
| 842 |
|
// Refresh current action while user input |
| 843 |
|
if (user_online_update(NULL) < 0) |
| 844 |
|
{ |
| 845 |
|
log_error("user_online_update(NULL) error\n"); |
| 846 |
|
} |
| 847 |
|
|
| 848 |
if (ch == BACKSPACE) |
if (ch == BACKSPACE) |
| 849 |
{ |
{ |
| 850 |
if (line_current - output_current_row + row_pos <= 0 && col_pos <= 1) // Forbidden |
if (line_current - output_current_row + row_pos <= 0 && col_pos <= 1) // Forbidden |
| 933 |
case KEY_TIMEOUT: |
case KEY_TIMEOUT: |
| 934 |
goto cleanup; |
goto cleanup; |
| 935 |
case Ctrl('W'): |
case Ctrl('W'): |
| 936 |
|
case Ctrl('X'): |
| 937 |
loop = 0; |
loop = 0; |
| 938 |
break; |
break; |
| 939 |
case Ctrl('S'): // Start of line |
case Ctrl('S'): // Start of line |
| 1110 |
col_pos = MIN(col_pos, MAX(1, p_editor_data->display_line_widths[line_current - output_current_row + row_pos])); |
col_pos = MIN(col_pos, MAX(1, p_editor_data->display_line_widths[line_current - output_current_row + row_pos])); |
| 1111 |
clrline(output_current_row, SCREEN_ROWS); |
clrline(output_current_row, SCREEN_ROWS); |
| 1112 |
break; |
break; |
| 1113 |
|
case Ctrl('Q'): |
| 1114 |
case KEY_F1: |
case KEY_F1: |
| 1115 |
if (!show_help) // Not reentrant |
if (!show_help) // Not reentrant |
| 1116 |
{ |
{ |
| 1136 |
|
|
| 1137 |
BBS_last_access_tm = time(NULL); |
BBS_last_access_tm = time(NULL); |
| 1138 |
|
|
| 1139 |
|
// Refresh current action while user input |
| 1140 |
|
if (user_online_update(NULL) < 0) |
| 1141 |
|
{ |
| 1142 |
|
log_error("user_online_update(NULL) error\n"); |
| 1143 |
|
} |
| 1144 |
|
|
| 1145 |
if (input_ok) |
if (input_ok) |
| 1146 |
{ |
{ |
| 1147 |
break; |
break; |