BBS 会话信息
BBS的用户相关的东西。这块非常复杂,分成好几个部分。
UTMP
UTMPHEAD
struct UTMPHEAD {
int next[USHM_SIZE];
int hashhead[UTMP_HASHSIZE + 1]; /* use UCACHE_HASHSIZE/32 */
int number;
int listhead;
int list_prev[USHM_SIZE]; /* sorted list prev ptr */
int list_next[USHM_SIZE]; /* sorted list next ptr */
time_t uptime;
};
static struct UTMPHEAD *utmphead;
utmphead其实指向一块shared memory,key = UTMP_SHMKEY
UTMPHEAD结构/数据由UtmpHead类处理,全都为GetXXX/SetXXX形式。
utmp.c
- get_utmpshm_addr()
- Utmp.utmpshm
- longlock [(int signo)]
- inside Utmp.Lock()
- utmp_lock
- Utmp.Lock()
- utmp_unlock [(int fd)]
- Utmp.Unlock()
- utmp_setreadonly [(int readonly)]
- UtmpHead.SetReadOnly()
- detach_utmp
仅在WWW中使用。
- resolve_utmp
- Utmp.Init()
- utmp_hash [(const char *userid)]
- Utmp.Hash()
logloop
- getnewutmpent [(struct user_info *up)]
- Utmp.GetNewUtmpEntry()
- getnewutmpent2 [(struct user_info *up)]
仅在WWW中使用。
rebuild_list [(struct user_info *up, char *arg, int p)] apply_ulist [(APPLY_UTMP_FUNC fptr, void *arg)] apply_ulist_addr [(APPLY_UTMP_FUNC fptr, void *arg)] apply_utmpuid [(APPLY_UTMP_FUNC fptr, int uid, void *arg)] apply_utmp [(APPLY_UTMP_FUNC fptr, int maxcount,const char *userid, void *arg)] search_ulist [(struct user_info *uentp, int (*fptr) (int, struct user_info *), int farg)]
- clear_utmp2 [(int uent)]
- Utmp.Clear()
clear_utmp [(int uent, int useridx, int pid)]
- get_utmp_number
- UtmpHead.GetNumber()
get_utmpent [(int utmpnum)] get_utmpent_num [(struct user_info *uent)] cmpfuid [(const void*a,const void*b)] getfriendstr [(struct userec* user,struct user_info* puinfo)] myfriend [(int uid, char *fexp)] hisfriend [(int uid,struct user_info* him)]
ucache.c
- ucache_lock
- ucache_unlock [(int fd)]
ucache_hashinit ucache_hash_deep [(const char *userid)] ucache_hash [(const char *userid)]
fillucache [(struct userec *uentp, int *number, int *prev)] flush_ucache load_ucache
- resolve_ucache
- UCache.Init()
detach_ucache
getuserid [(char *userid, int uid)]
setuserid_internal [(int num, const char *userid)] setuserid2 [(int num, const char *userid)] setuserid [(int num, const char *userid)] searchnewuser
- searchuser [(const char *userid)]
- UCache.SearchUser()
- getuser [(const char *userid, struct userec **user)]
- UCache.GetUser()
getuserid2 [(int uid)] u_namearray [(char buf[][IDLEN + 1], int *pnum, char *tag)] getnewuserid3 [(char *userid)] getnewuserid2 [(char *userid)]
- getuserbynum [(int num)]
- UCache.GetUserByUid()
getnewuserid [(char *userid)] update_user [(struct userec *user, int num, int all)] apply_users [(int (*fptr) (struct userec *, char *), char *arg)] get_giveupinfo [(char* userid,int* basicperm,int s[10][2])] save_giveupinfo [(struct userec* lookupuser,int lcount,int s[10][2])] setcachehomefile [(char* path,const char* user,int unum,char* file)] init_cachedata [(const char* userid,int unum)] flush_cachedata [(const char* userid)] clean_cachedata [(const char* userid,int unum)] do_after_login [(struct userec* user,int unum,int mode)] do_after_logout [(struct userec* user,struct user_info* userinfo,int unum,int mode)]
自定义User Title相关
load_user_title flush_user_title get_user_title [(unsigned char titleidx)] set_user_title [(unsigned char titleidx,char* newtitle)]
WWW相关
longlock [(int signo)] www_guest_lock www_guest_unlock [(int fd)] resolve_guest_table