diff options
author | ptt <ptt@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-03-31 00:50:34 +0800 |
---|---|---|
committer | ptt <ptt@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-03-31 00:50:34 +0800 |
commit | 98acb18b8e6b7d7bfdd49809774e61328ef7f7a5 (patch) | |
tree | e1f04943a2f84e4755ee13de50aa1f6acde2d951 /mbbsd/passwd.c | |
parent | eb94f525ab29b0c82e70fa895d2e343047fefd26 (diff) | |
download | pttbbs-98acb18b8e6b7d7bfdd49809774e61328ef7f7a5.tar pttbbs-98acb18b8e6b7d7bfdd49809774e61328ef7f7a5.tar.gz pttbbs-98acb18b8e6b7d7bfdd49809774e61328ef7f7a5.tar.bz2 pttbbs-98acb18b8e6b7d7bfdd49809774e61328ef7f7a5.tar.lz pttbbs-98acb18b8e6b7d7bfdd49809774e61328ef7f7a5.tar.xz pttbbs-98acb18b8e6b7d7bfdd49809774e61328ef7f7a5.tar.zst pttbbs-98acb18b8e6b7d7bfdd49809774e61328ef7f7a5.zip |
add mmap to cuser get ride of passwd_update
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1640 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/passwd.c')
-rw-r--r-- | mbbsd/passwd.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/mbbsd/passwd.c b/mbbsd/passwd.c index 777fd23a..95a3b39b 100644 --- a/mbbsd/passwd.c +++ b/mbbsd/passwd.c @@ -122,6 +122,36 @@ passwd_index_query(int num, userec_t * buf) return 0; } +int initcuser(char *userid) +{ + int pwdfd; + userec_t buf; + char path[256]; + // Ptt: setup cuser and usernum here + if(userid[0]=='\0') return -1; + if(!(usernum = searchuser(userid)) || usernum > MAX_USERS) return -1; + + sethomefile(path, userid, ".passwd"); + if((pwdfd = open(path, O_RDONLY)) < 0) + { + if(passwd_index_query(usernum, &buf)<0) + exit(1); + passwd_update(usernum, &buf); + if((pwdfd = open(path, O_RDONLY)) < 0) exit(1); + } + cuser = (userec_t *) mmap(NULL, sizeof(userec_t), PROT_READ, MAP_SHARED, + pwdfd, 0); + + if(cuser == (userec_t *) -1) exit(1); + close(pwdfd); + return usernum; +} + +int freecuser() +{ + return munmap(cuser, sizeof(userec_t)); +} + int passwd_query(int num, userec_t * buf) { |