/[LeafOK_CVS]/lbbs/src/screen.c
ViewVC logotype

Diff of /lbbs/src/screen.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.136 by sysadm, Thu Dec 18 10:43:48 2025 UTC Revision 1.138 by sysadm, Sun Dec 28 01:46:21 2025 UTC
# Line 165  static int _str_input(char *buffer, int Line 165  static int _str_input(char *buffer, int
165                  {                  {
166                          continue;                          continue;
167                  }                  }
168                  else if (ch == BACKSPACE)                  else if (ch == BACKSPACE || ch == KEY_DEL)
169                  {                  {
170                          if (offset > 0)                          if (offset > 0)
171                          {                          {
# Line 209  static int _str_input(char *buffer, int Line 209  static int _str_input(char *buffer, int
209                                  ch = igetch(100);                                                // 0.1 second                                  ch = igetch(100);                                                // 0.1 second
210                                  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
211                                  {                                  {
212                                          log_debug("Ignore %d bytes of incomplete UTF8 character\n", str_len);                                          log_debug("Ignore %d bytes of incomplete UTF8 character", str_len);
213                                          str_len = 0;                                          str_len = 0;
214                                          break;                                          break;
215                                  }                                  }
# Line 223  static int _str_input(char *buffer, int Line 223  static int _str_input(char *buffer, int
223    
224                          if (mbstowcs(wcs, input_str, 1) == (size_t)-1)                          if (mbstowcs(wcs, input_str, 1) == (size_t)-1)
225                          {                          {
226                                  log_error("mbstowcs() error\n");                                  log_error("mbstowcs() error");
227                          }                          }
228                          if (offset + str_len > buf_size - 1 || display_len + (UTF8_fixed_width ? 2 : wcwidth(wcs[0])) > max_display_len) // No enough space for Chinese character                          if (offset + str_len > buf_size - 1 || display_len + (UTF8_fixed_width ? 2 : wcwidth(wcs[0])) > max_display_len) // No enough space for Chinese character
229                          {                          {
# Line 356  int get_data(int row, int col, char *pro Line 356  int get_data(int row, int col, char *pro
356    
357                                          if (mbstowcs(wcs, buffer + offset, 1) == (size_t)-1)                                          if (mbstowcs(wcs, buffer + offset, 1) == (size_t)-1)
358                                          {                                          {
359                                                  log_error("mbstowcs() error\n");                                                  log_error("mbstowcs() error");
360                                          }                                          }
361                                          wc_len = (UTF8_fixed_width ? 2 : wcwidth(wcs[0]));                                          wc_len = (UTF8_fixed_width ? 2 : wcwidth(wcs[0]));
362    
# Line 430  int get_data(int row, int col, char *pro Line 430  int get_data(int row, int col, char *pro
430    
431                                          if (mbstowcs(wcs, buffer + offset, 1) == (size_t)-1)                                          if (mbstowcs(wcs, buffer + offset, 1) == (size_t)-1)
432                                          {                                          {
433                                                  log_error("mbstowcs() error\n");                                                  log_error("mbstowcs() error");
434                                          }                                          }
435                                          wc_len = (UTF8_fixed_width ? 2 : wcwidth(wcs[0]));                                          wc_len = (UTF8_fixed_width ? 2 : wcwidth(wcs[0]));
436    
# Line 462  int get_data(int row, int col, char *pro Line 462  int get_data(int row, int col, char *pro
462    
463                                          if (mbstowcs(wcs, buffer + offset, 1) == (size_t)-1)                                          if (mbstowcs(wcs, buffer + offset, 1) == (size_t)-1)
464                                          {                                          {
465                                                  log_error("mbstowcs() error\n");                                                  log_error("mbstowcs() error");
466                                          }                                          }
467                                          wc_len = (UTF8_fixed_width ? 2 : wcwidth(wcs[0]));                                          wc_len = (UTF8_fixed_width ? 2 : wcwidth(wcs[0]));
468    
# Line 531  int get_data(int row, int col, char *pro Line 531  int get_data(int row, int col, char *pro
531                                  ch = igetch(100);                                                // 0.1 second                                  ch = igetch(100);                                                // 0.1 second
532                                  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
533                                  {                                  {
534                                          log_debug("Ignore %d bytes of incomplete UTF8 character\n", str_len);                                          log_debug("Ignore %d bytes of incomplete UTF8 character", str_len);
535                                          str_len = 0;                                          str_len = 0;
536                                          break;                                          break;
537                                  }                                  }
# Line 545  int get_data(int row, int col, char *pro Line 545  int get_data(int row, int col, char *pro
545    
546                          if (mbstowcs(wcs, input_str, 1) == (size_t)-1)                          if (mbstowcs(wcs, input_str, 1) == (size_t)-1)
547                          {                          {
548                                  log_error("mbstowcs() error\n");                                  log_error("mbstowcs() error");
549                          }                          }
550                          wc_len = (UTF8_fixed_width ? 2 : wcwidth(wcs[0]));                          wc_len = (UTF8_fixed_width ? 2 : wcwidth(wcs[0]));
551    
# Line 703  int display_data(const void *p_data, lon Line 703  int display_data(const void *p_data, lon
703                                          // Refresh current action                                          // Refresh current action
704                                          if (user_online_update(NULL) < 0)                                          if (user_online_update(NULL) < 0)
705                                          {                                          {
706                                                  log_error("user_online_update(NULL) error\n");                                                  log_error("user_online_update(NULL) error");
707                                          }                                          }
708                                  }                                  }
709    
# Line 716  int display_data(const void *p_data, lon Line 716  int display_data(const void *p_data, lon
716                                  switch (ch)                                  switch (ch)
717                                  {                                  {
718                                  case KEY_NULL:                                  case KEY_NULL:
719                                          log_debug("KEY_NULL\n");                                          log_debug("KEY_NULL");
720                                          goto cleanup;                                          goto cleanup;
721                                  case KEY_TIMEOUT:                                  case KEY_TIMEOUT:
722                                          log_debug("User input timeout\n");                                          log_debug("User input timeout");
723                                          goto cleanup;                                          goto cleanup;
724                                  case KEY_HOME:                                  case KEY_HOME:
725                                          if (line_current - output_current_row < 0) // Reach begin                                          if (line_current - output_current_row < 0) // Reach begin
# Line 829  int display_data(const void *p_data, lon Line 829  int display_data(const void *p_data, lon
829                  len = p_line_offsets[line_current + 1] - p_line_offsets[line_current];                  len = p_line_offsets[line_current + 1] - p_line_offsets[line_current];
830                  if (len >= sizeof(buffer))                  if (len >= sizeof(buffer))
831                  {                  {
832                          log_error("Buffer overflow: len=%ld(%ld - %ld) line=%ld \n",                          log_error("Buffer overflow: len=%ld(%ld - %ld) line=%ld ",
833                                            len, p_line_offsets[line_current + 1], p_line_offsets[line_current], line_current);                                            len, p_line_offsets[line_current + 1], p_line_offsets[line_current], line_current);
834                          len = sizeof(buffer) - 1;                          len = sizeof(buffer) - 1;
835                  }                  }
836                  else if (len < 0)                  else if (len < 0)
837                  {                  {
838                          log_error("Incorrect line offsets: len=%ld(%ld - %ld) line=%ld \n",                          log_error("Incorrect line offsets: len=%ld(%ld - %ld) line=%ld ",
839                                            len, p_line_offsets[line_current + 1], p_line_offsets[line_current], line_current);                                            len, p_line_offsets[line_current + 1], p_line_offsets[line_current], line_current);
840                          len = 0;                          len = 0;
841                  }                  }
# Line 880  int display_file(const char *filename, i Line 880  int display_file(const char *filename, i
880    
881          if ((p_shm = get_file_shm_readonly(filename, &data_len, &line_total, &p_data, &p_line_offsets)) == NULL)          if ((p_shm = get_file_shm_readonly(filename, &data_len, &line_total, &p_data, &p_line_offsets)) == NULL)
882          {          {
883                  log_error("get_file_shm(%s) error\n", filename);                  log_error("get_file_shm(%s) error", filename);
884                  return KEY_NULL;                  return KEY_NULL;
885          }          }
886    
887          if (user_online_update("VIEW_FILE") < 0)          if (user_online_update("VIEW_FILE") < 0)
888          {          {
889                  log_error("user_online_update(VIEW_FILE) error\n");                  log_error("user_online_update(VIEW_FILE) error");
890          }          }
891    
892          ret = display_data(p_data, line_total, p_line_offsets, eof_exit, display_file_key_handler, DATA_READ_HELP);          ret = display_data(p_data, line_total, p_line_offsets, eof_exit, display_file_key_handler, DATA_READ_HELP);
893    
894          if (detach_file_shm(p_shm) < 0)          if (detach_file_shm(p_shm) < 0)
895          {          {
896                  log_error("detach_file_shm(%s) error\n", filename);                  log_error("detach_file_shm(%s) error", filename);
897          }          }
898    
899          return ret;          return ret;
# Line 1006  int show_active_board() Line 1006  int show_active_board()
1006          {          {
1007                  if ((p_shm = get_file_shm_readonly(DATA_ACTIVE_BOARD, &data_len, &line_total, &p_data, &p_line_offsets)) == NULL)                  if ((p_shm = get_file_shm_readonly(DATA_ACTIVE_BOARD, &data_len, &line_total, &p_data, &p_line_offsets)) == NULL)
1008                  {                  {
1009                          log_error("get_file_shm(%s) error\n", DATA_ACTIVE_BOARD);                          log_error("get_file_shm(%s) error", DATA_ACTIVE_BOARD);
1010                          return KEY_NULL;                          return KEY_NULL;
1011                  }                  }
1012          }          }
# Line 1028  int show_active_board() Line 1028  int show_active_board()
1028                  len = p_line_offsets[line_current + 1] - p_line_offsets[line_current];                  len = p_line_offsets[line_current + 1] - p_line_offsets[line_current];
1029                  if (len >= LINE_BUFFER_LEN)                  if (len >= LINE_BUFFER_LEN)
1030                  {                  {
1031                          log_error("buffer overflow: len=%ld(%ld - %ld) line=%ld \n",                          log_error("buffer overflow: len=%ld(%ld - %ld) line=%ld ",
1032                                            len, p_line_offsets[line_current + 1], p_line_offsets[line_current], line_current);                                            len, p_line_offsets[line_current + 1], p_line_offsets[line_current], line_current);
1033                          len = LINE_BUFFER_LEN - 1;                          len = LINE_BUFFER_LEN - 1;
1034                  }                  }


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1