ClientData   gnp; ClientData	 passp;
void *gnp; void *passp;
TargPrintNode(gnp, passp)    ClientData   gnp;    ClientData	 passp;{    GNode         *gn = (GNode *)gnp;    int	    	  pass = *(int *)passp;    if (!OP_NOP(gn->type)) {	printf("#\n");	if (gn == mainTarg)	    printf("# *** MAIN TARGET ***\n");	if (pass == 2) {	    if (gn->unmade)		printf("# %d unmade children\n", gn->unmade);	    else		printf("# No unmade children\n");	    if (! (gn->type & (OP_JOIN|OP_USE|OP_EXEC))) {		if (gn->mtime != OUT_OF_DATE)		    printf("# last modified %s: %s\n",			      Targ_FmtTime(gn->mtime),			      (gn->made == UNMADE ? "unmade" :			       (gn->made == MADE ? "made" :				(gn->made == UPTODATE ? "up-to-date" :				 "error when made"))));		else if (gn->made != UNMADE)		    printf("# non-existent (maybe): %s\n",			      (gn->made == MADE ? "made" :			       (gn->made == UPTODATE ? "up-to-date" :				(gn->made == ERROR ? "error when made" :				 "aborted"))));		else		    printf("# unmade\n");	    }	    if (!Lst_IsEmpty (gn->iParents)) {		printf("# implicit parents: ");		Lst_Every(gn->iParents, TargPrintName);		fputc('\n', stdout);	    }	}	if (!Lst_IsEmpty (gn->parents)) {	    printf("# parents: ");	    Lst_Every(gn->parents, TargPrintName);	    fputc ('\n', stdout);	}	printf("%-16s", gn->name);	switch (gn->type & OP_OPMASK) {	    case OP_DEPENDS:		printf(": "); break;	    case OP_FORCE:		printf("! "); break;	    case OP_DOUBLEDEP:		printf(":: "); break;	}	Targ_PrintType(gn->type);	Lst_Every(gn->children, TargPrintName);	fputc('\n', stdout);	Lst_Every(gn->commands, Targ_PrintCmd);	printf("\n\n");	if (gn->type & OP_DOUBLEDEP)	    Lst_ForEach(gn->cohorts, TargPrintNode, &pass);    }}