精華區beta SetupBBS 關於我們 聯絡資訊
/* 給版主錢的程式 */ #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++; } }