/* 依據 .BOARD檔 & newsfeeds.bbs 列出參與轉信的所有板資料 */ #include "bbs.h" #define INNDHOME BBSHOME"/innd" #define INND_NEWSFEED INNDHOME "/newsfeeds.bbs" #define INND_NODELIST INNDHOME "/nodelist.bbs" #define INND_BADFEED INNDHOME "/badfeeds.bbs" #define INND_SCRIPT INNDHOME "/bbsnnrpall.auto.sh" int istran[MAX_BOARD]; typedef struct newssvr_t { char name[30]; char address[256]; char type[10]; }newssvr_t; typedef struct newsfeed_t { char group[128]; char board[15]; char server[30]; }newsfeed_t; newssvr_t server[128]; newsfeed_t feedline[MAX_BOARD]; int servercount; int feedcount; int newsfeed_cmp(const void *a, const void *b) { int i; i=strcasecmp(((newsfeed_t*)a)->server,((newsfeed_t*)b)->server); if(i) return i; return strcasecmp(((newsfeed_t*)a)->board,((newsfeed_t*)b)->board); } int get_server(char *name) { int i; for(i=0;i> " INNDHOME"/log/inndBM.log &\r\n", server[serverid].address, serverstr); system(buf); sprintf(buf, INNDHOME"/bbsnnrp %s " INNDHOME "/active/%s.auto.active " " >> " INNDHOME"/log/inndBM.log &\r\n", server[serverid].address, serverstr); if(fpscript) fprintf(fpscript, buf); return 0; } int main(int argc, char **argv) { int i,serverid=0; FILE *fp=NULL,*fpscript=fopen(INND_SCRIPT,"w"); char buf[256],serverstr[30]=""; chdir(BBSHOME "/innd"); attach_SHM(); resolve_boards(); memset(istran,0,sizeof(int)*MAX_BOARD); load_server(); load_newsfeeds(); for(i=0;iBbusystate) {safe_sleep(1);} SHM->Bbusystate = 1; bcache[i].brdattr = bcache[i].brdattr & ~BRD_NOTRAN; strncpy(bcache[i].title + 5, "●", 2); SHM->Bbusystate = 0; substitute_record(BBSHOME"/.BRD", &bcache[i],sizeof(boardheader_t),i+1); } else if(!(bcache[i].brdattr & BRD_NOTRAN) && !istran[i]) { while(SHM->Bbusystate) {safe_sleep(1);} SHM->Bbusystate = 1; bcache[i].brdattr = bcache[i].brdattr | BRD_NOTRAN; strncpy(bcache[i].title + 5, "◎", 2); SHM->Bbusystate = 0; substitute_record(BBSHOME"/.BRD", &bcache[i],sizeof(boardheader_t),i+1); } } return 0; }