void Trace(const char *fmt,...) { static const char *trace_out; va_list ap; if (trace_fp != 0 && trace_who != trace_out) { fclose(trace_fp); trace_fp = 0; } trace_out = trace_who; if (!trace_fp) { char name[BUFSIZ]; #if 0 /* usually I do not want unique names */ int unique; for (unique = 0;; ++unique) { if (unique) sprintf(name, "Trace-%s.out-%d", trace_who, unique); else sprintf(name, "Trace-%s.out", trace_who); if ((trace_fp = fopen(name, "r")) == 0) { break; } fclose(trace_fp); } #else sprintf(name, "Trace-%s.out", trace_who); #endif trace_fp = fopen(name, "w"); if (trace_fp != 0) { fprintf(trace_fp, "%s\n", xtermVersion()); TraceIds(NULL, 0); } } if (!trace_fp) abort(); va_start(ap, fmt); vfprintf(trace_fp, fmt, ap); (void) fflush(trace_fp); va_end(ap); }
static void dumpSvgHeader(XtermWidget xw, FILE *fp) { TScreen *s = TScreenOf(xw); rows = s->bot_marg - s->top_marg + 1; cols = MaxCols(s); bw = BorderWidth(xw); ib = s->border; fputs("<?xml version='1.0' encoding='UTF-8'?>\n", fp); fputs("<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN'\n", fp); fputs(" 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>\n", fp); fputs("<svg xmlns='http://www.w3.org/2000/svg'\n", fp); fputs(" version='1.1' baseProfile='full'\n", fp); fprintf(fp, " viewBox='0 0 %d %d'>\n", 2 * (bw + ib) + cols * CELLW, 2 * (bw + ib) + rows * CELLH); fprintf(fp, " <desc>%s Screen Dump</desc>\n", xtermVersion()); fprintf(fp, " <g font-size='%.2f' font-family='monospace, monospace'>\n", 0.80 * CELLH); }