/* 給版主錢的程式 */
#include "bbs.h"
#define _BBS_UTIL_C_
#include "record.c"
#include "cache.c"
#define FUNCTION (2100 - c*10)
extern int numboards;
extern boardheader *bcache;
extern struct UCACHE *uidshm;
#define fn_passwd "/home/bbs/.PASSWDS"
int c,n;
userec xuser;
int getuser(userid)
char *userid;
{
int uid;
if (uid = searchuser(userid))
{
get_record(fn_passwd, &xuser, sizeof(xuser), uid);
}
return uid;
}
int inumoney(char *tuser,int money)
{
int unum;
if (unum = getuser(tuser))
{
xuser.money += money;
substitute_record(fn_passwd, &xuser, sizeof(userec), unum);
return xuser.money;
}
return -1;
}
void main()
{
FILE *fp=fopen(BBSHOME "/etc/topboardman","r");
char buf[201],bname[20],BM[90],*ch;
boardheader *bptr;
int money,nBM;
resolve_boards();
if(!fp) return ;
c=0;
fgets(buf,200,fp); /* 第一行拿掉 */
printf(
" _[1;44m 獎勵優良版主 每週花薪 依精華區排名分配 _[m\n\n"
"_[33m (排名太後面或幾乎沒有精華區者不列入)_[m\n"
" ─────────────────────────────────────\n"
"\n\n");
while(fgets(buf,200,fp)!=NULL)
{
buf[24]=0;
sscanf(&buf[9],"%s",bname);
for (n = 0; n < numboards; n++)
{
bptr = &bcache[n];
if(!strcmp(bptr->brdname,bname)) break;
}
if(n== numboards) continue;
strcpy(BM,bptr->BM);
printf(" (%d) %-15.15s %s \n",c+1,bptr->brdname,bptr->title);
if(BM[0] == 0 || BM[0] == ' ') continue;
ch = BM;
for(nBM=1;(ch = strchr(ch,'/'))!=NULL;nBM++) {ch++;};
ch=BM;
if(FUNCTION <=0 ) break;
printf(" 獎金 _[32m%6d _[m 分給 _[33m%s_[m \n",
FUNCTION,bptr->BM);
for(n=0;n<nBM;n++)
{
fileheader mymail;
char *ch1;
if(ch1 = strchr(ch,'/'))
*ch1 = 0;
if(inumoney(ch, FUNCTION /nBM) != -1)
{
char genbuf[200];
sprintf(genbuf,BBSHOME"/home/%s", ch);
stampfile(genbuf, &mymail);
strcpy(mymail.owner, "[薪水袋]");
sprintf(mymail.title,
"_[32m %s _[m版的薪水 $_[33m%d_[m",bptr->brdname,FUNCTION /nBM);
mymail.savemode = 0;
unlink(genbuf);
link(BBSHOME "/etc/BM_money", genbuf);
sprintf(genbuf,BBSHOME"/home/%s/.DIR", ch);
append_record(genbuf, &mymail, sizeof(mymail));
}
ch=ch1+1;
}
c++;
}
}