static int dt_pid_error(dtrace_hdl_t *dtp, dt_pcb_t *pcb, dt_proc_t *dpr, fasttrap_probe_spec_t *ftp, dt_errtag_t tag, const char *fmt, ...) { va_list ap; int len; if (ftp != NULL) dt_free(dtp, ftp); va_start(ap, fmt); if (pcb == NULL) { assert(dpr != NULL); len = vsnprintf(dpr->dpr_errmsg, sizeof (dpr->dpr_errmsg), fmt, ap); assert(len >= 2); if (dpr->dpr_errmsg[len - 2] == '\n') dpr->dpr_errmsg[len - 2] = '\0'; } else { dt_set_errmsg(dtp, dt_errtag(tag), pcb->pcb_region, pcb->pcb_filetag, pcb->pcb_fileptr ? yylineno : 0, fmt, ap); } va_end(ap); return (1); }
/*PRINTFLIKE3*/ static struct ps_prochandle * dt_proc_error(dtrace_hdl_t *dtp, dt_proc_t *dpr, const char *format, ...) { va_list ap; va_start(ap, format); dt_set_errmsg(dtp, NULL, NULL, NULL, 0, format, ap); va_end(ap); if (dpr->dpr_proc != NULL) Prelease(dpr->dpr_proc, 0); dt_free(dtp, dpr); (void) dt_set_errno(dtp, EDT_COMPILER); return (NULL); }