| 49 |
} |
} |
| 50 |
|
|
| 51 |
p_mp_editor_data = memory_pool_init(sizeof(EDITOR_DATA), 1, 1); |
p_mp_editor_data = memory_pool_init(sizeof(EDITOR_DATA), 1, 1); |
| 52 |
if (p_mp_data_line == NULL) |
if (p_mp_editor_data == NULL) |
| 53 |
{ |
{ |
| 54 |
log_error("Memory pool init error\n"); |
log_error("Memory pool init error\n"); |
| 55 |
return -3; |
return -3; |
| 83 |
|
|
| 84 |
if (p_data == NULL) |
if (p_data == NULL) |
| 85 |
{ |
{ |
| 86 |
log_error("editor_data_load() error: NULL pointer\n"); |
log_error("NULL pointer error\n"); |
| 87 |
return NULL; |
return NULL; |
| 88 |
} |
} |
| 89 |
|
|
| 150 |
|
|
| 151 |
if (p_editor_data == NULL || p_data == NULL) |
if (p_editor_data == NULL || p_data == NULL) |
| 152 |
{ |
{ |
| 153 |
log_error("editor_data_save() error: NULL pointer\n"); |
log_error("NULL pointer error\n"); |
| 154 |
return -1; |
return -1; |
| 155 |
} |
} |
| 156 |
|
|
| 224 |
|
|
| 225 |
if (p_editor_data == NULL || p_last_updated_line == NULL) |
if (p_editor_data == NULL || p_last_updated_line == NULL) |
| 226 |
{ |
{ |
| 227 |
log_error("editor_data_op() error: NULL pointer\n"); |
log_error("NULL pointer error\n"); |
| 228 |
return -1; |
return -1; |
| 229 |
} |
} |
| 230 |
|
|
| 462 |
|
|
| 463 |
if (p_editor_data == NULL || p_last_updated_line == NULL) |
if (p_editor_data == NULL || p_last_updated_line == NULL) |
| 464 |
{ |
{ |
| 465 |
log_error("editor_data_op() error: NULL pointer\n"); |
log_error("NULL pointer error\n"); |
| 466 |
return -1; |
return -1; |
| 467 |
} |
} |
| 468 |
|
|
| 504 |
{ |
{ |
| 505 |
str_len = 1; |
str_len = 1; |
| 506 |
} |
} |
| 507 |
else if (p_data_line[offset_data_line] & 0b10000000) // head of multi-byte character |
else if (p_data_line[offset_data_line] & 0x80) // head of multi-byte character |
| 508 |
{ |
{ |
| 509 |
str_len = 1; |
str_len = 1; |
| 510 |
c = (p_data_line[offset_data_line] & 0b01110000) << 1; |
c = (p_data_line[offset_data_line] & 0x70) << 1; |
| 511 |
while (c & 0b10000000) |
while (c & 0x80) |
| 512 |
{ |
{ |
| 513 |
str_len++; |
str_len++; |
| 514 |
c = (c & 0b01111111) << 1; |
c = (c & 0x7f) << 1; |
| 515 |
} |
} |
| 516 |
} |
} |
| 517 |
else |
else |
| 705 |
ch = igetch_t(MAX_DELAY_TIME); |
ch = igetch_t(MAX_DELAY_TIME); |
| 706 |
while (!SYS_server_exit) |
while (!SYS_server_exit) |
| 707 |
{ |
{ |
| 708 |
|
if (ch != KEY_NULL && ch != KEY_TIMEOUT) |
| 709 |
|
{ |
| 710 |
|
BBS_last_access_tm = time(NULL); |
| 711 |
|
} |
| 712 |
|
|
| 713 |
// extended key handler |
// extended key handler |
| 714 |
if (editor_display_key_handler(&ch, &ctx) != 0) |
if (editor_display_key_handler(&ch, &ctx) != 0) |
| 715 |
{ |
{ |
| 716 |
goto cleanup; |
goto cleanup; |
| 717 |
} |
} |
| 718 |
|
|
| 719 |
if (ch < 256 && (ch & 0b10000000)) // head of multi-byte character |
if (ch < 256 && (ch & 0x80)) // head of multi-byte character |
| 720 |
{ |
{ |
| 721 |
str_len = 0; |
str_len = 0; |
| 722 |
c = (char)(ch & 0b11110000); |
c = (char)(ch & 0xf0); |
| 723 |
while (c & 0b10000000) |
while (c & 0x80) |
| 724 |
{ |
{ |
| 725 |
input_str[str_len] = (char)(ch - 256); |
input_str[str_len] = (char)(ch - 256); |
| 726 |
str_len++; |
str_len++; |
| 727 |
c = (c & 0b01111111) << 1; |
c = (c & 0x7f) << 1; |
| 728 |
|
|
| 729 |
if ((c & 0b10000000) == 0) // Input completed |
if ((c & 0x80) == 0) // Input completed |
| 730 |
{ |
{ |
| 731 |
break; |
break; |
| 732 |
} |
} |
| 747 |
if ((ch >= 32 && ch < 127) || str_len >= 2 || // Printable character or multi-byte character |
if ((ch >= 32 && ch < 127) || str_len >= 2 || // Printable character or multi-byte character |
| 748 |
ch == CR || ch == KEY_ESC) // Special character |
ch == CR || ch == KEY_ESC) // Special character |
| 749 |
{ |
{ |
|
BBS_last_access_tm = time(NULL); |
|
|
|
|
| 750 |
// Refresh current action while user input |
// Refresh current action while user input |
| 751 |
if (user_online_update(NULL) < 0) |
if (user_online_update(NULL) < 0) |
| 752 |
{ |
{ |
| 840 |
} |
} |
| 841 |
else if (ch == KEY_DEL || ch == BACKSPACE) // Del |
else if (ch == KEY_DEL || ch == BACKSPACE) // Del |
| 842 |
{ |
{ |
|
BBS_last_access_tm = time(NULL); |
|
|
|
|
| 843 |
// Refresh current action while user input |
// Refresh current action while user input |
| 844 |
if (user_online_update(NULL) < 0) |
if (user_online_update(NULL) < 0) |
| 845 |
{ |
{ |
| 931 |
switch (ch) |
switch (ch) |
| 932 |
{ |
{ |
| 933 |
case KEY_NULL: |
case KEY_NULL: |
| 934 |
|
log_error("KEY_NULL\n"); |
| 935 |
|
goto cleanup; |
| 936 |
case KEY_TIMEOUT: |
case KEY_TIMEOUT: |
| 937 |
|
log_error("User input timeout\n"); |
| 938 |
goto cleanup; |
goto cleanup; |
| 939 |
case Ctrl('W'): |
case Ctrl('W'): |
| 940 |
case Ctrl('X'): |
case Ctrl('X'): |
| 1138 |
break; |
break; |
| 1139 |
} |
} |
| 1140 |
|
|
|
BBS_last_access_tm = time(NULL); |
|
|
|
|
| 1141 |
// Refresh current action while user input |
// Refresh current action while user input |
| 1142 |
if (user_online_update(NULL) < 0) |
if (user_online_update(NULL) < 0) |
| 1143 |
{ |
{ |