From: ian Date: Sun, 4 May 2008 19:39:39 +0000 (+0000) Subject: saner safety error messages X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?a=commitdiff_plain;h=b582b48f5b0ec69df38dc75b7ba1f81d6e61a5e1;p=trains.git saner safety error messages --- diff --git a/hostside/realtime.c b/hostside/realtime.c index 7d78a0b..8940ecb 100644 --- a/hostside/realtime.c +++ b/hostside/realtime.c @@ -42,31 +42,8 @@ static void *read_exception(oop_source *evts, int fd, /*---------- logging etc. ----------*/ -static char *transegn2suffixstring(Train *tra, Segment *seg) { - /* Either arg may be 0, in which case it's not included. - * Result string will be empty, or start with ": " - * Result string is from malloc. - * Never fails. - */ - const char *trapn, *segpn; - char *s; - int r; - - segpn= seg ? seg->i->pname : 0; - trapn= tra ? tra->pname : 0; - - r= asprintf(&s, "%s%s%s%s%s", - segpn||trapn ? ":" : "", - segpn ? " @" : "", - segpn ? segpn : "", - trapn ? " " : "", - trapn ? trapn : ""); - if (r<0) diee("vasprintf failed in transegn2suffixstring"); - return s; -} - void safety_vpanic(Train *tra, Segment *seg,const char *fmt,va_list al) { - char *msg, *where; + char *msg; PicInsn piob; enco_pic_off(&piob); @@ -75,8 +52,10 @@ void safety_vpanic(Train *tra, Segment *seg,const char *fmt,va_list al) { if (vasprintf(&msg,fmt,al) < 0) diee("vasprintf failed in safety_vpanic fmt=\"%s\"", fmt); - where= transegn2suffixstring(tra,seg); - die("fatal safety problem: %s%s", msg, where); + die("fatal signalling problem: %s at %s: %s", + tra ? tra->pname : "?", + seg ? seg->i->pname : "?", + msg); } void safety_panic(Train *tra, Segment *seg, const char *fmt, ...) { diff --git a/hostside/safety.c b/hostside/safety.c index 9afd7ac..dd817b9 100644 --- a/hostside/safety.c +++ b/hostside/safety.c @@ -345,10 +345,10 @@ static int nose_nextseg(TrackLocation *t, TrackAdvanceContext *c, interferer= segment_interferes(c,t->seg); if (interferer) { if (interferer->owner && interferer->owner != u->train) - return predict_problem(u, t->seg, "impeded by %s @%s", + return predict_problem(u, t->seg, "impeded by %s at %s", interferer->owner->pname, interferer->i->pname); if (interferer->pred_present) - return predict_problem(u, t->seg, "will collide with itself @%s!", + return predict_problem(u, t->seg, "will collide with itself at %s!", interferer->i->pname); }