int show_file(char *board, struct fileheader *x, int n) { FILE *fp; char path[80], buf[512]; if(loginok) brc_add_read(x->filename); sprintf(path, "boards/%s/%s", board, x->filename); fp=fopen(path, "r"); if(fp==0) return; printf("<table width=600 style='BORDER: 1px solid; BORDER-COLOR: 65c8aa;' cellpadding=4 cellspacing=0 align=center><tr><td>\n"); printf("[<a href=bbscon?board=%s&file=%s&num=%d>本篇全文</a>] ", board, x->filename, n); printf("[<a href='bbspst?board=%s&file=%s&title=%s&userid=%s'>回复本文</a>] ", board, x->filename, x->title, x->owner); printf("[本篇作者: %s] ", userid_str(x->owner)); printf("<a href=bbsdoc?board=%s>本讨论区</a>",board); printf("</td></tr><tr><td style='font-size:14px'><pre>\n"); while(1) { /* if(fgets(buf, 500, fp)==0) break; if(!strncmp(buf, ": ", 2)) continue; if(!strncmp(buf, "【 在 ", 4)) continue; // if(!strncmp(buf, "--", 2)) break; hhprintf("%s", buf); */ if(fgets(buf, 500, fp)==0) break; if(!strcmp(board,"Pictures") || !strcmp(board,"SelfPhoto") ) { if(!strncmp(buf, ": ", 2)) continue; if(!strncmp(buf, "【 在 ", 4)) continue; if(!strncmp(buf, "--", 2)) break; hhprintf("%s", buf); continue; } if(!strncmp(buf, ": ", 2)) printf("<font color=808080>"); hhprintf("%s", buf); if(!strncmp(buf, ": ", 2)) printf("</font>"); } fclose(fp); printf("</table></pre>"); // printf("<table width=100%% bgcolor=#65c8aa border=0 cellpadding=0 cellspacing=0 height=1><tr><td></table>"); return 1; }
/* mode=0 text mode=1 html */ int morefile(char *file ,int mode) { int i; char path[256]; sprintf(path, "boards/%s/%s", bd->filename, file); FILE *fp=fopen(path, "r"); if(fp==0) return 0; if(mode==1){ while(1){ if(fgets(buf, 256, fp)==0) break; hhprintf("%s", noansi(buf)); printf("<br />"); } }else{ for(i=0;i<8;i++){ if(fgets(buf, 256, fp)==0) break; if(!strcmp(buf,"--\n")) break; if(i>3){ printf("%s",xmlsafestr(noansi(buf))); printf("<br />"); } } } out: fclose(fp); return 0; }
int main() { struct user_doccount *udcount,*udcounthead; FILE *fp,*fpfile; struct fileheader *data; char buf[512]; int type=0,docstart,docend,total,i,docmin; char dir[80], board[80], userid[80]; struct boardheader *brd; struct fileheader x; init_all(); /* added by roly 2002.05.10 去掉cache */ printf("<meta http-equiv=\"pragma\" content=\"no-cache\">"); printf("<title>信件下载</title><body>"); /* add end */ if(!loginok) { printf("<b>信件下载 · %s</b><br>\n",BBSNAME); printpretable_lite(); http_fatal("您尚未登录, 请先登录"); } printf("<b>信件下载 · %s</b><br>\n", BBSNAME); type=atoi(getparm("type")); if(type==0) return show_form(); docstart=atoi(getparm("start")); docend=atoi(getparm("end")); sprintf(dir, "mail/%c/%s/.DIR", toupper(currentuser.userid[0]), currentuser.userid); total=file_size(dir)/sizeof(struct fileheader); if(docstart<=0) docstart=1; if(docend<=0 || docend>total) docend=total; //printf("docstart:%d,docend:%d",docstart,docend); data=(struct fileheader *)calloc(total, sizeof(struct fileheader)); if(data==0) http_fatal("memory overflow"); fp=fopen(dir, "r"); if(fp==0) http_fatal("dir error"); total=fread(data, sizeof(struct fileheader), total, fp); printpretable_lite(); if(fp) { int i,filetime; char path[STRLEN]; printf("<ol>\n"); for (i=docstart-1 ;i<docend;i++) { filetime=atoi(data[i].filename+2); //added by iamfat 2002.08.10 //check_anonymous(data[i].owner); //added end. printf("<LI><A href=#%s>%s:(%12.12s) %s</A>\n",data[i].filename,data[i].owner,Ctime(filetime)+4,data[i].title); } printf("</ol>\n"); for (i=docstart-1;i<docend;i++) { printf("<a name=%s></a>",data[i].filename); //,data[i].title); printpretable(); printf("<table width=100%% border=0>\n"); printf("<pre class=ansi>"); sprintf(path, "mail/%c/%s/%s", toupper(currentuser.userid[0]), currentuser.userid, data[i].filename); //printf(path); fpfile=fopen(path, "r"); if(fpfile==0) { printf("本文不存在或者已被删除!"); printf("</pre></table>\n"); printposttable(); continue; } while(1) { if(fgets(buf, 512, fpfile)==0) break; hhprintf("%s", buf); } fclose(fpfile); printf("</pre></table>\n"); printposttable(); } } fclose(fp); printf("</body>\n"); http_quit(); }