summaryrefslogtreecommitdiffstats
path: root/util/buildAnnounce.c
diff options
context:
space:
mode:
authorin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2002-03-07 23:13:44 +0800
committerin2 <in2@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2002-03-07 23:13:44 +0800
commitae31e19f92e717919ac8e3db9039eb38d2b89aae (patch)
treec70164d6a1852344f44b04a653ae2815043512af /util/buildAnnounce.c
downloadpttbbs-ae31e19f92e717919ac8e3db9039eb38d2b89aae.tar
pttbbs-ae31e19f92e717919ac8e3db9039eb38d2b89aae.tar.gz
pttbbs-ae31e19f92e717919ac8e3db9039eb38d2b89aae.tar.bz2
pttbbs-ae31e19f92e717919ac8e3db9039eb38d2b89aae.tar.lz
pttbbs-ae31e19f92e717919ac8e3db9039eb38d2b89aae.tar.xz
pttbbs-ae31e19f92e717919ac8e3db9039eb38d2b89aae.tar.zst
pttbbs-ae31e19f92e717919ac8e3db9039eb38d2b89aae.zip
Initial revision
git-svn-id: http://opensvn.csie.org/pttbbs/pttbbs/trunk/pttbbs@1 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'util/buildAnnounce.c')
-rw-r--r--util/buildAnnounce.c69
1 files changed, 69 insertions, 0 deletions
diff --git a/util/buildAnnounce.c b/util/buildAnnounce.c
new file mode 100644
index 00000000..0e754f22
--- /dev/null
+++ b/util/buildAnnounce.c
@@ -0,0 +1,69 @@
+/* 建立所有看板精華區的連結 */
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+#include "config.h"
+#include "pttstruct.h"
+#define GROUPROOT BBSHOME"/man/group"
+
+extern bcache_t *brdshm;
+extern boardheader_t *bcache;
+extern void resolve_boards();
+
+void buildchilds(int level,char *path,boardheader_t *bptr)
+{
+ char newpath[512];
+ boardheader_t *ptr;
+ fileheader_t item;
+
+ if(bptr->firstchild[1]==(boardheader_t*)~0 || bptr->firstchild[1]==NULL)
+ return;
+ for(ptr =(void*) bptr->firstchild[1];
+ ptr!=(boardheader_t*)~0 ;ptr=ptr->next[1])
+ {
+
+ if(
+ (ptr->brdattr&(BRD_BAD | BRD_GROUPBOARD | BRD_NOCOUNT | BRD_HIDE))!=0
+ ||
+ (ptr->level && !(ptr->brdattr & BRD_POSTMASK))) continue;
+ printf("%*.*s+-%-14s %-s \n",level*2,level*2,"| | | | | | | | |",
+ ptr->brdname, ptr->title);
+ if(ptr->brdattr & BRD_GROUPBOARD)
+ {
+ sprintf(newpath,"%s/%s",path,ptr->brdname);
+ mkdir(newpath,0766);
+ buildchilds(level+1,newpath,ptr);
+ }
+ else
+ {
+ printf("%s4\n",ptr->brdname);
+ sprintf(newpath,"/bin/ln -s "BBSHOME"/man/boards/%s %s/%s",
+ ptr->brdname,path,ptr->brdname);
+ system(newpath);
+ }
+ printf("%s5\n",ptr->brdname);
+ sprintf(newpath,"%s/.DIR",path);
+ strcpy(item.owner,ptr->BM);
+ strtok(item.owner,"/");
+ strcpy(item.title,ptr->title+7);
+ item.savemode = 'D';
+ sprintf(item.filename,ptr->brdname);
+ append_record(newpath, &item, sizeof(item));
+ }
+}
+
+
+int main()
+{
+ char path[512];
+ setsid();
+ strcpy(path,GROUPROOT);
+ system("rm -rf "GROUPROOT);
+ mkdir(GROUPROOT,0766);
+ resolve_boards();
+ buildchilds(0,path,&bcache[0]);
+ return 0;
+}