From ae31e19f92e717919ac8e3db9039eb38d2b89aae Mon Sep 17 00:00:00 2001 From: in2 Date: Thu, 7 Mar 2002 15:13:44 +0000 Subject: Initial revision git-svn-id: http://opensvn.csie.org/pttbbs/pttbbs/trunk/pttbbs@1 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- util/userlist.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 util/userlist.c (limited to 'util/userlist.c') diff --git a/util/userlist.c b/util/userlist.c new file mode 100644 index 00000000..9a142926 --- /dev/null +++ b/util/userlist.c @@ -0,0 +1,48 @@ +/* $id:$ */ +#include +#include +#include +#include +#include +#include "config.h" +#include "pttstruct.h" + +struct utmpfile_t *u; + +int main(int argc, char **argv) { + int i, shm, counter; + + shm = shmget(UTMPSHM_KEY, USHM_SIZE, SHM_R | SHM_W); + if(shm == -1) { + perror("shmget"); + exit(0); + } + + u = shmat(shm, NULL, 0); + if(u == (struct utmpfile_t *)-1) { + perror("shmat"); + exit(0); + } + + if(argc > 1) { + for(i = 1; i < argc; i++) + u->uinfo[atoi(argv[i])].pid = 0; + } else { + for(i = counter = 0; i < USHM_SIZE; i++) + if(u->uinfo[i].pid) { + userinfo_t *f; + + f = &u->uinfo[i]; + printf( + "%4d(%d) p[%d] i[%d] u[%s] n[%s] f[%s] m[%d] d[%d] t[%ld]\n", + ++counter, i, f->pager, f->invisible, f->userid, + f->username, f->from, f->mode, f->mind, f->lastact); + } + printf("\nTotal: %d(%d)\n", counter, u->number); + if(counter != u->number) { + u->number = counter; + printf("adjust user number!\n"); + } + } + return 0; +} -- cgit v1.2.3