summaryrefslogtreecommitdiffstats
path: root/mbbsd/passwd.c
diff options
context:
space:
mode:
authorptt <ptt@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-03-31 00:50:34 +0800
committerptt <ptt@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-03-31 00:50:34 +0800
commit98acb18b8e6b7d7bfdd49809774e61328ef7f7a5 (patch)
treee1f04943a2f84e4755ee13de50aa1f6acde2d951 /mbbsd/passwd.c
parenteb94f525ab29b0c82e70fa895d2e343047fefd26 (diff)
downloadpttbbs-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.c30
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)
{