register GNode	*gn;
Make_HandleUse (cgn, pgn)    register GNode	*cgn;	/* The .USE node */    register GNode   	*pgn;	/* The target of the .USE node */{    register GNode	*gn;	/* A child of the .USE node */    register LstNode	ln; 	/* An element in the children list */    if (cgn->type & (OP_USE|OP_TRANSFORM)) {	if ((cgn->type & OP_USE) || Lst_IsEmpty(pgn->commands)) {	    /*	     * .USE or transformation and target has no commands -- append	     * the child's commands to the parent.	     */	    (void) Lst_Concat (pgn->commands, cgn->commands, LST_CONCNEW);	}	if (Lst_Open (cgn->children) == SUCCESS) {	    while ((ln = Lst_Next (cgn->children)) != NILLNODE) {		gn = (GNode *)Lst_Datum (ln);		if (Lst_Member (pgn->children, gn) == NILLNODE) {		    (void) Lst_AtEnd (pgn->children, gn);		    (void) Lst_AtEnd (gn->parents, pgn);		    pgn->unmade += 1;		}	    }	    Lst_Close (cgn->children);	}	pgn->type |= cgn->type & ~(OP_OPMASK|OP_USE|OP_TRANSFORM);	/*	 * This child node is now "made", so we decrement the count of	 * unmade children in the parent... We also remove the child	 * from the parent's list to accurately reflect the number of decent	 * children the parent has. This is used by Make_Run to decide	 * whether to queue the parent or examine its children...	 */	if (cgn->type & OP_USE) {	    pgn->unmade -= 1;	}    }    return (0);}