summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-04-02 12:23:34 +0800
committerin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-04-02 12:23:34 +0800
commit2090666ec7d9c2369fc58fcc3eeb7229a635a3b8 (patch)
tree543080820a3ea98b4c0c9727a78e0967c6b3a07b
parent10d06155e35a9cd7e33ec478da50f9c87ea096c2 (diff)
downloadpttbbs-2090666ec7d9c2369fc58fcc3eeb7229a635a3b8.tar
pttbbs-2090666ec7d9c2369fc58fcc3eeb7229a635a3b8.tar.gz
pttbbs-2090666ec7d9c2369fc58fcc3eeb7229a635a3b8.tar.bz2
pttbbs-2090666ec7d9c2369fc58fcc3eeb7229a635a3b8.tar.lz
pttbbs-2090666ec7d9c2369fc58fcc3eeb7229a635a3b8.tar.xz
pttbbs-2090666ec7d9c2369fc58fcc3eeb7229a635a3b8.tar.zst
pttbbs-2090666ec7d9c2369fc58fcc3eeb7229a635a3b8.zip
avltree tested
git-svn-id: http://opensvn.csie.org/pttbbs/branches/outtacache@1671 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--cacheserver/Makefile10
-rw-r--r--cacheserver/README1
-rw-r--r--cacheserver/cacheserver.c73
3 files changed, 84 insertions, 0 deletions
diff --git a/cacheserver/Makefile b/cacheserver/Makefile
new file mode 100644
index 00000000..65a64f14
--- /dev/null
+++ b/cacheserver/Makefile
@@ -0,0 +1,10 @@
+# $Id$
+.include "../pttbbs.mk"
+
+all: cacheserver
+
+cacheserver: cacheserver.c
+ ${CC} ${CFLAGS} ${LDFLAGS} -o cacheserver cacheserver.c avltree.c
+
+test: cacheserver
+ ./cacheserver -p /home/backup/ptt/PASSWDS.NEW
diff --git a/cacheserver/README b/cacheserver/README
new file mode 100644
index 00000000..3bfeddbc
--- /dev/null
+++ b/cacheserver/README
@@ -0,0 +1 @@
+這是一個測試的東西. 除非確定你知道這個程式在幹什麼, 否則請不理會這個目錄 :P
diff --git a/cacheserver/cacheserver.c b/cacheserver/cacheserver.c
new file mode 100644
index 00000000..f6d48b0f
--- /dev/null
+++ b/cacheserver/cacheserver.c
@@ -0,0 +1,73 @@
+/* $Id$ */
+#include "bbs.h"
+#include <avltree.h>
+
+void usage(void)
+{
+ fprintf(stderr, "usage: cacheserver -p PASSWD\n");
+}
+
+AVL_IX_DESC avl;
+
+typedef struct {
+ int uid;
+ unsigned int count;
+ char key[IDLEN + 1];
+} rectype_t;
+
+int loadpasswd(char *pfn)
+{
+ int fd, i;
+ userec_t u;
+ rectype_t rec;
+
+ if( pfn == NULL ){
+ fprintf(stderr, "no password file!\n");
+ return -1;
+ }
+ if( (fd = open(pfn, O_RDONLY)) < 0 ){
+ perror("open password");
+ return -1;
+ }
+
+ avl_create_index(&avl, AVL_NO_DUP_KEYS, IDLEN + 1);
+
+ for( i = 0 ; read(fd, &u, sizeof(u)) == sizeof(u) && i < 1024 ; ++i ){
+ rec.uid = i;
+ rec.count = 0;
+ strlcpy(rec.key, u.userid, sizeof(rec.key));
+ printf("add %s -> %d\n", rec.key, rec.uid);
+ avl_add_key((AVL_IX_REC*)&rec, &avl);
+ }
+
+#if 0
+ rec.uid = 0;
+ rec.count = 0;
+ strcpy(rec.key, "KTDOG");
+ avl_find_key((AVL_IX_REC*)&rec, &avl);
+ printf("%d\n", rec.uid);
+#endif
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ int ch;
+ char *pfn = NULL;
+ while( (ch = getopt(argc, argv, "p:h")) != -1 )
+ switch( ch ){
+ case 'p':
+ pfn = strdup(optarg);
+ break;
+
+ case 'h':
+ default:
+ usage();
+ return 1;
+ }
+
+ if( loadpasswd(pfn) < 0 )
+ return 1;
+
+ return 0;
+}