summaryrefslogtreecommitdiffstats
path: root/util/hotboard.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/hotboard.c')
-rw-r--r--util/hotboard.c74
1 files changed, 0 insertions, 74 deletions
diff --git a/util/hotboard.c b/util/hotboard.c
deleted file mode 100644
index 584324ee..00000000
--- a/util/hotboard.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* $Id$ */
-#include "bbs.h"
-extern SHM_t *SHM;
-
-void usage(void)
-{
- fprintf(stderr,
- "usage: hotbard [-t topn]\n");
-}
-
-struct bs {
- int nusers;
- boardheader_t *b;
-} *brd;
-
-#define isvisiableboard(bptr) \
- ((bptr)->brdname[0] && \
- !((bptr)->brdattr & BRD_GROUPBOARD) && \
- !(((bptr)->brdattr & (BRD_HIDE | BRD_TOP)) || \
- ((bptr)->level && !((bptr)->brdattr & BRD_POSTMASK) && \
- ((bptr)->level & \
- ~(PERM_BASIC|PERM_CHAT|PERM_PAGE|PERM_POST|PERM_LOGINOK)))))
-
-int main(int argc, char **argv)
-{
- int ch, topn = 20, i, nbrds, j, k, nusers;
-
- chdir(BBSHOME);
- while( (ch = getopt(argc, argv, "t:h")) != -1 )
- switch( ch ){
- case 't':
- topn = atoi(optarg);
- if( topn <= 0 ){
- usage();
- return 1;
- }
- break;
- case 'h':
- default:
- usage();
- return 1;
- }
-
- attach_SHM();
- brd = (struct bs *)malloc(sizeof(struct bs) * topn);
- brd[0].b = &SHM->bcache[0];
- brd[0].nusers = brd[0].b->brdname[0] ? brd[0].b->nuser : 0;
- nbrds = 1;
-
- for( i = 1 ; i < MAX_BOARD ; ++i )
- if( (isvisiableboard(&SHM->bcache[i])) &&
- (nbrds != topn ||
- SHM->bcache[i].nuser > brd[nbrds - 1].nusers) ){
-
- nusers = SHM->bcache[i].nuser; // no race ?
- for( k = nbrds - 2 ; k >= 0 ; --k )
- if( brd[k].nusers > nusers )
- break;
-
- if( (k + 1) < nbrds && (k + 2) < topn )
- for( j = nbrds - 1 ; j >= k + 1 ; --j )
- brd[j] = brd[j - 1];
- brd[k + 1].nusers = nusers;
- brd[k + 1].b = &SHM->bcache[i];
-
- if( nbrds < topn )
- ++nbrds;
- }
-
- for( i = 0 ; i < nbrds ; ++i )
- printf("%05d|%-12s|%s\n",
- brd[i].nusers, brd[i].b->brdname, brd[i].b->title);
- return 0;
-}