ex_emsg(sp, cp->name, EXM_NOFILEYET);
ex_emsg(sp, cp != NULL ? cp->name : NULL, EXM_NOFILEYET);
ex_badaddr(sp, cp, ba, nret)	SCR *sp;	EXCMDLIST const *cp;	enum badaddr ba;	enum nresult nret;{	recno_t lno;	switch (nret) {	case NUM_OK:		break;	case NUM_ERR:		msgq(sp, M_SYSERR, NULL);		return;	case NUM_OVER:		msgq(sp, M_ERR, "099|Address value overflow");		return;	case NUM_UNDER:		msgq(sp, M_ERR, "100|Address value underflow");		return;	}	/*	 * When encountering an address error, tell the user if there's no	 * underlying file, that's the real problem.	 */	if (sp->ep == NULL) {		ex_emsg(sp, cp->name, EXM_NOFILEYET);		return;	}	switch (ba) {	case A_COMBO:		msgq(sp, M_ERR, "101|Illegal address combination");		break;	case A_EOF:		if (db_last(sp, &lno))			return;		if (lno != 0) {			msgq(sp, M_ERR,			    "102|Illegal address: only %lu lines in the file",			    lno);			break;		}		/* FALLTHROUGH */	case A_EMPTY:		msgq(sp, M_ERR, "103|Illegal address: the file is empty");		break;	case A_NOTSET:		abort();		/* NOTREACHED */	case A_ZERO:		msgq(sp, M_ERR,		    "104|The %s command doesn't permit an address of 0",		    cp->name);		break;	}	return;}