| 71 |
{"BBS_NET", "站点穿梭"}, |
{"BBS_NET", "站点穿梭"}, |
| 72 |
{"CHICKEN", "电子小鸡"}, |
{"CHICKEN", "电子小鸡"}, |
| 73 |
{"EDIT_ARTICLE", "修改文章"}, |
{"EDIT_ARTICLE", "修改文章"}, |
| 74 |
|
{"LOGIN", "进入大厅"}, |
| 75 |
{"MENU", "菜单选择"}, |
{"MENU", "菜单选择"}, |
| 76 |
{"POST_ARTICLE", "撰写文章"}, |
{"POST_ARTICLE", "撰写文章"}, |
| 77 |
{"REPLY_ARTICLE", "回复文章"}, |
{"REPLY_ARTICLE", "回复文章"}, |
| 78 |
{"USER_LIST", "查花名册"}, |
{"USER_LIST", "查花名册"}, |
| 79 |
{"USER_ONLINE", "环顾四周"}, |
{"USER_ONLINE", "环顾四周"}, |
| 80 |
{"VIEW_ARTICLE", "阅读文章"}, |
{"VIEW_ARTICLE", "阅读文章"}, |
| 81 |
{"VIEW_FILE", "查看文档"}}; |
{"VIEW_FILE", "查看文档"}, |
| 82 |
|
{"WWW", "Web浏览"}}; |
| 83 |
|
|
| 84 |
const int user_action_map_size = 11; |
const int user_action_map_size = sizeof(user_action_map) / sizeof(USER_ACTION_MAP); |
| 85 |
|
|
| 86 |
static int user_list_try_rd_lock(int semid, int wait_sec); |
static int user_list_try_rd_lock(int semid, int wait_sec); |
| 87 |
static int user_list_try_rw_lock(int semid, int wait_sec); |
static int user_list_try_rw_lock(int semid, int wait_sec); |
| 207 |
strncpy(p_list->users[i].session_id, row[0], sizeof(p_list->users[i].session_id) - 1); |
strncpy(p_list->users[i].session_id, row[0], sizeof(p_list->users[i].session_id) - 1); |
| 208 |
|
|
| 209 |
p_list->users[i].session_id[sizeof(p_list->users[i].session_id) - 1] = '\0'; |
p_list->users[i].session_id[sizeof(p_list->users[i].session_id) - 1] = '\0'; |
| 210 |
if (query_user_info(atoi(row[1]), &(p_list->users[i].user_info)) <= 0) |
if ((ret = query_user_info(atoi(row[1]), &(p_list->users[i].user_info))) < 0) |
| 211 |
{ |
{ |
| 212 |
log_error("query_user_info(%d) error\n", atoi(row[1])); |
log_error("query_user_info(%d) error\n", atoi(row[1])); |
| 213 |
continue; |
continue; |
| 214 |
} |
} |
| 215 |
|
else if (ret == 0) // Guest |
| 216 |
|
{ |
| 217 |
|
p_list->users[i].user_info.uid = 0; |
| 218 |
|
strncpy(p_list->users[i].user_info.username, "guest", sizeof(p_list->users[i].user_info.username) - 1); |
| 219 |
|
p_list->users[i].user_info.username[sizeof(p_list->users[i].user_info.username) - 1] = '\0'; |
| 220 |
|
strncpy(p_list->users[i].user_info.nickname, "Guest", sizeof(p_list->users[i].user_info.nickname) - 1); |
| 221 |
|
p_list->users[i].user_info.nickname[sizeof(p_list->users[i].user_info.nickname) - 1] = '\0'; |
| 222 |
|
p_list->users[i].user_info.gender = 'M'; |
| 223 |
|
p_list->users[i].user_info.gender_pub = 0; |
| 224 |
|
p_list->users[i].user_info.life = 150; |
| 225 |
|
p_list->users[i].user_info.exp = 0; |
| 226 |
|
p_list->users[i].user_info.signup_dt = 0; |
| 227 |
|
p_list->users[i].user_info.last_login_dt = 0; |
| 228 |
|
p_list->users[i].user_info.birthday = 0; |
| 229 |
|
} |
| 230 |
|
|
| 231 |
strncpy(p_list->users[i].ip, row[2], sizeof(p_list->users[i].ip) - 1); |
strncpy(p_list->users[i].ip, row[2], sizeof(p_list->users[i].ip) - 1); |
| 232 |
p_list->users[i].ip[sizeof(p_list->users[i].ip) - 1] = '\0'; |
p_list->users[i].ip[sizeof(p_list->users[i].ip) - 1] = '\0'; |
| 236 |
p_list->users[i].current_action_title = NULL; |
p_list->users[i].current_action_title = NULL; |
| 237 |
if (p_list->users[i].current_action[0] == '\0') |
if (p_list->users[i].current_action[0] == '\0') |
| 238 |
{ |
{ |
| 239 |
p_list->users[i].current_action_title = "Web浏览"; |
p_list->users[i].current_action_title = ""; |
| 240 |
} |
} |
| 241 |
else if (trie_dict_get(p_trie_action_dict, p_list->users[i].current_action, (int64_t *)(&(p_list->users[i].current_action_title))) < 0) |
else if (trie_dict_get(p_trie_action_dict, p_list->users[i].current_action, (int64_t *)(&(p_list->users[i].current_action_title))) < 0) |
| 242 |
{ |
{ |