make1c( t );
pState->curstate = T_STATE_MAKE1C;
make1d( 	void	*closure,	int	status ){	TARGET	*t = (TARGET *)closure;	CMD	*cmd = (CMD *)t->cmds;	/* Execcmd() has completed.  All we need to do is fiddle with the */	/* status and signal our completion so make1c() can run the next */	/* command.  On interrupts, we bail heavily. */        if ( t->flags & T_FLAG_FAIL_EXPECTED )        {          /* invert execution result when FAIL_EXPECTED was applied */          switch (status)          {            case EXEC_CMD_FAIL: status = EXEC_CMD_OK; break;            case EXEC_CMD_OK:   status = EXEC_CMD_FAIL; break;            default:              ;          }        }        	if( status == EXEC_CMD_FAIL && ( cmd->rule->actions->flags & RULE_IGNORE ) )	    status = EXEC_CMD_OK;	/* On interrupt, set intr so _everything_ fails */	if( status == EXEC_CMD_INTR )	    ++intr;	if( status == EXEC_CMD_FAIL && DEBUG_MAKE )	{	    /* Print command text on failure */	    if( !DEBUG_EXEC )		printf( "%s\n", cmd->buf );	    printf( "...failed %s ", cmd->rule->name );	    list_print( lol_get( &cmd->args, 0 ) );	    printf( "...\n" );	}	if (status == EXEC_CMD_FAIL)		if( globs.quitquick ) ++intr;	/* If the command was interrupted or failed and the target */	/* is not "precious", remove the targets */	if( status != EXEC_CMD_OK && !( cmd->rule->actions->flags & RULE_TOGETHER ) )	{	    LIST *targets = lol_get( &cmd->args, 0 );	    for( ; targets; targets = list_next( targets ) )		if( !unlink( targets->string ) )		    printf( "...removing %s\n", targets->string );	}	/* Free this command and call make1c() to move onto next command. */	t->status = status;	t->cmds = (char *)cmd_next( cmd );	cmd_free( cmd );	make1c( t );}