| 6 |
* Copyright (C) 2004-2025 Leaflet <leaflet@leafok.com> |
* Copyright (C) 2004-2025 Leaflet <leaflet@leafok.com> |
| 7 |
*/ |
*/ |
| 8 |
|
|
| 9 |
|
#ifdef HAVE_CONFIG_H |
| 10 |
|
#include "config.h" |
| 11 |
|
#endif |
| 12 |
|
|
| 13 |
#include "bbs.h" |
#include "bbs.h" |
| 14 |
#include "ip_mask.h" |
#include "ip_mask.h" |
| 15 |
#include "lml.h" |
#include "lml.h" |
| 28 |
{ |
{ |
| 29 |
BBS_max_sessions_per_user = 10, |
BBS_max_sessions_per_user = 10, |
| 30 |
LAST_LOGIN_DT_MAX_LEN = 50, |
LAST_LOGIN_DT_MAX_LEN = 50, |
| 31 |
|
ASTRO_STR_MAX_LEN = 64, |
| 32 |
|
USER_INFO_MAX_LEN = 8192, |
| 33 |
}; |
}; |
| 34 |
|
|
| 35 |
static int display_user_info_key_handler(int *p_key, DISPLAY_CTX *p_ctx) |
static int display_user_info_key_handler(int *p_key, DISPLAY_CTX *p_ctx) |
| 43 |
int session_cnt = BBS_max_sessions_per_user; |
int session_cnt = BBS_max_sessions_per_user; |
| 44 |
int article_cnt; |
int article_cnt; |
| 45 |
const char *astro_name; |
const char *astro_name; |
| 46 |
char astro_str[LINE_BUFFER_LEN]; |
char astro_str[ASTRO_STR_MAX_LEN]; |
| 47 |
struct tm tm_last_login; |
struct tm tm_last_login; |
| 48 |
char str_last_login_dt[LAST_LOGIN_DT_MAX_LEN + 1]; |
char str_last_login_dt[LAST_LOGIN_DT_MAX_LEN + 1]; |
| 49 |
struct tm tm_last_logout; |
struct tm tm_last_logout; |
| 57 |
const char *user_level_name; |
const char *user_level_name; |
| 58 |
char intro_f[BBS_user_intro_max_len + 1]; |
char intro_f[BBS_user_intro_max_len + 1]; |
| 59 |
int intro_len; |
int intro_len; |
| 60 |
char user_info_f[BUFSIZ]; |
char user_info_f[USER_INFO_MAX_LEN]; |
| 61 |
long line_offsets[BBS_user_intro_max_line + 1]; |
long line_offsets[BBS_user_intro_max_line + 1]; |
| 62 |
long lines; |
long lines; |
| 63 |
char *p; |
char *p; |
| 175 |
p_user_info->username, p_user_info->nickname, p_user_info->visit_count, article_cnt, |
p_user_info->username, p_user_info->nickname, p_user_info->visit_count, article_cnt, |
| 176 |
str_last_login_dt, (session_cnt > 0 ? login_ip : "未知"), p_user_info->exp, |
str_last_login_dt, (session_cnt > 0 ? login_ip : "未知"), p_user_info->exp, |
| 177 |
(session_cnt > 0 ? "在线或因断线不详" : str_last_logout_dt), life, user_level_name, user_level + 1, astro_str, |
(session_cnt > 0 ? "在线或因断线不详" : str_last_logout_dt), life, user_level_name, user_level + 1, astro_str, |
| 178 |
(session_cnt > 0 ? "目前在线,状态如下:\n" : ""), (session_cnt > 0 ? action_str : ""), |
(session_cnt > 0 ? "目前在线,状态如下: \n" : ""), (session_cnt > 0 ? action_str : ""), |
| 179 |
(intro_len > 0 ? "\033[0;36m个人说明档如下:\033[m" : "\033[0;36m没有个人说明档\033[m"), |
(intro_len > 0 ? "\033[0;36m个人说明档如下: \033[m" : "\033[0;36m没有个人说明档\033[m"), |
| 180 |
intro_f); |
intro_f); |
| 181 |
|
|
| 182 |
lines = split_data_lines(user_info_f, SCREEN_COLS + 1, line_offsets, MIN(SCREEN_ROWS - 1, BBS_user_intro_max_line + 8), 1, NULL); |
lines = split_data_lines(user_info_f, SCREEN_COLS + 1, line_offsets, MIN(SCREEN_ROWS - 1, BBS_user_intro_max_line + 8), 1, NULL); |