From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: To: 9fans@9fans.net From: erik quanstrom Date: Tue, 21 Oct 2008 13:04:32 -0400 MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Subject: [9fans] rc error messages Topicbox-Message-UUID: 239cc944-ead4-11e9-9d60-3106f5b1d025 steve mentioned that rc is not very forthcoming with information on where runtime errors occur. here's a little patch that makes rc a little bit more forthcoming. but it's still pretty useless in the face of functions. - erik ; diff -c exec.c /n/dump/2008/1021/sys/src/cmd/rc/exec.c exec.c:887,916 - /n/dump/2008/1021/sys/src/cmd/rc/exec.c:887,898 } void - hisfault(char *buf, int n) - { - struct thread *t; - - for(t = runq; !t->cmdfile; t = t->ret){ - if(t->ret == 0) - break; - } - if(t->cmdfile && !t->iflag) - snprint(buf, n, "%s:%d ", t->cmdfile, t->lineno); - else - snprint(buf, n, ""); - } - - void Xerror(char *s) { - char buf[1024]; - - hisfault(buf, sizeof buf); if(strcmp(argv0, "rc")==0 || strcmp(argv0, "/bin/rc")==0) - pfmt(err, "rc: %s%s: %r\n", buf, s); + pfmt(err, "rc: %s: %r\n", s); else - pfmt(err, "rc (%s): %s%s: %r\n", argv0, buf, s); + pfmt(err, "rc (%s): %s: %r\n", argv0, s); flush(err); setstatus("error"); while(!runq->iflag) Xreturn(); exec.c:919,931 - /n/dump/2008/1021/sys/src/cmd/rc/exec.c:901,910 void Xerror1(char *s) { - char buf[1024]; - - hisfault(buf, sizeof buf); if(strcmp(argv0, "rc")==0 || strcmp(argv0, "/bin/rc")==0) - pfmt(err, "rc: %s%s\n", buf, s); + pfmt(err, "rc: %s\n", s); else - pfmt(err, "rc (%s): %s%s\n", argv0, buf, s); + pfmt(err, "rc (%s): %s\n", argv0, s); flush(err); setstatus("error"); while(!runq->iflag) Xreturn();