void scream(EdRead *R, int n, const char *fmt, ...) { va_list ap; va_start(ap, fmt); vfprintf(Stderr, fmt, ap); va_end(ap); exit_ASL(R, n); }
read_line(EdRead *R) #endif { char *s, *se; int x; char *rv; FILE *nl = R->nl; s = R->rl_buf; se = s + sizeof(R->rl_buf) - 1; if (R->lineinc) R->Line++; else { s++; R->lineinc = 1; } rv = s; for(;;) { x = getc(nl); if (x < ' ') { if (x < 0) { eof: if (R->can_end) return 0; fprintf(Stderr, "Premature end of file, line %ld of %s\n", R->Line, R->asl->i.filename_); exit_ASL(R,1); } if (x == '\n') break; if (x == '\r') { eatcr(nl); break; } } *s++ = x; if (s >= se) { for(;;) { x = getc(nl); if (x == '\r') { eatcr(nl); goto eol; } if (x == '\n') goto eol; if (x < 0) goto eof; } } } eol: *s = 0; return rv; }
badline(EdRead *R) #endif { ASL *asl = R->asl; FILE *nl; char *s, *se; int x; fprintf(Stderr, "bad line %ld of %s", R->Line, filename); if (xscanf == ascanf) { if (!R->lineinc) { nl = R->nl; s = R->rl_buf; se = s + sizeof(R->rl_buf) - 1; while(s < se && (x = getc(nl)) >= ' ') *++s = x; *s = 0; } fprintf(Stderr, ": %s\n", R->rl_buf); } else fprintf(Stderr, "\n"); exit_ASL(R,1); }