summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rw-r--r--util/Makefile7
-rw-r--r--util/indexuser.c41
2 files changed, 46 insertions, 2 deletions
diff --git a/util/Makefile b/util/Makefile
index 0fc23f70..bfe6429f 100644
--- a/util/Makefile
+++ b/util/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.12 2002/06/06 21:35:23 in2 Exp $
+# $Id: Makefile,v 1.13 2002/07/17 17:09:20 ptt Exp $
BBSHOME?=$(HOME)
OSTYPE?=linux
@@ -30,7 +30,7 @@ CPROGS= bbsmail BM_money post account birth deluserfile expire mandex\
poststat showboard antispam countalldice webgrep bbsrf\
initbbs outmail xchatd userlist tunepasswd buildir reaper shmsweep\
merge_passwd merge_board inndBM buildAnnounce rmuid \
- toplazyBM jungo toplazyBBM shmctl mdclean splitpasswd
+ toplazyBM jungo toplazyBBM shmctl mdclean splitpasswd indexuser
PROGS= $(CPROGS) BM_money.sh backpasswd.sh mailog.sh opendice.sh\
openticket.sh stock.sh topsong.sh weather.sh stock.perl weather.perl\
@@ -87,6 +87,9 @@ openticket: openticket.c $(OBJS)
topusr: topusr.c $(OBJS)
$(CC) $(CFLAGS) -o $@ $@.c $(OBJS)
+indexuser: indexuser.c $(OBJS)
+ $(CC) $(CFLAGS) -o $@ $@.c $(OBJS)
+
yearsold: yearsold.c $(OBJS)
$(CC) $(CFLAGS) -o $@ $@.c $(OBJS)
diff --git a/util/indexuser.c b/util/indexuser.c
new file mode 100644
index 00000000..c626303b
--- /dev/null
+++ b/util/indexuser.c
@@ -0,0 +1,41 @@
+#include "bbs.h"
+#define INDEXPATH BBSHOME"/index"
+
+unsigned string_hash(unsigned char *s)
+{
+ unsigned int v = 0;
+ while (*s)
+ {
+ v = (v << 8) | (v >> 24);
+ v ^= toupper(*s++); /* note this is case insensitive */
+ }
+ return (v * 2654435769UL) >> (32 - HASH_BITS);
+}
+
+
+int main()
+{
+ int j;
+ userec_t u;
+ char buf[256];
+
+ if(passwd_mmap())
+ {
+ printf("Sorry, the data is not ready.\n");
+ exit(0);
+ }
+ system("rm -f "INDEXPATH"/realname/* ");
+ system("rm -f "INDEXPATH"/email/* ");
+ system("rm -f "INDEXPATH"/ident/* ");
+ for(j = 1; j <= MAX_USERS; j++) {
+ passwd_query(j, &u);
+ if(!u.userid[0]) continue;
+ sprintf(buf,INDEXPATH"/realname/%X",string_hash(u.realname));
+ append_record(buf, &j, sizeof(j));
+ sprintf(buf,INDEXPATH"/email/%X",string_hash(u.email));
+ append_record(buf, &j, sizeof(j));
+ sprintf(buf,INDEXPATH"/ident/%X",string_hash(u.ident));
+ append_record(buf, &j, sizeof(j));
+ }
+ return 0;
+}