register char **cpp; char *file;
extern void runcmdspecial(cmd, filev, opts)	struct cmd *cmd;	char **filev;	opt_t opts;{	register struct subcmd *sc;	register struct namelist *f;	register char **cpp;	char *file;	int first = TRUE;	for (sc = cmd->c_cmds; sc != NULL; sc = sc->sc_next) {		if (sc->sc_type != CMDSPECIAL)			continue;		message(MT_CHANGE, "cmdspecial \"%s\"", sc->sc_name);		if (IS_ON(opts, DO_VERIFY))			continue;		/* Send all the file names */		for (f = updfilelist; f != NULL; f = f->n_next) {			if (first) {				(void) sendcmd(C_CMDSPECIAL, NULL);				if (response() < 0)					return;				first = FALSE;			}			(void) sendcmd(RC_FILE, f->n_name);			if (response() < 0)				return;		}		if (first) {			(void) sendcmd(C_CMDSPECIAL, NULL);			if (response() < 0)				return;			first = FALSE;		}		/* Send command to run and wait for it to complete */		(void) sendcmd(RC_COMMAND, sc->sc_name);		while (response() > 0)			;		first = TRUE;	/* Reset in case there are more CMDSPECIAL's */	}	freecmdspecialfiles();}