static void prline ( struct line *line ) { int i; for (i = 0; i < line->nfields; ++i) { prfield (i, line); if (i == line->nfields - 1) putchar ('\n'); else putchar (tab ? tab : ' '); } }
static void prjoin(struct line *la, struct line *lb, size_t jfa, size_t jfb) { struct spec *sp; struct field *joinfield; size_t i; if (jfa >= la->nf || jfb >= lb->nf) return; joinfield = &la->fields[jfa]; if (oflag) { for (i = 0; i < output.ns; i++) { sp = output.specs[i]; if (sp->fileno == 1) { if (sp->fldno < la->nf) prfield(&la->fields[sp->fldno]); else if (replace) fputs(replace, stdout); } else if (sp->fileno == 2) { if (sp->fldno < lb->nf) prfield(&lb->fields[sp->fldno]); else if (replace) fputs(replace, stdout); } else if (sp->fileno == 0) { prfield(joinfield); } if (i < output.ns - 1) prsep(); } } else { prfield(joinfield); prsep(); for (i = 0; i < la->nf; i++) { if (i != jfa) { prfield(&la->fields[i]); prsep(); } } for (i = 0; i < lb->nf; i++) { if (i != jfb) { prfield(&lb->fields[i]); if (i < lb->nf - 1) prsep(); } } } putchar('\n'); }
static void prjoin ( struct line *line1, struct line *line2 ) { if (outlist) { struct outlist *o; prfield (outlist->field - 1, outlist->file == 1 ? line1 : line2); for (o = outlist->next; o; o = o->next) { putchar (tab ? tab : ' '); prfield (o->field - 1, o->file == 1 ? line1 : line2); } putchar ('\n'); } else { int i; prfield (join_field_1, line1); for (i = 0; i < join_field_1 && i < line1->nfields; ++i) { putchar (tab ? tab : ' '); prfield (i, line1); } for (i = join_field_1 + 1; i < line1->nfields; ++i) { putchar (tab ? tab : ' '); prfield (i, line1); } for (i = 0; i < join_field_2 && i < line2->nfields; ++i) { putchar (tab ? tab : ' '); prfield (i, line2); } for (i = join_field_2 + 1; i < line2->nfields; ++i) { putchar (tab ? tab : ' '); prfield (i, line2); } putchar ('\n'); } }