From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5130 invoked from network); 25 Nov 1999 17:20:45 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 25 Nov 1999 17:20:45 -0000 Received: (qmail 17691 invoked by alias); 25 Nov 1999 17:20:26 -0000 Mailing-List: contact zsh-workers-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 8779 Received: (qmail 17684 invoked from network); 25 Nov 1999 17:20:26 -0000 Date: Thu, 25 Nov 1999 12:20:20 -0500 From: Clint Adams To: zsh-workers@sunsite.auc.dk Subject: PATCH: make zsh print errors like a well-behaved compiler Message-ID: <19991125122020.B11876@dman.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii User-Agent: Mutt/1.0i This will change the error given when running a script from something like /tmp/brokenscript: command not found: badcommand [5] /tmp/brokenscript:5: command not found: badcommand This makes it parsable for emacs's compile-goto-error and all sorts of other fun software that can now be led to believe that zsh is a compiler. It also makes 5 look more like a line number instead of a possible error code. --- Src/utils.c 1999/11/05 15:49:30 1.1.1.42 +++ Src/utils.c 1999/11/25 17:05:29 @@ -76,7 +76,7 @@ */ nicezputs((isset(SHINSTDIN) && !locallevel) ? "zsh" : scriptname ? scriptname : argzero, stderr); - fputs(": ", stderr); + fputc((unsigned char)':', stderr); zerrmsg(fmt, str, num); } @@ -89,11 +89,11 @@ trashzle(); if (unset(SHINSTDIN) || locallevel) { nicezputs(scriptname ? scriptname : argzero, stderr); - fputs(": ", stderr); + fputc((unsigned char)':', stderr); } if (cmd) { nicezputs(cmd, stderr); - fputs(": ", stderr); + fputc((unsigned char)':', stderr); } zerrmsg(fmt, str, num); } @@ -102,6 +102,11 @@ void zerrmsg(const char *fmt, const char *str, int num) { + if ((unset(SHINSTDIN) || locallevel) && lineno) + fprintf(stderr, "%ld: ", (long)lineno); + else + fputc((unsigned char)' ', stderr); + while (*fmt) if (*fmt == '%') { fmt++; @@ -149,10 +154,7 @@ putc(*fmt == Meta ? *++fmt ^ 32 : *fmt, stderr); fmt++; } - if ((unset(SHINSTDIN) || locallevel) && lineno) - fprintf(stderr, " [%ld]\n", (long)lineno); - else - putc('\n', stderr); + putc('\n', stderr); fflush(stderr); }