示例#1
0
文件: join.c 项目: jamjr/Helios-NG
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 : ' ');
    }
}
示例#2
0
文件: join.c 项目: rovaughn/distro
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');
}
示例#3
0
文件: join.c 项目: jamjr/Helios-NG
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');
    }
}