fprintf(stderr, "%s, ", report->filename); if (report->lineno) fprintf(stderr, "line %u: ", report->lineno);
prefix = PR_smprintf("%s:", report->filename); if (report->lineno) { tmp = prefix; prefix = PR_smprintf("%s%u: ", tmp ? tmp : "", report->lineno); JS_free(cx, tmp); } if (JSREPORT_IS_WARNING(report->flags)) { tmp = prefix; prefix = PR_smprintf("%swarning: ", tmp ? tmp : ""); JS_free(cx, tmp); }   while ((tmp = strchr(message, '\n'))) { tmp++; fputs(prefix, stderr); fwrite(message, 1, tmp - message, stderr); message = tmp; }  if (prefix) fputs(prefix, stderr);
my_ErrorReporter(JSContext *cx, const char *message, JSErrorReport *report){    int i, j, k, n;    fputs("js: ", stderr);    if (!report) {	fprintf(stderr, "%s\n", message);	return;    }    if (report->filename)	fprintf(stderr, "%s, ", report->filename);    if (report->lineno)	fprintf(stderr, "line %u: ", report->lineno);    fputs(message, stderr);    if (!report->linebuf) {	putc('\n', stderr);	return;    }    fprintf(stderr, ":\n%s\n", report->linebuf);    n = report->tokenptr - report->linebuf;    for (i = j = 0; i < n; i++) {	if (report->linebuf[i] == '\t') {	    for (k = (j + 8) & ~7; j < k; j++)		putc('.', stderr);	    continue;	}	putc('.', stderr);	j++;    }    fputs("^\n", stderr);}