chiark / gitweb /
saner safety error messages
authorian <ian>
Sun, 4 May 2008 19:39:39 +0000 (19:39 +0000)
committerian <ian>
Sun, 4 May 2008 19:39:39 +0000 (19:39 +0000)
hostside/realtime.c
hostside/safety.c

index 7d78a0b9f54773db4fa38ec3e30146fc0b06675b..8940ecb72d9a8a79d8474a300cef077263895f43 100644 (file)
@@ -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, ...) {
index 9afd7ac6d632a644d726c8a86d0557e2a04fe325..dd817b9f55ed13b172e4dd785af4f6905020cb11 100644 (file)
@@ -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);
   }