int printseclastmark(FILE * fp, const struct sectree *sec, int nline) { int count, i, j, n, m, l, pcount; bzero(boardlist, sizeof (boardlist)); count = makeboardlist(sec, boardlist, MAXBOARD); fakesort(boardlist, count); fprintf(fp, "btb('%s', '%s');", sec->basestr, scriptstr(sec->title)); for (i = 0, n = 0, pcount = 0; i < NBRDITEM && n < nline; i++) { for (j = 0; j < count && n < nline; j++) { m = boardlist[j].brdn; if (lastmarklist[m].count <= i) continue; //printlastmarkline(fp, &lastmarklist[m], i); n++; if (i == 0) pcount++; boardlist[j].used++; } } if (strlen(sec->basestr) >= 2) { for (i = 0; i < count; i++) { m = boardlist[i].brdn; if (lastmarklist[m].count && !boardlist[i].used) { boardlist[i].used++; pcount++; } } } for (i = 0; i < count; i++) { m = boardlist[i].brdn; for (j = 0; j < boardlist[i].used; j++) printlastmarkline(fp, &lastmarklist[m], j); } if (pcount < count) { if (sec->parent != §ree) l = 20; else l = 3; fprintf(fp, "ltb('%s',new Array(", sec->basestr); for (i = 0, j = 0; i < count && j < l; i++) { if (boardlist[i].used) continue; m = boardlist[i].brdn; fprintf(fp, "%s'%d','%s'", j ? "," : "", lastmarklist[m].bnum, scriptstr(lastmarklist[m].boardtitle)); j++; } fprintf(fp, "));"); n++; } if (!count) fprintf(fp, "document.write('<tr><td colspan=2> </td></tr>');"); fprintf(fp, "etb();\n"); return n; }
int bbsboardlistscript_main() { int total; struct boardmem *(data[MAXBOARD]); char *secstr; changemode(READING); if (cache_header (max(thisversion, file_time(MY_BBS_HOME "/wwwtmp")), 500)) return 0; secstr = getparm("secstr"); if (secstr[0]== '*') total = listmybrd(data); else total = makeboardlist(getsectree(secstr), data); printf("Content-type: application/x-javascript; charset=%s\r\n\r\n", CHARSET); printf("var boardlistscript="); boardlistscript(data, total); return 0; }