Henry's Notebook
Many strange things
搜索
菜单
导航
首页
最近更改
随机页面
帮助
Henry's Home
个人资料
个人资料
创建账户
登录
消息
目前您没有通知。请访问您的
讨论页
以查看过去消息。
页面工具
内容页面
讨论
查看源代码
历史
首页
»
页面s
查看“BBS 好友列表”的源代码
←
BBS 好友列表
页面上次由
HenryHu
编辑于12年前
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:emailconfirmed
您可以查看与复制此页面的源代码。
[[Category:BBS 代码分析]] = UI部分 = 入口函数:src/list.c deal_key() = 逻辑部分 = == friends == <source lang="c"> // 部分 struct user_info { /* Structure used in UTMP file */ int active; /* When allocated this field is true */ int uid; /* Used to find user name in passwd file */ int pid; /* kill() to notify user of talk request */ // ... int friendsnum; int friends_uid[MAXFRIENDS]; #ifdef FRIEND_MULTI_GROUP unsigned int friends_p[MAXFRIENDS]; #endif // ... }; struct user_info *user_record[USHM_SIZE]; // friends文件就是这个东西的一个数组 struct friends { char id[13]; // 用户名 char exp[LEN_FRIEND_EXP]; // 昵称,默认为空 #ifdef FRIEND_MULTI_GROUP int groupid; #endif }; struct friends_info { char exp[LEN_FRIEND_EXP]; // 存储昵称用 }; struct friends_info* topfriend; // 存储了好友的昵称 // 次序按照用户名经过处理排序后的,对照userinfo.friends_uid </source> == utmp.c == ; cmpfuid [(const void*a,const void*b)] * Friend.NCaseId() ; getfriendstr [(struct userec* user,struct user_info* puinfo)] * User.GetFriends() ; myfriend [(int uid, char *fexp)] * UserInfo.HasFriend() ; hisfriend [(int uid,struct user_info* him)] * UserInfo.HasFriend() == list.c == === TERM显示相关 === ; print_title ; print_title2 ; print_user_info_title ; show_message [(char *msg)] ; pagerchar [(int usernum, struct user_info *user, int pager, int *isfriend)] ; msgchar [(struct user_info *uin, int *isfriend)] ; do_userlist 显示user list。 ; show_userlist 显示user list。调用do_userlist。如果需要刷新则调用fill_userlist()。 ; deal_key ; deal_key2 按键处理。 ; printuent [(struct userec *uentp, char *arg)] 显示用户信息。 ; Show_Users 调用printuent显示所有用户信息。 do_query [(int star, int curr)] do_query2 [(int star, int curr)] ; Users 初始化user_data,调Show_Users显示用户,deal_key2接收按键,do_query2执行。 ; t_friends 调用show_userlist显示好友,deal_key接收按键,do_query执行。 ; t_users 调用show_userlist显示用户,deal_key接收按键,do_query执行。 ; t_rusers 调用t_users显示用户,显示真实用户名。 ; choose [(int update, int defaultn, int (*title_show) (), int (*key_deal) (), int (*list_show) (), int (*read) (),int(*read2)())] 显示、选择、执行函数。 ; setlistrange [(int i)] 设定显示范围。 ; readuser [(int star, int curr)] 调用display_userinfo显示/修改用户信息。 === user_record相关 === update_data [(void *data)] ; swap_user_record 交换user_record两项。 ; sort_user_record 排序user_record ; full_utmp [(struct user_info *uentp, int *count)] 填充user_record一项。 ; fill_userlist 调用full_utmp(),填充user_record ; countusers [(struct userec *uentp, char *arg)] ; allusers 调用countusers()数用户数量。
返回至
BBS 好友列表
。