shutUp = DEBUG(LOUD) ? FALSE : TRUE;
shutUp = DEBUG(LOUD) ? false : true;
JobPrintCommand(cmdp, jobp)    void	*cmdp;		    /* command string to print */    void	*jobp;		    /* job for which to print it */{    Boolean	  noSpecials;	    /* true if we shouldn't worry about				     * inserting special commands into				     * the input stream. */    Boolean	  shutUp = FALSE;   /* true if we put a no echo command				     * into the command file */    Boolean	  errOff = FALSE;   /* true if we turned error checking				     * off before printing the command				     * and need to turn it back on */    char	  *cmdTemplate;     /* Template to use when printing the				     * command */    char	  *cmdStart;	    /* Start of expanded command */    LstNode	  cmdNode;	    /* Node for replacing the command */    char	  *cmd = (char *)cmdp;    Job 	  *job = (Job *)jobp;    noSpecials = (noExecute && !(job->node->type & OP_MAKE));    if (strcmp(cmd, "...") == 0) {	job->node->type |= OP_SAVE_CMDS;	if ((job->flags & JOB_IGNDOTS) == 0) {	    job->tailCmds = Lst_Succ(Lst_Member(&job->node->commands, cmd));	    return 0;	}	return 1;    }#define DBPRINTF(fmt, arg) if (DEBUG(JOB)) {	\	(void)fprintf(stdout, fmt, arg);	\	(void)fflush(stdout);			\    }						\   (void)fprintf(job->cmdFILE, fmt, arg);	\   (void)fflush(job->cmdFILE);    numCommands += 1;    /* For debugging, we replace each command with the result of expanding     * the variables in the command.  */    cmdNode = Lst_Member(&job->node->commands, cmd);    cmdStart = cmd = Var_Subst(cmd, &job->node->context, FALSE);    Lst_Replace(cmdNode, cmdStart);    cmdTemplate = "%s\n";    /*     * Check for leading @' and -'s to control echoing and error checking.     */    for (;; cmd++) {	if (*cmd == '@')	    shutUp = DEBUG(LOUD) ? FALSE : TRUE;	else if (*cmd == '-')	    errOff = TRUE;	else if (*cmd != '+')	    break;    }    while (isspace(*cmd))	cmd++;    if (shutUp) {	if (!(job->flags & JOB_SILENT) && !noSpecials &&	    commandShell->hasEchoCtl) {		DBPRINTF("%s\n", commandShell->echoOff);	} else {	    shutUp = FALSE;	}    }    if (errOff) {	if ( !(job->flags & JOB_IGNERR) && !noSpecials) {	    if (commandShell->hasErrCtl) {		/*		 * we don't want the error-control commands showing		 * up either, so we turn off echoing while executing		 * them. We could put another field in the shell		 * structure to tell JobDoOutput to look for this		 * string too, but why make it any more complex than		 * it already is?		 */		if (!(job->flags & JOB_SILENT) && !shutUp &&		    commandShell->hasEchoCtl) {			DBPRINTF("%s\n", commandShell->echoOff);			DBPRINTF("%s\n", commandShell->ignErr);			DBPRINTF("%s\n", commandShell->echoOn);		} else {		    DBPRINTF("%s\n", commandShell->ignErr);		}	    } else if (commandShell->ignErr &&		      (*commandShell->ignErr != '\0'))	    {		/*		 * The shell has no error control, so we need to be		 * weird to get it to ignore any errors from the command.		 * If echoing is turned on, we turn it off and use the		 * errCheck template to echo the command. Leave echoing		 * off so the user doesn't see the weirdness we go through		 * to ignore errors. Set cmdTemplate to use the weirdness		 * instead of the simple "%s\n" template.		 */		if (!(job->flags & JOB_SILENT) && !shutUp &&		    commandShell->hasEchoCtl) {			DBPRINTF("%s\n", commandShell->echoOff);			DBPRINTF(commandShell->errCheck, cmd);			shutUp = TRUE;		}		cmdTemplate = commandShell->ignErr;		/*		 * The error ignoration (hee hee) is already taken care		 * of by the ignErr template, so pretend error checking		 * is still on.		 */		errOff = FALSE;	    } else {		errOff = FALSE;	    }	} else {	    errOff = FALSE;	}    }    DBPRINTF(cmdTemplate, cmd);    if (errOff) {	/*	 * If echoing is already off, there's no point in issuing the	 * echoOff command. Otherwise we issue it and pretend it was on	 * for the whole command...	 */	if (!shutUp && !(job->flags & JOB_SILENT) && commandShell->hasEchoCtl){	    DBPRINTF("%s\n", commandShell->echoOff);	    shutUp = TRUE;	}	DBPRINTF("%s\n", commandShell->errCheck);    }    if (shutUp) {	DBPRINTF("%s\n", commandShell->echoOn);    }    return 1;}