/* * Write included lines in a form suitable for re-inclusion. * The number of characters written is returned. */ int inclWrite(FILE *file, SrcLineList sll) { int cc = 0; FileName slfile, curfile = 0; /* Guarantee first line is #line ... */ Length slline, curline = 0; for ( ; sll; sll = cdr(sll)) { SrcLine sl = car(sll); if (sl->isSysCmd && sl->sysCmdHandled) continue; slfile = sposFile(sl->spos); slline = sposLine(sl->spos); if (curline != slline - 1 || (curfile && !fnameEqual(curfile,slfile))) { if ((curfile && fnameEqual(curfile, slfile))) cc += fprintf(file, "%cline %d\n", DIRECTIVE_CHAR, (int) slline); else { cc += fprintf(file, "%cline %d \"%s\"\n", DIRECTIVE_CHAR, (int) slline, fnameUnparseStatic(slfile)); curfile = slfile; } } curline = slline; cc += fprintf(file, "%*s%s", sl->indentation, "", sl->text); } return cc; }
Bool arEqual(Archive ar1, Archive ar2) { return fnameEqual(ar1->name, ar2->name); }