Example #1
0
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 != &sectree)
			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>&nbsp;</td></tr>');");
	fprintf(fp, "etb();\n");
	return n;
}
Example #2
0
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;
}